fern-api 5.164.1 → 5.165.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.cjs +6 -6
- package/package.json +1 -1
package/cli.cjs
CHANGED
|
@@ -3456,7 +3456,7 @@ ${$rl.default.cursorShow}`)}releaseCursor(){this.extraLinesUnderPrompt>0&&vJo(th
|
|
|
3456
3456
|
`).length),this}updateBottomBar(t){return bHt(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+`
|
|
3457
3457
|
`}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&&Inn(this.rl,t.length+this.rl.line.length),this.rl.output.write(t)}};var am=Ae(_4(),1),yil=Ae(Y7t(),1);var ein=Ae(_4(),1),gil=Ae(Y7t(),1),tin=function(e,t,r){return typeof e[t]!="function"?(0,ein.of)(e):(0,ein.from)((0,gil.default)(e[t])(r).then(n=>(e[t]=n,e)))};var Ail={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)=>(Ail.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)(()=>tin(t,"message",this.answers)),(0,am.concatMap)(()=>tin(t,"default",this.answers)),(0,am.concatMap)(()=>tin(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&&Ail.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,yil.default)(t.when)(r).then(n=>{if(n)return t})).pipe((0,am.filter)(n=>n!=null)))}};function bil(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",IHt),this.registerPrompt("input",c5e),this.registerPrompt("number",vHt),this.registerPrompt("confirm",CHt),this.registerPrompt("rawlist",xHt),this.registerPrompt("expand",wHt),this.registerPrompt("checkbox",SHt),this.registerPrompt("password",THt),this.registerPrompt("editor",NHt)},t.restoreDefaultPrompts(),t}var GYo=bil();function Vsh(e,t){GYo.registerPrompt(e,t)}function Gsh(){GYo.restoreDefaultPrompts()}var qsh={prompt:GYo,ui:{BottomBar:jHt,Prompt:Aft},createPromptModule:bil,registerPrompt:Vsh,restoreDefaultPrompts:Gsh,Separator:SM},Pu=qsh;var Wsh=["prod","pre-prod","beta","dev","local"];function Hsh(e){return Wsh.some(t=>t===e)}function FJ(e="prod"){let t=e?.trim();return t!=null&&Hsh(t)?t:"local"}function rin(){let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal";return e==null||e.trim().length===0?!1:process.env.FERN_DISABLE_TELEMETRY!=="true"}var yft=require("path");function Iil(){let e=Ksh();return async t=>{for(let r of t)r.module=e(r.filename);return t}}function Ksh(e=process.argv[1]?(0,yft.dirname)(process.argv[1]):process.cwd(),t=yft.sep==="\\"){let r=t?Eil(e):e;return n=>{if(!n)return;let i=t?Eil(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 Eil(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var nO={};te(nO,{DEFAULT_EXCEPTION_STEPS_CONFIG:()=>Ein,DOMExceptionCoercer:()=>aXo,EXCEPTION_STEP_INTERNAL_FIELDS:()=>WHt,ErrorCoercer:()=>UHt,ErrorEventCoercer:()=>cXo,ErrorPropertiesBuilder:()=>_Ht,EventCoercer:()=>uXo,ExceptionStepsBuffer:()=>dXo,ObjectCoercer:()=>GHt,PrimitiveCoercer:()=>qHt,PromiseRejectionEventCoercer:()=>lXo,ReduceableCache:()=>pXo,StringCoercer:()=>VHt,chromeStackLineParser:()=>nXo,createDefaultStackParser:()=>sXo,createStackParser:()=>uol,geckoStackLineParser:()=>iXo,getInjectedReleaseId:()=>cch,getUtf8ByteLength:()=>pol,nodeStackLineParser:()=>nol,opera10StackLineParser:()=>eol,opera11StackLineParser:()=>tol,resolveExceptionStepsConfig:()=>fXo,reverseAndStripFrames:()=>col,stripReservedExceptionStepFields:()=>och,winjsStackLineParser:()=>$il});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 Jsh=Array.isArray,Cil=Object.prototype,QGv=Cil.hasOwnProperty,nin=Cil.toString,V4=Jsh||function(e){return nin.call(e)==="[object Array]"};var zHt=e=>e===Object(e)&&!V4(e);var Vhe=e=>e===void 0,rk=e=>nin.call(e)=="[object String]",qYo=e=>rk(e)&&e.trim().length===0,WYo=e=>e===null,NJ=e=>Vhe(e)||WYo(e),bft=e=>nin.call(e)=="[object Number]"&&e===e;var xil=e=>nin.call(e)==="[object Boolean]";function iin(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 Til(e,Error)}}function wil(e){return m5e(e,"ErrorEvent")}function Eft(e){return"u">typeof Event&&Til(e,Event)}function Sil(e){return m5e(e,"Object")}function Til(e,t){try{return e instanceof t}catch{return!1}}var Ysh=["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"],oin=new Map,Xsh=256;function Zsh(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 Oil=function(e,t=[]){if(!e)return!1;let r=Zsh(e,t),n=oin.get(r);if(n!==void 0)return n;let i=e.toLowerCase(),o=Ysh.concat(t).some(s=>i.indexOf(s.toLowerCase())!==-1);return oin.size>=Xsh&&oin.clear(),oin.set(r,o),o};function QHt(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),QHt(i??r,t,r,n))}var $sh=864e5,eah=1,tah=10;function Pil(e={}){return{refillRate:e.exceptionRateLimiterRefillRate??e.__exceptionRateLimiterRefillRate??eah,bucketSize:e.exceptionRateLimiterBucketSize??e.__exceptionRateLimiterBucketSize??tah}}var sin=class{constructor(t){this._buckets={},this._onBucketRateLimited=t._onBucketRateLimited,this._bucketSize=QHt(t.bucketSize,0,100,t._logger),this._refillRate=QHt(t.refillRate,0,this._bucketSize,t._logger),this._refillInterval=QHt(t.refillInterval,0,$sh,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 ain="0123456789abcdef",cin=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+=ain.charAt(this.bytes[r]>>>4),t+=ain.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+=ain.charAt(this.bytes[r]>>>4),t+=ain.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}},HYo=class{constructor(t){this.timestamp=0,this.counter=0,this.random=t??rah()}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 cin.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,cin.ofInner(t)}},rah=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())>>>0}),Bil,jN=()=>nah().toString(),nah=()=>(Bil||(Bil=new HYo)).generate();var uin=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 iah(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var Ril=(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=>Ril(`${e} ${o}`,t,r)}},oah=e=>e();function Dil(e,t=oah){return Ril(e,t,iah())}var vft="Mobile",pin="iOS",Ift="Android",zil="Tablet",$Gv=Ift+" "+zil;var aah="Apple",eqv=aah+" Watch",Qil="Safari",fin="BlackBerry",Mil="Samsung",cah=Mil+"Browser",uah=Mil+" Internet",din="Chrome",lah=din+" OS",pah=din+" "+pin,Lil="Internet Explorer",fah=Lil+" "+vft,YYo="Opera",tqv=YYo+" Mini",_il="Edge",dah="Microsoft "+_il,XYo="Firefox",mah=XYo+" "+pin,ZYo="Nintendo",$Yo="PlayStation",lin="Xbox",hah=Ift+" "+vft,gah=vft+" "+Qil,MHt="Windows",Aah=MHt+" Phone";var Uil="Generic",rqv=Uil+" "+vft.toLowerCase(),nqv=Uil+" "+zil.toLowerCase(),yah="Konqueror",bah="Oculus Browser",kil="Vivaldi",Eah="Yandex",Fil="Whale",Iah="DuckDuckGo",vah="Pale Moon",Nil="Waterfox",jil="Brave",Vil="Claude",Gil="Codex",qil="ChatGPT",Cah="Google Search App",E0="(\\d+(\\.\\d+)?)",KYo=new RegExp("Version/"+E0),JYo=new RegExp("("+Vil+"|"+Gil+"|"+qil+")\\/"+E0);var iqv=new RegExp(lin,"i"),oqv=new RegExp($Yo+" \\w+","i"),sqv=new RegExp(ZYo+" \\w+","i"),xah=new RegExp(fin+"|PlayBook|BB10","i"),wah={"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 aqv={[fah]:[new RegExp("rv:"+E0)],[dah]:[new RegExp(_il+"?\\/"+E0)],[din]:[new RegExp("("+din+"|CrMo)\\/"+E0)],[pah]:[new RegExp("CriOS\\/"+E0)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+E0)],[Qil]:[KYo],[gah]:[KYo],[YYo]:[new RegExp("("+YYo+"|OPR)\\/"+E0)],[XYo]:[new RegExp(XYo+"\\/"+E0)],[mah]:[new RegExp("FxiOS\\/"+E0)],[yah]:[new RegExp("Konqueror[:/]?"+E0,"i")],[fin]:[new RegExp(fin+" "+E0),KYo],[hah]:[new RegExp("android\\s"+E0,"i")],[uah]:[new RegExp(cah+"\\/"+E0)],[bah]:[new RegExp("OculusBrowser\\/"+E0)],[kil]:[new RegExp(kil+"\\/"+E0)],[Eah]:[new RegExp("YaBrowser\\/"+E0)],[Fil]:[new RegExp(Fil+"\\/"+E0)],[jil]:[new RegExp(jil+"\\/"+E0)],[Vil]:[JYo],[Gil]:[JYo],[qil]:[JYo],[Iah]:[new RegExp("(DuckDuckGo|Ddg)\\/"+E0)],[vah]:[new RegExp("PaleMoon\\/"+E0)],[Nil]:[new RegExp(Nil+"\\/"+E0)],[Cah]:[new RegExp("GSA\\/"+E0)],[Lil]:[new RegExp("(rv:|MSIE )"+E0)],Mozilla:[new RegExp("rv:"+E0)]};var cqv=[[new RegExp(lin+"; "+lin+" (.*?)[);]","i"),e=>[lin,e&&e[1]||""]],[new RegExp(ZYo,"i"),[ZYo,""]],[new RegExp($Yo,"i"),[$Yo,""]],[xah,[fin,""]],[new RegExp(MHt,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[Aah,""];if(new RegExp(vft).test(t)&&!/IEMobile\b/.test(t))return[MHt+" "+vft,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let n=r[1],i=wah[n]||"";return/arm/i.test(t)&&(i="RT"),[MHt,i]}return[MHt,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,e=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[pin,t.join(".")]}return[pin,""]}],[/(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/,[lah,""]],[/Linux|debian/i,["Linux",""]]];var min="[Circular]",hin="[Truncated]",L8="[Unserializable]",Wil="[Function]",pqv=Date.prototype.getTime,fqv=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=L8}Object.defineProperty(e,n,{value:i,enumerable:!0,writable:!0,configurable:!0})}return e}function eXo(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 Hil="utf8",Sah=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Tah(e){return typeof e=="string"&&Sah.test(e)}function g5e(e,t){return Tah(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 Kil(e){return e?.replace(/\/+$/,"")}async function Jil(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 tXo(){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 Yil=e=>e&&typeof e.then=="function";function LHt(e){return Promise.all(e.map(t=>(t??Promise.resolve()).then(r=>({status:"fulfilled",value:r}),r=>({status:"rejected",reason:r}))))}var gin,Xil,Ain;function Zil(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);return Ain&&r.length===Xil||(Xil=r.length,Ain=r.reduce((n,i)=>{gin||(gin={});let o=gin[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,gin[i]=[u,l];break}}}return n},{})),Ain}var rXo=50,Oah=1e3,Pah=100,Bah=4,_Ht=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:Zil(this.stackParser),skipFirstLines:t.skipFirstLines??1}}getAggregateErrors(t){try{if(l1e(t)){let r=Object.getPrototypeOf(t);for(let n=0;r&&n<Pah;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>Bah||g>0&&c.indexOf(f)!==-1)return this.coerceFallback(A);let I=typeof f=="object"&&f!==null||typeof f=="function";if(g===0&&i>=rXo||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>=rXo)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<rXo&&o<Oah&&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="?",Rah="<anonymous>",Dah=/^([a-z][a-z0-9.+-]+):/i,kah=["http","https","file","blob","app","capacitor","ionic","webpack","webpack-internal","ng"];function Fah(e){if(!e||e===Rah)return!1;let t=Dah.exec(e);return!t||kah.includes(t[1].toLowerCase())}function hne(e,t,r,n,i){let o={platform:e,filename:t,function:r==="<anonymous>"?tR:r,in_app:Fah(t)};return Vhe(n)||(o.lineno=n),Vhe(i)||(o.colno=i),o}var yin=(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 Nah=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,jah=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,zah=/\((\S*)(?::(\d+))(?::(\d+))\)/,nXo=(e,t)=>{let r=Nah.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=zah.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}let[o,s]=yin(n[1]||tR,n[2]);return hne(t,s,o,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var Qah=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,Mah=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,iXo=(e,t)=>{let r=Qah.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let s=Mah.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]=yin(o,i),hne(t,i,o,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var Lah=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,$il=(e,t)=>{let r=Lah.exec(e);return r?hne(t,r[2],r[1]||tR,+r[3],r[4]?+r[4]:void 0):void 0};var _ah=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,eol=(e,t)=>{let r=_ah.exec(e);return r?hne(t,r[2],r[3]||tR,+r[1]):void 0},Uah=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,tol=(e,t)=>{let r=Uah.exec(e);return r?hne(t,r[5],r[3]||r[4]||tR,+r[1],+r[2]):void 0};var Vah=/^\s*[-]{4,}$/,Gah=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,qah=/^Promise\.(?:all|any)$/,Wah=/^index \d+$/,Hah="node:internal/promise",nol=(e,t)=>{let r=e.match(Gah);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]),qah.test(o)&&Wah.test(c||"")&&(c=Hah),{filename:c?decodeURI(c):void 0,module:void 0,function:o,lineno:rol(r[3]),colno:rol(r[4]),in_app:Kah(c||"",u),platform:t}}if(e.match(Vah))return{filename:e,platform:t}};function Kah(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 rol(e){return parseInt(e||"",10)||void 0}var iol=/\(error: (.*)\)/,ool=50,Jah=10,Yah=1e3;function oXo(e,t){return e.filename===t.filename&&e.function===t.function&&e.module===t.module&&e.lineno===t.lineno&&e.colno===t.colno}function Xah(e){for(let t=1;t<=Jah;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(!oXo(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 Zah(e,t){let r=t.start+t.length,n=aol(e,t);n&&e.splice(r+n===e.length?r:t.start,n)}function sol(e,t){let r=t.start;for(;r>0&&oXo(e[r-1],e[r-1+t.length]);)r--;return t.start-r}function aol(e,t){let r=t.start+t.length,n=r;for(;n<e.length&&oXo(e[n],e[n-t.length]);)n++;return n-r}function $ah(e,t){let r=t[0],n=e.length-(r?sol(e,r):0);for(let i of t)n-=aol(e,i);return n}function ech(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++)tch(t,n,r)&&(r=n);e.push(...e.splice(0,r))}function tch(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 col(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,ool).map(r=>({...r,filename:r.filename||rch(t).filename,function:r.function||tR}))}function rch(e){return e[e.length-1]||{}}function sXo(){return uol("web:javascript",nXo,iXo)}function uol(e,...t){return(r,n=0)=>{let i=[],o=r.split(`
|
|
3458
3458
|
`),s=Math.min(o.length,n+Yah),a=[];for(let l=n;l<s;l++){let p=o[l];if(p.length>1024)continue;let d=iol.test(p)?p.replace(iol,"$1"):p;if(!d.match(/\S*Error: /)){for(let f of t){let m=f(d,e);if(m){i.push(m);let g=Xah(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($ah(i,a)>=ool)break}}let c=[...a].sort((l,p)=>p.start-l.start),u=c[c.length-1];if(u){let l=sol(i,u);i.splice(u.start-l,l);for(let p of c)p.start-=l}for(let l of c)Zah(i,l);return a.some(l=>l.start===0&&i.length===l.length)&&ech(i),col(i)}}var aXo=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 UHt=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 cXo=class{match(t){if(!wil(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
|
|
3459
|
-
at ${r.filename}:${n}:${i}`}};var nch=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,VHt=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(nch);return i&&(r=i[1],n=i[2]),[r,n]}};var lol=["fatal","error","warning","log","info","debug"];function bin(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 GHt=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)&&!qYo(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=bin(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return rk(t)&&!qYo(t)&&lol.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 uXo=class{match(t){return Eft(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${bin(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var qHt=class{match(t){return iin(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var lXo=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 iin(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 pXo=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 WHt={MESSAGE:"$message",TIMESTAMP:"$timestamp"},ich=new Set([WHt.MESSAGE,WHt.TIMESTAMP]),Ein={enabled:!0,max_bytes:32768};function fXo(e){return e?{enabled:e.enabled??Ein.enabled,max_bytes:sch(e.max_bytes,Ein.max_bytes)}:{...Ein}}function och(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,i)=>ich.has(i)?(t.push(i),n):(n[i]=e[i],n),{}),droppedKeys:t}}var dXo=class{constructor(t){this._entries=[],this._totalBytes=0,this._config=fXo(t)}setConfig(t){this._config=fXo(t),this._trimToMaxBytes()}add(t){let r=ach(t);if(!r)return;let n=pol(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 sch(e,t){if(!bft(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);return r<0?t:r}function ach(e){let t;try{t=u1e(e)}catch{return}try{let r=JSON.parse(t);if(!zHt(r))return;let n=r,i=n[WHt.MESSAGE],o=n[WHt.TIMESTAMP];return!rk(i)||i.trim().length===0||!rk(o)&&!bft(o)?void 0:{step:n,json:t}}catch{return}}function pol(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 cch(){let e=globalThis._posthogReleaseId;return typeof e=="string"&&e.length>0?e:void 0}var mXo=e=>{if("flags"in e){let t=fol(e.flags),r=dol(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,uch(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function uch(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 fol=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,HHt(r)]).filter(([,t])=>t!==void 0)),dol=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]}))},HHt=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 mol=["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"],lch=["$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",...mol,"$session_id","$window_id","$lib","$lib_version","$device_id","$is_server","$react_native_version"],KHt=(e,t=[])=>{let r={},n=i=>{e[i]!==void 0&&(r[i]=e[i])};return lch.forEach(n),t.forEach(n),r};var Iin=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 hXo(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}var fch="NativeGzipValidationError",dch=31,mch=139,hch=8,gch=e=>e.length>=2&&e[0]===dch&&e[1]===mch;var JHt,Ach=()=>{if(JHt)return JHt;JHt=[];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;JHt[e]=t>>>0}return JHt},ych=e=>{let t=Ach(),r=4294967295;for(let n=0;n<e.length;n++)r=t[(r^e[n])&255]^r>>>8;return(4294967295^r)>>>0},vin=e=>{throw Cft(fch,`Native gzip produced invalid output: ${e}`)},bch=async(e,t)=>{e.size<18&&vin("too-short");let r=new Uint8Array(await e.slice(0,10).arrayBuffer());(!gch(r)||r[2]!==hch)&&vin("invalid-header");let n=new DataView(await e.slice(e.size-8).arrayBuffer());n.getUint32(0,!0)!==ych(t)&&vin("invalid-crc");let i=t.length>>>0;n.getUint32(4,!0)!==i&&vin("invalid-size")};async function YHt(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 bch(c,n),c}catch(n){if(r?.rethrow)throw n;return t&&console.error("Failed to gzip compress data",n),null}}var _8=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 eXo(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 bol=(e,t)=>{for(let r of Object.keys(t))(r.startsWith("$feature/")||r==="$active_feature_flags")&&(e[r]=t[r])};async function hol(e){if(e instanceof _8){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 Ech(e){return typeof e=="object"&&(e instanceof _8||Eol(e))}function Eol(e){return e instanceof qhe}function Ich(e){if(e instanceof _8)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 gol=10485760;function Aol(e){try{return typeof e!="string"?e instanceof Uint8Array?e.byteLength:e.size:"u">typeof Buffer?Buffer.byteLength(e,Hil):new TextEncoder().encode(e).length}catch{return 0}}function wft(e){return typeof e=="object"&&e instanceof _8&&e.status===413}function Cin(e){return e instanceof _8?e.status===408||e.status===429||e.status>=500:Eol(e)}function yol(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var gXo="default",XHt=class{getErrorPropertiesBuilder(){return this._errorPropertiesBuilder||(this._errorPropertiesBuilder=this.createErrorPropertiesBuilder()),this._errorPropertiesBuilder}createErrorPropertiesBuilder(){return new _Ht([new UHt,new GHt,new VHt,new qHt],sXo())}getEvaluationRuntime(){}constructor(t,r={}){this.flushPromise=null,this.pendingFlushPromise=null,this.flushPromises=new Set,this._dequeuedMessagesCount=0,this.shutdownPromise=null,this.promiseQueue=new uin,this._events=new Iin,this._isInitialized=!1;let n=typeof t=="string"?t.trim():"",i=typeof r.host=="string"?r.host.trim():"",o=!n;this._logger=Dil("[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=Kil(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:Cin},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=!hXo()||(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 bol(n,r),t.event==="$feature_flag_called"&&n.$feature_flag_has_experiment===!1&&this.isMinimalFlagCalledEventsEnabled()&&(n=KHt(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:Ich},this.featureFlagsRequestTimeoutMs).then(d=>({success:!0,response:mXo(d)})).catch(d=>(this._events.emit("error",d),{success:!1,error:this.categorizeRequestError(d)}))}categorizeRequestError(t){if(t instanceof _8)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=HHt(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 gXo}persistedQueueKeyForRoute(t){return OM.Queue}getActiveQueueRoutes(){return[gXo]}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=yol(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:tXo(),uuid:g5e(r?.uuid,jN)};return(r?.disableGeoip??this.disableGeoip)&&(yol(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 hol(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(()=>LHt([r])).then(()=>(this.pendingFlushPromise===i&&(this.pendingFlushPromise=null),this._flush()));return this.pendingFlushPromise=i,this.flushPromise=i,this.flushPromises.add(i),this.addPendingPromise(i),LHt([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 YHt(t,this.isDebug)}getBatchEndpointPath(t){return"/batch/"}async sendBatch(t,r,n=gXo){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:tXo()};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:Cin(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=Aol(i);if(o>gol)return this.logMsgIfDebug(()=>console.warn(`[PostHog] Not sending a ${t} batch of ${o} bytes: the endpoint accepts at most ${gol}`)),{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 _8&&l.retryAfterMs!==void 0?!1:Cin(l)}),{kind:"ok"}}catch(l){if(wft(l))return{kind:"too-large"};if(Cin(l)){let p=l instanceof _8?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=Aol(s),c={...this._retryOptions,...i},u=0;return await Jil(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 _8(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 _8&&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(!Ech(i))throw i;await hol(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 Sch=/[a-z][a-z0-9+.-]{0,63}:[^\s<>"]+/gi;var yWv=new RegExp(Sch.source,"i"),Iol=/[a-z][a-z0-9+.-]{0,63}:\/\//i,bWv=new RegExp(`^${Iol.source}`,"i"),EWv=new RegExp(Iol.source,"gi");var Tch=["is_not","is_set"],Och=1152921504606847e3,Zu=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Object.setPrototypeOf(this,e.prototype)}};function AXo(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(!AXo(t in e?e[t]:null))return!1;return!0}function yXo(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(!yXo(t in e?e[t]:null))return!1;return!0}function ZHt(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 win(e,t=new Set){if(!(e===null||typeof e=="boolean")){if(typeof e=="string")return void ZHt(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&&win(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))ZHt(n),win(e[n],t)}finally{t.delete(e)}return}throw new Zu(`Cannot represent ${typeof e} like the flags service`)}}function Pch(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 bXo(e,t=new Set){if(e===null)return"null";if(typeof e=="string")return ZHt(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?bXo(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(ZHt),`{${n.sort(Pch).map(i=>`${JSON.stringify(i)}:${bXo(e[i],t)}`).join(",")}}`}finally{t.delete(e)}}throw new Zu(`Cannot stringify ${typeof e} like the flags service`)}function xin(e){return typeof e=="string"?(ZHt(e),e):bXo(e)}function vol(e){try{return new RegExp(e),!0}catch{return!1}}function U8(e){return String(e).replace(/[A-Z]/g,t=>t.toLowerCase())}function xol(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:xol(s,e,t);return[o(i[0]),o(i[1]),o(i[2])]}function V8(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 Bch(e,t){let r=XS(e,t);return{lower:[r[0],r[1],r[2]],upper:[r[0],r[1]+1,0]}}function Rch(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 Dch(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 xol(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 Col(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 EXo(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 IXo(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&&!Tch.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&&AXo(p)||Array.isArray(p)&&p.length===0)return win(d),yXo(p)===yXo(d);if(r.propertyMatchingVersion===2&&typeof d=="number"&&AXo(p))return win(d),!1;if(Array.isArray(p)){let f=xin(d).toLowerCase();return p.some(m=>xin(m).toLowerCase()===f)}return xin(p).toLowerCase()===xin(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 U8(c).includes(U8(i));case"not_icontains":return!U8(c).includes(U8(i));case"starts_with":return U8(c).startsWith(U8(i));case"not_starts_with":return!U8(c).startsWith(U8(i));case"ends_with":return U8(c).endsWith(U8(i));case"not_ends_with":return!U8(c).endsWith(U8(i));case"regex":return vol(String(i))&&String(c).match(String(i))!==null;case"not_regex":return vol(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=EXo(String(i));p==null&&(p=Col(i));let d=Col(c);return o==="is_date_before"?d<p:d>p}case"semver_eq":return V8(XS(String(c),s),XS(String(i),s))===0;case"semver_neq":return V8(XS(String(c),s),XS(String(i),s))!==0;case"semver_gt":return V8(XS(String(c),s),XS(String(i),s))>0;case"semver_gte":return V8(XS(String(c),s),XS(String(i),s))>=0;case"semver_lt":return V8(XS(String(c),s),XS(String(i),s))<0;case"semver_lte":return V8(XS(String(c),s),XS(String(i),s))<=0;case"semver_tilde":{let p=XS(String(c),s),{lower:d,upper:f}=Bch(String(i),s);return V8(p,d)>=0&&V8(p,f)<0}case"semver_caret":{let p=XS(String(c),s),{lower:d,upper:f}=Rch(String(i),s);return V8(p,d)>=0&&V8(p,f)<0}case"semver_wildcard":{let p=XS(String(c),s),{lower:d,upper:f}=Dch(String(i),s);return V8(p,d)>=0&&V8(p,f)<0}default:throw new Zu(`Unknown operator: ${o}`)}}async function wol(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 $Ht(e,t,r="",n="."){let i=await wol(`${e}${n}${t}${r}`);return parseInt(i.slice(0,15),16)/Och}async function vXo(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 $Ht("holdout",t,"","-")>n/100))return`holdout-${e.id}`}function Sin(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 CXo(e,t,r){let n=await $Ht(e,t,"variant");return Sin(r).find(i=>n>=i.valueMin&&n<i.valueMax)?.key}function xXo(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 Sol=9223372036854776e3,kch="9223372036854775808",Fch=Object.prototype.propertyIsEnumerable;function Nch(){return{ancestors:new WeakSet,remainingNodes:1e4}}function gne(e,t){try{return Tol(e,t,Nch(),0)}catch{return[]}}function jch(e,t){let r=e.toString(),n=BigInt(kch);return e>=n||e<-n?(t?.debug(`Attribute ${r} is outside the int64 range; encoding it as a string`),{stringValue:r}):{intValue:r}}function TXo(e,t,r,n){if(r.remainingNodes<=0)return{stringValue:hin};if(r.remainingNodes--,xil(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>=Sol||e<-Sol?(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:Wil};if(typeof e=="symbol")return{stringValue:String(e)};if(typeof e=="object"&&e!==null){if(r.ancestors.has(e))return{stringValue:min};if(n>=20)return{stringValue:hin};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 TXo(i.call(e),t,r,n+1)}catch{}return V4(e)?{arrayValue:{values:zch(e,t,r,n+1)}}:{kvlistValue:{values:Tol(e,t,r,n+1)}}}finally{r.ancestors.delete(e)}}return{stringValue:mne(String(e))}}function zch(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(NJ(a))continue;i.push(TXo(a,t,r,n))}catch{i.push({stringValue:L8})}return e.length>s&&i.push({stringValue:hin}),i}function Tol(e,t,r,n){let i=[];for(let o in e)if(Fch.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(WYo(s)||Vhe(s))continue;i.push({key:mne(o),value:TXo(s,t,r,n)})}catch{i.push({key:mne(o),value:{stringValue:L8}})}}return i}function tKt(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 Qch=["service.name","deployment.environment","service.version","telemetry.sdk.name","telemetry.sdk.version"];function rKt(e,t){let r=Ghe({},e),n={};for(let i of Qch)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i],delete r[i]);return[...gne(r,t),...gne(n,t)]}var Ool={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 Mch(e){if(e)return Object.prototype.hasOwnProperty.call(Ool,e)?Ool[e]:e}function OXo(e,t){let r=Mch(e);return{...r?{"os.name":r}:{},...t?{"os.version":t}:{}}}var Lch={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}},jWv=Lch.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 nKt(){return 1-.25+Math.random()*.25*2}var G8=1;function iKt(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 oKt=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function PXo(e){return String(e)+"000000"}function BXo(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 Pol(e,t){for(let r=0;r<t.length;r++)if(e<=t[r])return r;return t.length}function RXo(e,t,r){return tKt(e,t,r)}function DXo(e,t,r,n){return{resourceMetrics:[{resource:{attributes:rKt(t)},scopeMetrics:[{scope:{name:r,version:n},metrics:e}]}]}}function Oin(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 Bol=1,sKt=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=G8,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=G8,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=BXo(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(oKt.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[Pol(r,oKt)]+=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(iKt(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=nKt()):(this._consecutiveFlushFailures=0,this._flushJitter=G8),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 DXo(this._buildMetrics(t),RXo(this._config,this._instance.getLibraryId(),this._instance.getLibraryVersion()),this._instance.getLibraryId(),this._instance.getLibraryVersion())}_buildMetrics(t){let r=PXo(Date.now()),n=new Map;for(let i of t.values()){let o=BXo(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:Bol,isMonotonic:!0,dataPoints:[]}:i.type==="gauge"?s.gauge={dataPoints:[]}:s.histogram={aggregationTemporality:Bol,dataPoints:[]},n.set(o,s));let a=gne(i.attributes??{},this._logger),c=PXo(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:oKt};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 Gch="0".repeat(32),qch="0".repeat(16),Wch=/^[0-9a-f]+$/;function Hch(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 Kch(e){let t="";for(let r=0;r<e.length;r++)t+=e[r].toString(16).padStart(2,"0");return t}function Rol(e){let t=Kch(Hch(e));return/[^0]/.test(t)?t:t.slice(0,-1)+"1"}function Dol(){return Rol(16)}function kol(){return Rol(8)}function Fol(e,t,r){return typeof e=="string"&&e.length===t&&e!==r&&Wch.test(e)}function Nol(e){return Fol(e,32,Gch)}function jol(e){return Fol(e,16,qch)}var Jch=/^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})(-.*)?$/;function zol(e){let t=Qol(e);return t&&{traceId:t.traceId,spanId:t.spanId,flags:Ych(t.flags)}}function Ych(e){return 1&parseInt(e,16)?Bin:Xch}function Qol(e){if(typeof e!="string")return;let t=Jch.exec(e.trim());if(!t)return;let[,r,n,i,o,s]=t;if(r!=="ff"&&!(r==="00"&&s)&&!(!Nol(n)||!jol(i)))return{version:r,traceId:n,spanId:i,flags:o}}function Mol(e){return Qol(e)&&e.trim()}function Pin(e){return Array.isArray(e)&&e.length===1?e[0]:e}var Bin="01",Xch="00";function Lol(e,t,r=Bin){return`00-${e}-${t}-${r}`}var Zch=32,kXo=512;function Rin(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>Zch)){for(let n of r)if(n.trim()&&!n.includes("="))return;return t.length<=kXo?t:euh(r)}}var $ch=128;function euh(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()>kXo;n--)t[n].length>$ch&&t.splice(n,1);for(;t.length&&r()>kXo;)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 Uol(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 Din(e,t){return e<t?t:e}function aKt(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 Fin(){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??Bin,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:Fin(),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=Fin();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(NJ(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]=jin(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&&Wol(r,this._maxAttributesPerEvent,this._maxAttributeValueLength);this._events.push({name:y5e(t,"Span event name",this._maxAttributeValueLength,this._logger),timestamp:aKt(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:FXo(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}=NXo(t);return this.addEvent(tuh,{"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 Lol(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=aKt(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:Din(n,this._startTime),...this._droppedAttributes&&{droppedAttributesCount:this._droppedAttributes},...this._droppedEvents&&{droppedEventsCount:this._droppedEvents}},this._autoKeys)}},tuh="exception",ruh=4294967295;function nuh(e){try{return typeof e=="string"?e:String(e)}catch{return L8}}function b5e(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?0:Math.min(Math.floor(e),ruh)}function iuh(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 Gol(e,t,r,n,i,o,s=[]){let a=0,c=0,u={};for(let f of iuh(e.attributes,s)){let m=e.attributes[f];if(!NJ(m)){if(!t.has(f)){if(a>=r){c++;continue}a++}Object.defineProperty(u,f,{value:jin(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=Wol(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:FXo(nuh(e.status.message),o)})}var Nin=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(){}},qol=new Nin,cKt=class extends Nin{constructor(t,r){super(),this._traceparent=t,this._tracestate=r}traceparent(){return this._traceparent}tracestate(){return this._tracestate??null}};function ouh(e){try{let t=e.stack;return typeof t=="string"&&t?{stack:t}:{}}catch{return{}}}function f1e(e,t){let r=Pin(e?.parent)??t,n=typeof r=="string"||r==null?r:Vol(r,"traceparent"),i=Mol(n);if(!i)return qol;let o=typeof r=="string"||r==null?e?.tracestate:Vol(r,"tracestate");return new cKt(i,Rin(o))}function Vol(e,t){try{let r=e[t];return typeof r=="function"?r.call(e):void 0}catch{return}}function FXo(e,t){return e.length>t?e.slice(0,t):e}function jin(e,t){return kin(e,t,{ancestors:new WeakSet,remainingNodes:1e4},0)}function kin(e,t,r,n){if(e===null||typeof e!="object")return NJ(e)||r.remainingNodes<=0?e:(r.remainingNodes--,typeof e=="string"?FXo(e,t):e);if(r.ancestors.has(e))return min;if(r.remainingNodes<=0||n>=20)return e;r.remainingNodes--,r.ancestors.add(e);try{if(e instanceof Date)return e;let i=suh(e);if(i.selfDescribed)return NJ(i.value)?String(i.value):kin(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(kin(e[u],t,r,n+1))}catch{c.push(L8)}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=kin(e[a],t,r,n+1)}catch{c=L8}a&&!NJ(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 suh(e){try{let t=e.toJSON;if(typeof t=="function")return{selfDescribed:!0,value:t.call(e)}}catch{}return{selfDescribed:!1}}function Wol(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=jin(e[a],r)}catch{c=L8}NJ(c)||(o++,Object.defineProperty(i,a,{value:c,enumerable:!0,writable:!0,configurable:!0}))}return{attributes:i,dropped:s}}function Hol(e,t){for(let r of Object.keys(e))e[r]=jin(e[r],t);return e}function uKt(e,t,r){return t===qol?r(t):e.with(t,()=>r(t))}function NXo(e){try{let t=ouh(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 jXo={internal:1,server:2,client:3,producer:4,consumer:5},auh={ok:1,error:2},cuh=1,uuh=256,luh=512;function puh(e){let t=parseInt(e.traceFlags,16);return(Number.isFinite(t)?255&t:cuh)|uuh|(e.parentIsRemote?luh:0)}function zin(e){if(typeof e=="string")return mne(e);try{return mne(String(e))}catch{return L8}}function fuh(e){return e&&Object.prototype.hasOwnProperty.call(jXo,e)?jXo[e]:jXo.internal}function zXo(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 duh(e,t){let r={name:zin(e.name),timeUnixNano:zXo(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 Kol(e,t){let r={traceId:e.traceId,spanId:e.spanId,name:zin(e.name),kind:fuh(e.kind),startTimeUnixNano:zXo(e.startTime),endTimeUnixNano:zXo(e.endTime),flags:puh(e)};e.parentSpanId&&(r.parentSpanId=e.parentSpanId),e.traceState&&(r.traceState=zin(e.traceState));let n=gne(e.attributes,t);n.length&&(r.attributes=n),e.events.length&&(r.events=e.events.map(s=>duh(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:auh[e.status.code],...e.status.message&&{message:zin(e.status.message)}}),r}function Jol(e,t,r){return tKt(e,t,r)}function Yol(e,t,r,n,i){return{resourceSpans:[{resource:{attributes:rKt(t,i)},scopeSpans:[{scope:{name:r,version:n},spans:e}]}]}}var Xol=8;function Qin(){return Fin()??Date.now()}function QXo(e){try{return e instanceof Tft}catch{return!1}}function Zol(e,t){let r=zol(e);if(r)return{traceId:r.traceId,parentSpanId:r.spanId,traceState:Rin(t),traceFlags:r.flags,isRemote:!0}}function muh(e){try{return typeof e.traceparent=="function"}catch{return!1}}function huh(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 Min(e,t,r){e[t]!==r&&(e[t]=r)}function guh(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 lKt=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=G8,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=Pin(r?.parent);if(n&&typeof n!="string"&&!QXo(n)){if(muh(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=Uol(r?.startTime,o,this._logger),a=kol();this._liveSpans.set(a,Qin());let c=this._autoContextAttributes();return new Tft({traceId:i?.traceId??Dol(),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=uKt(this._contextManager,s,o);return Yil(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=G8,this._retryAfter.reset(),this._resetHeadBatchBudget()}_resetHeadBatchBudget(){this._headBatchFailures=0,this._headBatchChargeableAt=0}_resolveParent(t,r){if(typeof t=="string"){let i=Zol(t,r?.tracestate);return i||this._logger.debug("Ignoring malformed traceparent; starting a new trace"),i}if(QXo(t))return t.childContext();let n=this._contextManager.active();if(QXo(n))return n.childContext();if(n instanceof cKt)return Zol(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}=NXo(r);t.addEvent("exception",{"exception.type":n,"exception.message":i,...o&&{"exception.stacktrace":o}}),t.statusIsExplicitlyOk||t.setStatus("error",i)}_evictAgedSpans(){let t=Qin()-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},!huh(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=Din(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:aKt(f.timestamp,l.startTime,"event timestamp",this._logger)})}catch{this._logger.debug("beforeSpanSend left an unreadable span event; dropping it")}return l.events=d,Gol(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{Min(t,"traceId",r.traceId),Min(t,"spanId",r.spanId),Min(t,"parentSpanId",r.parentSpanId),Min(t,"traceState",r.traceState)}catch{return guh(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(Kol(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=Hol(Jol(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=Qin()>=this._headBatchChargeableAt&&!this._retryAfter.isOpen(),g=await this._instance._sendTracesBatch(Yol(f,r,n,i,this._logger));if(c!==this._generation)break;if(this._retryAfter.record(g),g.kind==="ok"){this._consecutiveFlushFailures=0,this._flushJitter=G8,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=G8,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=nKt(),this._headBatchSize=p,m&&(this._headBatchFailures++,this._headBatchChargeableAt=Qin()+this._nextFlushDelay()),this._headBatchFailures<Xol)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=G8,this._resetHeadBatchBudget(),this._recordDrop(p,`the ingestion endpoint failed ${Xol} 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=G8,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(iKt(this._config.flushIntervalMs,this._consecutiveFlushFailures,this._flushJitter,3e4),this._retryAfter.remainingMs())}};var pKt=class{active(){return this._active}with(t,r){let n=this._active;this._active=t;try{return r()}finally{this._active=n}}};var Auh=5e3,yuh=512,buh=2048,Euh=128,Iuh=128,vuh=128,Cuh=8192,xuh=1e4,wuh=36e5;function d1e(e,t){return typeof e=="number"&&Number.isInteger(e)&&e>=1?e:t}var $ol=["service.name","service.version","deployment.environment"];function Suh(e){if(!(!e||typeof e!="object"||Array.isArray(e)))try{if($ol.every(r=>!(r in e)||typeof e[r]=="string"))return e;let t={...e};for(let r of $ol)r in t&&typeof t[r]!="string"&&delete t[r];return t}catch{return}}function Tuh(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 MXo(e,t,r){let n=Ghe({...t},Suh(e?.resourceAttributes)),i=d1e(e?.maxExportBatchSize,yuh);return{serviceName:n?.["service.name"]??e?.serviceName,serviceVersion:n?.["service.version"]??e?.serviceVersion,environment:n?.["deployment.environment"]??e?.environment,resourceAttributes:n,beforeSpanSend:Tuh(e?.beforeSpanSend,r),maxAttributesPerSpan:d1e(e?.maxAttributesPerSpan,Euh),maxEventsPerSpan:d1e(e?.maxEventsPerSpan,Iuh),maxAttributesPerEvent:vuh,maxAttributeValueLength:d1e(e?.maxAttributeValueLength,Cuh),flushIntervalMs:d1e(e?.flushIntervalMs,Auh),maxExportBatchSize:i,maxQueueSize:Math.max(d1e(e?.maxQueueSize,buh),i),maxLiveSpans:d1e(e?.maxLiveSpans,xuh),maxSpanAgeMs:d1e(e?.maxSpanAgeMs,wuh)}}var LXo=require("fs"),rsl=require("fs/promises"),UXo=require("path"),nsl=require("readline"),Lin=new nO.ReduceableCache(25),fKt=new nO.ReduceableCache(20),VXo=7,Ouh=1e3,Puh=1e4,_Xo=10485760;async function isl(e,t=rsl.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"||Fuh(u)||Nuh(c)||!(0,UXo.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=osl(a,i);if(c===void 0||fKt.get(c))continue;let u=n[a];if(!u)continue;u.sort((d,f)=>d-f);let l=zuh(u);if(l.every(d=>juh(c,d)))continue;let p=Quh(Lin,c,{});s.push(Ruh(a,l,p,c,t,r))}return await Promise.all(s).catch(()=>{}),e&&e.length>0&&Duh(e,Lin,i),Lin.reduce(),e}async function Buh(e,t,r){let n,i=!1;try{n=await t(e,LXo.constants.O_RDONLY|LXo.constants.O_NONBLOCK);let o=await n.stat();return o.isFile()?o.size>_Xo?void r?.debug(`Skipping source context for oversized file ${e}: ${o.size} bytes exceeds ${_Xo}`):(i=!0,n):void 0}catch{return}finally{n&&!i&&await n.close().catch(()=>{})}}async function Ruh(e,t,r,n,i,o){let s=await Buh(e,i,o);if(s===void 0)return void fKt.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:_Xo-1})}catch{fKt.set(n,1),l();return}let d;try{d=(0,nsl.createInterface)({input:p})}catch{fKt.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(){fKt.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]=Muh(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 Duh(e,t,r){for(let n of e)if(n.filename&&n.context_line===void 0&&typeof n.lineno=="number"){let i=osl(n.filename,r),o=i===void 0?void 0:t.get(i);if(o===void 0)continue;kuh(n.lineno,n,o)}}function kuh(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=ssl(e);i<e;i++){let o=r[i];if(o===void 0)return void esl(t);t.pre_context.push(o)}if(r[e]===void 0)return void esl(t);t.context_line=r[e];let n=asl(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 esl(e){delete e.pre_context,delete e.context_line,delete e.post_context}function Fuh(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function Nuh(e){return e.lineno!==void 0&&e.lineno>Puh||e.colno!==void 0&&e.colno>Ouh}function osl(e,t){return(0,UXo.isAbsolute)(e)?JSON.stringify([null,e]):t===void 0?void 0:JSON.stringify([t,e])}function juh(e,t){let r=Lin.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 zuh(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=tsl(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+VXo:(i.push(n),n=tsl(o)),t++}return i}function tsl(e){return[ssl(e),asl(e)]}function ssl(e){return Math.max(1,e-VXo)}function asl(e){return e+VXo}function Quh(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function Muh(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 csl(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 usl="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 Luh=6e4;function lsl(e){return e==="client"||e==="server"?e:"all"}function _uh(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 Uuh(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),Uuh(this,e)}},_in=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=xXo(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 vXo(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 fsl(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):psl(u,i,c,s.propertyMatchingVersion);if(!p)return"no_match"}if(a==null)return"match"}return a!=null&&await $Ht(t.key,r)>a/100?"out_of_rollout_bound":"match"}async getMatchingVariant(t,r){return CXo(t.key,r,t.filters?.multivariate?.variants||[])}variantLookupTable(t){return Sin(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?lsl(r.evaluation_runtime):void 0}getFlagKeysByEvaluationRuntime(t){return this.featureFlags.filter(r=>_uh(lsl(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(Luh,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 psl(e,t,r,n){return IXo(e,t,{warnFunction:r,propertyMatchingVersion:n})}function Vuh(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 fsl(e,t,r,n=!1,i,o){let s=String(e.value);Vuh(s,r);let a=r[s];return dsl(a,t,r,n,i,o)}async function dsl(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 dsl(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 fsl(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=psl(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 Guh=["--unhandled-rejections","--unhandled_rejections"],quh=new Set(["throw","strict","warn","warn-with-error-code","none"]),Wuh=[...globalThis.process?.execArgv??[]],Huh=globalThis.process?.env?.NODE_OPTIONS;function Kuh(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 msl(e){let t;for(let r=0;r<e.length;r++){let n=e[r],i=Guh.find(s=>n===s||n.startsWith(`${s}=`));if(!i)continue;let o=n===i?e[++r]:n.slice(i.length+1);quh.has(o)&&(t=o)}return t}function Juh(e=Wuh,t=Huh){return msl(e)??msl(Kuh(t??""))??"throw"}var hsl=Juh();function gsl(e,t,r){e(t,{mechanism:{type:r==="unhandledRejection"?"onunhandledrejection":"onuncaughtexception",handled:!1}})}function Yuh(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;gsl(e,n,i),!r&&o===0&&(r=!0,t(n))},{_posthogErrorHandler:!0})}function Asl(e,t,r=hsl){let n=globalThis.process;if(n){if(r==="strict")return void n.on("uncaughtExceptionMonitor",(i,o)=>gsl(e,i,o));n.on("uncaughtException",Yuh(e,t))}}function ysl(e,t=hsl){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 Xuh=2e3,GXo=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new sin({...Pil(r),refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return zHt(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()&&(Asl(this.onException.bind(this),this.onFatalError.bind(this)),ysl(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(Xuh),globalThis.process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}},E5e=GXo;var Uin=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};function Zuh(e){return e==="v0"||e==="v1"}function bsl(){let e="u">typeof process?process.env?.POSTHOG_CAPTURE_MODE:void 0;return Zuh(e)?e:"v0"}var $uh="$ai_",dKt="analytics";function Esl(e){return typeof e.event=="string"&&e.event.startsWith($uh)}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 qXo(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 elh(e){return typeof e=="string"?e:void 0}var tlh=[{property:"$cookieless_mode",optionKey:"cookieless_mode",coerce:qXo},{property:"$ignore_sent_at",optionKey:"disable_skew_correction",coerce:qXo},{property:"$process_person_profile",optionKey:"process_person_profile",coerce:qXo},{property:"$product_tour_id",optionKey:"product_tour_id",coerce:elh}],rlh=[{property:"$session_id",field:"session_id"},{property:"$window_id",field:"window_id"}];function nlh(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ilh(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 Isl(e,t,r){r!==void 0&&!(t in e)&&(e[t]=r)}function olh(e){let r={...nlh(e.properties)?e.properties:{}},n={};for(let{property:o,optionKey:s,coerce:a}of tlh)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 rlh)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,Isl(r,"$set",e.$set),Isl(r,"$set_once",e.$set_once),{event:String(e.event??""),uuid:String(e.uuid??""),distinct_id:String(e.distinct_id??""),timestamp:ilh(e.timestamp),...i,options:n,properties:r}}function vsl(e,{createdAt:t,historicalMigration:r}){let n={created_at:t,batch:e.map(olh)};return r&&(n.historical_migration=!0),n}var slh="/i/v1/analytics/events",alh=3e4,clh=new Set([408,500,502,503,504]),Vin=class{constructor(t,r){this.config=t,this.maxBackoffMs=t.maxBackoffMs??alh,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??YHt}async sendV1Batch(t){if(t.length===0)return;let r=this.generateRequestId(),n=new Date(this.now()).toISOString(),{batch:i}=vsl(t,{createdAt:n,historicalMigration:this.config.historicalMigration}),o=`${this.config.host}${slh}`,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&&clh.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",Gin="/i/v0/ai/batch/";var llh=new TextEncoder;function HXo(e){return llh.encode(u1e(e)).length}function Csl(e,t=8388608,r=5242880){let n=[],i=[],o=[],s=0;for(let a of e){if(a===void 0)continue;let c=HXo(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 plh=100,xsl=3e4,flh=5e4,dlh=50,mlh=500,hlh="https://us.i.posthog.com",wsl=new Set;function Win(e,t){wsl.has(e)||(wsl.add(e),console.warn(`[PostHog] ${t}`))}function glh(e){return typeof e=="string"?e.trim():""}function Alh(e){return(typeof e=="string"?e.trim():"")||void 0}function ylh(e){return(typeof e=="string"?e.trim():"")||hlh}function blh(e){return(Array.isArray(e)?e:[e]).filter(r=>typeof r=="string"&&r.trim().length>0)}function Elh(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 Hin=class extends XHt{constructor(t,r={}){let n=glh(t),i={...r,maxQueueSize:r.maxQueueSize??1e4,flushInterval:r.flushInterval??5e3,host:ylh(r.host),personalApiKey:Alh(r.secretKey??r.personalApiKey)};if(super(n,i),this._memoryStorage=new Uin,this._aiCaptureRouteActive=!1,this._minimalFlagCalledEvents=!1,this.options=i,this.captureMode=bsl(),this.enableFullAiCapture=i.enableFullAiCapture===!0,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof i.featureFlagsPollingInterval=="number"?Math.max(i.featureFlagsPollingInterval,plh):i.featureFlagsPollingInterval===null?null:xsl,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 _in({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||flh}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:LHt([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??mlh,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??dlh;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"&&Esl(t)?"ai":dKt}persistedQueueKeyForRoute(t){return t===I5e?OM.AiCaptureQueue:t==="ai"?OM.AiQueue:OM.Queue}getActiveQueueRoutes(){let t=this.captureMode==="v1"?[dKt,"ai"]:[dKt];return this._aiCaptureRouteActive&&t.push(I5e),t}getBatchEndpointPath(t){return t===I5e?Gin:super.getBatchEndpointPath(t)}async sendBatch(t,r,n=dKt){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}=Csl(t);for(let{event:o,bytes:s}of i){let a=`Event ${o} (${s} bytes) exceeds the ${8388608/1048576}MiB limit for ${Gin}, 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"} (${HXo(o)} bytes) was rejected with 413 by ${Gin} 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 Vin({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 usl}get metrics(){return this._metrics||(this._metrics=new sKt(this,Oin(this.options.metrics),this._logger)),this._metrics}initializeSpanContextManager(){return new pKt}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 lKt(this,MXo(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):uKt(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=blh(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=xsl){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){Win("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(Win("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){Win("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(Sil(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)?KHt(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){Win("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 Elh(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"&&Oil(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 Ssl=require("async_hooks"),Kin=class{constructor(){this.storage=new Ssl.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 Tsl=require("async_hooks"),Jin=class{active(){return this._storage.getStore()}with(t,r){return this._storage.run(t,r)}constructor(){this._storage=new Tsl.AsyncLocalStorage}};var Osl=require("zlib"),Psl=require("util"),Ilh=(0,Psl.promisify)(Osl.gzip);async function Bsl(e,t=!0){try{let r=await Ilh(e);return new Uint8Array(r)}catch(r){return t&&console.error("Failed to gzip compress data",r),null}}var Yin=require("os");function Rsl(){let e,t;try{e=(0,Yin.platform)(),t=(0,Yin.release)()}catch{}return OXo(e,t)}var Dsl="posthog-node";function vlh(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[KXo.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 KXo=class{static{this.POSTHOG_ID_TAG="posthog_distinct_id"}constructor(t,r,n,i,o){this.name=Dsl,this.name=Dsl,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(vlh(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};var yne=class extends Hin{getLibraryId(){return"posthog-node"}compressPayload(t){return Bsl(t,this.isDebug)}initializeContext(){return new Kin}initializeSpanContextManager(){return new Jin}hostResourceAttributes(){return Rsl()}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),[Iil(),t=>isl(t,void 0,this._logger),csl()])}};function ksl(e){return e==null||!e.enabled?!1:e.variant==null||e.variant==="true"}var Xin=class{isEnabled(){return Promise.resolve(!1)}getCachedValue(){}flush(){return Promise.resolve()}},Clh="feature_flag_evaluated",xlh=3e3,wlh=3e3,Zin=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:xlh,isServer:!1})}isEnabled(t,r){let n=Fsl(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(Fsl(t,r))}async flush(){if(!this.sendFeatureFlagEvents)return;let t;try{await Promise.race([this.flushAfterPendingEvaluations(),new Promise(r=>{t=setTimeout(r,wlh),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=Tlh(r,this.environment),o;try{o=await this.evaluator.getFeatureFlagResult(t,JXo(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}),ksl(o)}captureFlagUsage({flag:t,org:r,result:n,properties:i}){let o=Slh(n),s={...i,...n?.reason!=null?{$feature_flag_reason:n.reason}:{},version:"5.164.1"};this.tryCapture({distinctId:JXo(r),event:"$feature_flag_called",groups:{organization:r},properties:{...s,$feature_flag:t,$feature_flag_response:o,[`$feature/${t}`]:o}}),this.tryCapture({distinctId:JXo(r),event:Clh,groups:{organization:r},properties:{...s,flag:t,response:o,enabled:ksl(n)}})}tryCapture(t){try{this.evaluator.capture(t)}catch{}}};function Slh(e){if(e!=null)return e.enabled?e.variant??!0:!1}function JXo(e){return`org:${e}`}function Tlh({org:e,generator:t,language:r},n){return{org:e,environment:n,...t!=null?{generator:t}:{},...r!=null?{language:r}:{}}}function Fsl(e,{org:t,generator:r,language:n}){return JSON.stringify([e,t,r??null,n??null])}var $in;function eon(){return $in==null&&($in=Olh()),$in}async function YXo(){await $in?.flush()}function Olh(){let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal";return e==null||e.trim().length===0?new Xin:new Zin({posthogApiKey:e,environment:FJ(),sendFeatureFlagEvents:rin()})}var ton=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.164.1",usingAccessToken:!0,cliReleaseEnvironment:FJ(),...Ppe()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:{...t.properties,cliReleaseEnvironment:FJ()}})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var mKt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};kd();er();var Rft=require("fs/promises"),Nsl=require("os"),jsl=require("path");iVe();var Plh="id",Blh=".fern",hKt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new yne(r,{isServer:!1}),this.userId=t==null?void 0:_9o(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.164.1",...t,...t.properties,usingAccessToken:!1,cliReleaseEnvironment:FJ(),agent:rHr(),...r!=null?{userEmail:r}:{},...Ppe()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:{...t.properties,cliReleaseEnvironment:FJ()}})}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,Nsl.homedir)()),be.of(Blh),be.of(Plh));try{await Ut(r)?this.persistedDistinctId=(await(0,Rft.readFile)(r)).toString():(await(0,Rft.mkdir)((0,jsl.dirname)(r),{recursive:!0}),await(0,Rft.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var XXo;async function gKt(){return XXo==null&&(XXo=await Rlh()),XXo}async function Rlh(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal";if(e==null||!rin())return new mKt;let t=await Ult();return t!=null?new hKt({token:t,posthogApiKey:e}):await EM()!=null?new ton({posthogApiKey:e}):new hKt({token:void 0,posthogApiKey:e})}catch{return new mKt}}On();Ct();kt();h8();var AKt=Ae(require("process"),1);sZe();var Msl=Ae(A3o(),1),Lsl=Ae(Qsl(),1);function iO(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=uH(e),e.length===0))return 0;e=e.replace((0,Lsl.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(Msl.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}On();function ron(e){let t=0;for(let r of e.split(`
|
|
3459
|
+
at ${r.filename}:${n}:${i}`}};var nch=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,VHt=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(nch);return i&&(r=i[1],n=i[2]),[r,n]}};var lol=["fatal","error","warning","log","info","debug"];function bin(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 GHt=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)&&!qYo(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=bin(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return rk(t)&&!qYo(t)&&lol.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 uXo=class{match(t){return Eft(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${bin(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var qHt=class{match(t){return iin(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var lXo=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 iin(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 pXo=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 WHt={MESSAGE:"$message",TIMESTAMP:"$timestamp"},ich=new Set([WHt.MESSAGE,WHt.TIMESTAMP]),Ein={enabled:!0,max_bytes:32768};function fXo(e){return e?{enabled:e.enabled??Ein.enabled,max_bytes:sch(e.max_bytes,Ein.max_bytes)}:{...Ein}}function och(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,i)=>ich.has(i)?(t.push(i),n):(n[i]=e[i],n),{}),droppedKeys:t}}var dXo=class{constructor(t){this._entries=[],this._totalBytes=0,this._config=fXo(t)}setConfig(t){this._config=fXo(t),this._trimToMaxBytes()}add(t){let r=ach(t);if(!r)return;let n=pol(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 sch(e,t){if(!bft(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);return r<0?t:r}function ach(e){let t;try{t=u1e(e)}catch{return}try{let r=JSON.parse(t);if(!zHt(r))return;let n=r,i=n[WHt.MESSAGE],o=n[WHt.TIMESTAMP];return!rk(i)||i.trim().length===0||!rk(o)&&!bft(o)?void 0:{step:n,json:t}}catch{return}}function pol(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 cch(){let e=globalThis._posthogReleaseId;return typeof e=="string"&&e.length>0?e:void 0}var mXo=e=>{if("flags"in e){let t=fol(e.flags),r=dol(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,uch(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function uch(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 fol=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,HHt(r)]).filter(([,t])=>t!==void 0)),dol=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]}))},HHt=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 mol=["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"],lch=["$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",...mol,"$session_id","$window_id","$lib","$lib_version","$device_id","$is_server","$react_native_version"],KHt=(e,t=[])=>{let r={},n=i=>{e[i]!==void 0&&(r[i]=e[i])};return lch.forEach(n),t.forEach(n),r};var Iin=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 hXo(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}var fch="NativeGzipValidationError",dch=31,mch=139,hch=8,gch=e=>e.length>=2&&e[0]===dch&&e[1]===mch;var JHt,Ach=()=>{if(JHt)return JHt;JHt=[];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;JHt[e]=t>>>0}return JHt},ych=e=>{let t=Ach(),r=4294967295;for(let n=0;n<e.length;n++)r=t[(r^e[n])&255]^r>>>8;return(4294967295^r)>>>0},vin=e=>{throw Cft(fch,`Native gzip produced invalid output: ${e}`)},bch=async(e,t)=>{e.size<18&&vin("too-short");let r=new Uint8Array(await e.slice(0,10).arrayBuffer());(!gch(r)||r[2]!==hch)&&vin("invalid-header");let n=new DataView(await e.slice(e.size-8).arrayBuffer());n.getUint32(0,!0)!==ych(t)&&vin("invalid-crc");let i=t.length>>>0;n.getUint32(4,!0)!==i&&vin("invalid-size")};async function YHt(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 bch(c,n),c}catch(n){if(r?.rethrow)throw n;return t&&console.error("Failed to gzip compress data",n),null}}var _8=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 eXo(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 bol=(e,t)=>{for(let r of Object.keys(t))(r.startsWith("$feature/")||r==="$active_feature_flags")&&(e[r]=t[r])};async function hol(e){if(e instanceof _8){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 Ech(e){return typeof e=="object"&&(e instanceof _8||Eol(e))}function Eol(e){return e instanceof qhe}function Ich(e){if(e instanceof _8)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 gol=10485760;function Aol(e){try{return typeof e!="string"?e instanceof Uint8Array?e.byteLength:e.size:"u">typeof Buffer?Buffer.byteLength(e,Hil):new TextEncoder().encode(e).length}catch{return 0}}function wft(e){return typeof e=="object"&&e instanceof _8&&e.status===413}function Cin(e){return e instanceof _8?e.status===408||e.status===429||e.status>=500:Eol(e)}function yol(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var gXo="default",XHt=class{getErrorPropertiesBuilder(){return this._errorPropertiesBuilder||(this._errorPropertiesBuilder=this.createErrorPropertiesBuilder()),this._errorPropertiesBuilder}createErrorPropertiesBuilder(){return new _Ht([new UHt,new GHt,new VHt,new qHt],sXo())}getEvaluationRuntime(){}constructor(t,r={}){this.flushPromise=null,this.pendingFlushPromise=null,this.flushPromises=new Set,this._dequeuedMessagesCount=0,this.shutdownPromise=null,this.promiseQueue=new uin,this._events=new Iin,this._isInitialized=!1;let n=typeof t=="string"?t.trim():"",i=typeof r.host=="string"?r.host.trim():"",o=!n;this._logger=Dil("[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=Kil(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:Cin},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=!hXo()||(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 bol(n,r),t.event==="$feature_flag_called"&&n.$feature_flag_has_experiment===!1&&this.isMinimalFlagCalledEventsEnabled()&&(n=KHt(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:Ich},this.featureFlagsRequestTimeoutMs).then(d=>({success:!0,response:mXo(d)})).catch(d=>(this._events.emit("error",d),{success:!1,error:this.categorizeRequestError(d)}))}categorizeRequestError(t){if(t instanceof _8)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=HHt(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 gXo}persistedQueueKeyForRoute(t){return OM.Queue}getActiveQueueRoutes(){return[gXo]}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=yol(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:tXo(),uuid:g5e(r?.uuid,jN)};return(r?.disableGeoip??this.disableGeoip)&&(yol(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 hol(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(()=>LHt([r])).then(()=>(this.pendingFlushPromise===i&&(this.pendingFlushPromise=null),this._flush()));return this.pendingFlushPromise=i,this.flushPromise=i,this.flushPromises.add(i),this.addPendingPromise(i),LHt([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 YHt(t,this.isDebug)}getBatchEndpointPath(t){return"/batch/"}async sendBatch(t,r,n=gXo){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:tXo()};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:Cin(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=Aol(i);if(o>gol)return this.logMsgIfDebug(()=>console.warn(`[PostHog] Not sending a ${t} batch of ${o} bytes: the endpoint accepts at most ${gol}`)),{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 _8&&l.retryAfterMs!==void 0?!1:Cin(l)}),{kind:"ok"}}catch(l){if(wft(l))return{kind:"too-large"};if(Cin(l)){let p=l instanceof _8?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=Aol(s),c={...this._retryOptions,...i},u=0;return await Jil(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 _8(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 _8&&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(!Ech(i))throw i;await hol(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 Sch=/[a-z][a-z0-9+.-]{0,63}:[^\s<>"]+/gi;var yWv=new RegExp(Sch.source,"i"),Iol=/[a-z][a-z0-9+.-]{0,63}:\/\//i,bWv=new RegExp(`^${Iol.source}`,"i"),EWv=new RegExp(Iol.source,"gi");var Tch=["is_not","is_set"],Och=1152921504606847e3,Zu=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Object.setPrototypeOf(this,e.prototype)}};function AXo(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(!AXo(t in e?e[t]:null))return!1;return!0}function yXo(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(!yXo(t in e?e[t]:null))return!1;return!0}function ZHt(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 win(e,t=new Set){if(!(e===null||typeof e=="boolean")){if(typeof e=="string")return void ZHt(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&&win(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))ZHt(n),win(e[n],t)}finally{t.delete(e)}return}throw new Zu(`Cannot represent ${typeof e} like the flags service`)}}function Pch(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 bXo(e,t=new Set){if(e===null)return"null";if(typeof e=="string")return ZHt(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?bXo(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(ZHt),`{${n.sort(Pch).map(i=>`${JSON.stringify(i)}:${bXo(e[i],t)}`).join(",")}}`}finally{t.delete(e)}}throw new Zu(`Cannot stringify ${typeof e} like the flags service`)}function xin(e){return typeof e=="string"?(ZHt(e),e):bXo(e)}function vol(e){try{return new RegExp(e),!0}catch{return!1}}function U8(e){return String(e).replace(/[A-Z]/g,t=>t.toLowerCase())}function xol(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:xol(s,e,t);return[o(i[0]),o(i[1]),o(i[2])]}function V8(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 Bch(e,t){let r=XS(e,t);return{lower:[r[0],r[1],r[2]],upper:[r[0],r[1]+1,0]}}function Rch(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 Dch(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 xol(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 Col(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 EXo(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 IXo(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&&!Tch.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&&AXo(p)||Array.isArray(p)&&p.length===0)return win(d),yXo(p)===yXo(d);if(r.propertyMatchingVersion===2&&typeof d=="number"&&AXo(p))return win(d),!1;if(Array.isArray(p)){let f=xin(d).toLowerCase();return p.some(m=>xin(m).toLowerCase()===f)}return xin(p).toLowerCase()===xin(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 U8(c).includes(U8(i));case"not_icontains":return!U8(c).includes(U8(i));case"starts_with":return U8(c).startsWith(U8(i));case"not_starts_with":return!U8(c).startsWith(U8(i));case"ends_with":return U8(c).endsWith(U8(i));case"not_ends_with":return!U8(c).endsWith(U8(i));case"regex":return vol(String(i))&&String(c).match(String(i))!==null;case"not_regex":return vol(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=EXo(String(i));p==null&&(p=Col(i));let d=Col(c);return o==="is_date_before"?d<p:d>p}case"semver_eq":return V8(XS(String(c),s),XS(String(i),s))===0;case"semver_neq":return V8(XS(String(c),s),XS(String(i),s))!==0;case"semver_gt":return V8(XS(String(c),s),XS(String(i),s))>0;case"semver_gte":return V8(XS(String(c),s),XS(String(i),s))>=0;case"semver_lt":return V8(XS(String(c),s),XS(String(i),s))<0;case"semver_lte":return V8(XS(String(c),s),XS(String(i),s))<=0;case"semver_tilde":{let p=XS(String(c),s),{lower:d,upper:f}=Bch(String(i),s);return V8(p,d)>=0&&V8(p,f)<0}case"semver_caret":{let p=XS(String(c),s),{lower:d,upper:f}=Rch(String(i),s);return V8(p,d)>=0&&V8(p,f)<0}case"semver_wildcard":{let p=XS(String(c),s),{lower:d,upper:f}=Dch(String(i),s);return V8(p,d)>=0&&V8(p,f)<0}default:throw new Zu(`Unknown operator: ${o}`)}}async function wol(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 $Ht(e,t,r="",n="."){let i=await wol(`${e}${n}${t}${r}`);return parseInt(i.slice(0,15),16)/Och}async function vXo(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 $Ht("holdout",t,"","-")>n/100))return`holdout-${e.id}`}function Sin(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 CXo(e,t,r){let n=await $Ht(e,t,"variant");return Sin(r).find(i=>n>=i.valueMin&&n<i.valueMax)?.key}function xXo(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 Sol=9223372036854776e3,kch="9223372036854775808",Fch=Object.prototype.propertyIsEnumerable;function Nch(){return{ancestors:new WeakSet,remainingNodes:1e4}}function gne(e,t){try{return Tol(e,t,Nch(),0)}catch{return[]}}function jch(e,t){let r=e.toString(),n=BigInt(kch);return e>=n||e<-n?(t?.debug(`Attribute ${r} is outside the int64 range; encoding it as a string`),{stringValue:r}):{intValue:r}}function TXo(e,t,r,n){if(r.remainingNodes<=0)return{stringValue:hin};if(r.remainingNodes--,xil(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>=Sol||e<-Sol?(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:Wil};if(typeof e=="symbol")return{stringValue:String(e)};if(typeof e=="object"&&e!==null){if(r.ancestors.has(e))return{stringValue:min};if(n>=20)return{stringValue:hin};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 TXo(i.call(e),t,r,n+1)}catch{}return V4(e)?{arrayValue:{values:zch(e,t,r,n+1)}}:{kvlistValue:{values:Tol(e,t,r,n+1)}}}finally{r.ancestors.delete(e)}}return{stringValue:mne(String(e))}}function zch(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(NJ(a))continue;i.push(TXo(a,t,r,n))}catch{i.push({stringValue:L8})}return e.length>s&&i.push({stringValue:hin}),i}function Tol(e,t,r,n){let i=[];for(let o in e)if(Fch.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(WYo(s)||Vhe(s))continue;i.push({key:mne(o),value:TXo(s,t,r,n)})}catch{i.push({key:mne(o),value:{stringValue:L8}})}}return i}function tKt(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 Qch=["service.name","deployment.environment","service.version","telemetry.sdk.name","telemetry.sdk.version"];function rKt(e,t){let r=Ghe({},e),n={};for(let i of Qch)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i],delete r[i]);return[...gne(r,t),...gne(n,t)]}var Ool={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 Mch(e){if(e)return Object.prototype.hasOwnProperty.call(Ool,e)?Ool[e]:e}function OXo(e,t){let r=Mch(e);return{...r?{"os.name":r}:{},...t?{"os.version":t}:{}}}var Lch={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}},jWv=Lch.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 nKt(){return 1-.25+Math.random()*.25*2}var G8=1;function iKt(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 oKt=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function PXo(e){return String(e)+"000000"}function BXo(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 Pol(e,t){for(let r=0;r<t.length;r++)if(e<=t[r])return r;return t.length}function RXo(e,t,r){return tKt(e,t,r)}function DXo(e,t,r,n){return{resourceMetrics:[{resource:{attributes:rKt(t)},scopeMetrics:[{scope:{name:r,version:n},metrics:e}]}]}}function Oin(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 Bol=1,sKt=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=G8,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=G8,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=BXo(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(oKt.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[Pol(r,oKt)]+=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(iKt(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=nKt()):(this._consecutiveFlushFailures=0,this._flushJitter=G8),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 DXo(this._buildMetrics(t),RXo(this._config,this._instance.getLibraryId(),this._instance.getLibraryVersion()),this._instance.getLibraryId(),this._instance.getLibraryVersion())}_buildMetrics(t){let r=PXo(Date.now()),n=new Map;for(let i of t.values()){let o=BXo(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:Bol,isMonotonic:!0,dataPoints:[]}:i.type==="gauge"?s.gauge={dataPoints:[]}:s.histogram={aggregationTemporality:Bol,dataPoints:[]},n.set(o,s));let a=gne(i.attributes??{},this._logger),c=PXo(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:oKt};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 Gch="0".repeat(32),qch="0".repeat(16),Wch=/^[0-9a-f]+$/;function Hch(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 Kch(e){let t="";for(let r=0;r<e.length;r++)t+=e[r].toString(16).padStart(2,"0");return t}function Rol(e){let t=Kch(Hch(e));return/[^0]/.test(t)?t:t.slice(0,-1)+"1"}function Dol(){return Rol(16)}function kol(){return Rol(8)}function Fol(e,t,r){return typeof e=="string"&&e.length===t&&e!==r&&Wch.test(e)}function Nol(e){return Fol(e,32,Gch)}function jol(e){return Fol(e,16,qch)}var Jch=/^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})(-.*)?$/;function zol(e){let t=Qol(e);return t&&{traceId:t.traceId,spanId:t.spanId,flags:Ych(t.flags)}}function Ych(e){return 1&parseInt(e,16)?Bin:Xch}function Qol(e){if(typeof e!="string")return;let t=Jch.exec(e.trim());if(!t)return;let[,r,n,i,o,s]=t;if(r!=="ff"&&!(r==="00"&&s)&&!(!Nol(n)||!jol(i)))return{version:r,traceId:n,spanId:i,flags:o}}function Mol(e){return Qol(e)&&e.trim()}function Pin(e){return Array.isArray(e)&&e.length===1?e[0]:e}var Bin="01",Xch="00";function Lol(e,t,r=Bin){return`00-${e}-${t}-${r}`}var Zch=32,kXo=512;function Rin(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>Zch)){for(let n of r)if(n.trim()&&!n.includes("="))return;return t.length<=kXo?t:euh(r)}}var $ch=128;function euh(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()>kXo;n--)t[n].length>$ch&&t.splice(n,1);for(;t.length&&r()>kXo;)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 Uol(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 Din(e,t){return e<t?t:e}function aKt(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 Fin(){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??Bin,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:Fin(),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=Fin();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(NJ(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]=jin(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&&Wol(r,this._maxAttributesPerEvent,this._maxAttributeValueLength);this._events.push({name:y5e(t,"Span event name",this._maxAttributeValueLength,this._logger),timestamp:aKt(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:FXo(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}=NXo(t);return this.addEvent(tuh,{"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 Lol(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=aKt(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:Din(n,this._startTime),...this._droppedAttributes&&{droppedAttributesCount:this._droppedAttributes},...this._droppedEvents&&{droppedEventsCount:this._droppedEvents}},this._autoKeys)}},tuh="exception",ruh=4294967295;function nuh(e){try{return typeof e=="string"?e:String(e)}catch{return L8}}function b5e(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?0:Math.min(Math.floor(e),ruh)}function iuh(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 Gol(e,t,r,n,i,o,s=[]){let a=0,c=0,u={};for(let f of iuh(e.attributes,s)){let m=e.attributes[f];if(!NJ(m)){if(!t.has(f)){if(a>=r){c++;continue}a++}Object.defineProperty(u,f,{value:jin(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=Wol(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:FXo(nuh(e.status.message),o)})}var Nin=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(){}},qol=new Nin,cKt=class extends Nin{constructor(t,r){super(),this._traceparent=t,this._tracestate=r}traceparent(){return this._traceparent}tracestate(){return this._tracestate??null}};function ouh(e){try{let t=e.stack;return typeof t=="string"&&t?{stack:t}:{}}catch{return{}}}function f1e(e,t){let r=Pin(e?.parent)??t,n=typeof r=="string"||r==null?r:Vol(r,"traceparent"),i=Mol(n);if(!i)return qol;let o=typeof r=="string"||r==null?e?.tracestate:Vol(r,"tracestate");return new cKt(i,Rin(o))}function Vol(e,t){try{let r=e[t];return typeof r=="function"?r.call(e):void 0}catch{return}}function FXo(e,t){return e.length>t?e.slice(0,t):e}function jin(e,t){return kin(e,t,{ancestors:new WeakSet,remainingNodes:1e4},0)}function kin(e,t,r,n){if(e===null||typeof e!="object")return NJ(e)||r.remainingNodes<=0?e:(r.remainingNodes--,typeof e=="string"?FXo(e,t):e);if(r.ancestors.has(e))return min;if(r.remainingNodes<=0||n>=20)return e;r.remainingNodes--,r.ancestors.add(e);try{if(e instanceof Date)return e;let i=suh(e);if(i.selfDescribed)return NJ(i.value)?String(i.value):kin(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(kin(e[u],t,r,n+1))}catch{c.push(L8)}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=kin(e[a],t,r,n+1)}catch{c=L8}a&&!NJ(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 suh(e){try{let t=e.toJSON;if(typeof t=="function")return{selfDescribed:!0,value:t.call(e)}}catch{}return{selfDescribed:!1}}function Wol(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=jin(e[a],r)}catch{c=L8}NJ(c)||(o++,Object.defineProperty(i,a,{value:c,enumerable:!0,writable:!0,configurable:!0}))}return{attributes:i,dropped:s}}function Hol(e,t){for(let r of Object.keys(e))e[r]=jin(e[r],t);return e}function uKt(e,t,r){return t===qol?r(t):e.with(t,()=>r(t))}function NXo(e){try{let t=ouh(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 jXo={internal:1,server:2,client:3,producer:4,consumer:5},auh={ok:1,error:2},cuh=1,uuh=256,luh=512;function puh(e){let t=parseInt(e.traceFlags,16);return(Number.isFinite(t)?255&t:cuh)|uuh|(e.parentIsRemote?luh:0)}function zin(e){if(typeof e=="string")return mne(e);try{return mne(String(e))}catch{return L8}}function fuh(e){return e&&Object.prototype.hasOwnProperty.call(jXo,e)?jXo[e]:jXo.internal}function zXo(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 duh(e,t){let r={name:zin(e.name),timeUnixNano:zXo(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 Kol(e,t){let r={traceId:e.traceId,spanId:e.spanId,name:zin(e.name),kind:fuh(e.kind),startTimeUnixNano:zXo(e.startTime),endTimeUnixNano:zXo(e.endTime),flags:puh(e)};e.parentSpanId&&(r.parentSpanId=e.parentSpanId),e.traceState&&(r.traceState=zin(e.traceState));let n=gne(e.attributes,t);n.length&&(r.attributes=n),e.events.length&&(r.events=e.events.map(s=>duh(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:auh[e.status.code],...e.status.message&&{message:zin(e.status.message)}}),r}function Jol(e,t,r){return tKt(e,t,r)}function Yol(e,t,r,n,i){return{resourceSpans:[{resource:{attributes:rKt(t,i)},scopeSpans:[{scope:{name:r,version:n},spans:e}]}]}}var Xol=8;function Qin(){return Fin()??Date.now()}function QXo(e){try{return e instanceof Tft}catch{return!1}}function Zol(e,t){let r=zol(e);if(r)return{traceId:r.traceId,parentSpanId:r.spanId,traceState:Rin(t),traceFlags:r.flags,isRemote:!0}}function muh(e){try{return typeof e.traceparent=="function"}catch{return!1}}function huh(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 Min(e,t,r){e[t]!==r&&(e[t]=r)}function guh(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 lKt=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=G8,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=Pin(r?.parent);if(n&&typeof n!="string"&&!QXo(n)){if(muh(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=Uol(r?.startTime,o,this._logger),a=kol();this._liveSpans.set(a,Qin());let c=this._autoContextAttributes();return new Tft({traceId:i?.traceId??Dol(),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=uKt(this._contextManager,s,o);return Yil(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=G8,this._retryAfter.reset(),this._resetHeadBatchBudget()}_resetHeadBatchBudget(){this._headBatchFailures=0,this._headBatchChargeableAt=0}_resolveParent(t,r){if(typeof t=="string"){let i=Zol(t,r?.tracestate);return i||this._logger.debug("Ignoring malformed traceparent; starting a new trace"),i}if(QXo(t))return t.childContext();let n=this._contextManager.active();if(QXo(n))return n.childContext();if(n instanceof cKt)return Zol(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}=NXo(r);t.addEvent("exception",{"exception.type":n,"exception.message":i,...o&&{"exception.stacktrace":o}}),t.statusIsExplicitlyOk||t.setStatus("error",i)}_evictAgedSpans(){let t=Qin()-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},!huh(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=Din(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:aKt(f.timestamp,l.startTime,"event timestamp",this._logger)})}catch{this._logger.debug("beforeSpanSend left an unreadable span event; dropping it")}return l.events=d,Gol(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{Min(t,"traceId",r.traceId),Min(t,"spanId",r.spanId),Min(t,"parentSpanId",r.parentSpanId),Min(t,"traceState",r.traceState)}catch{return guh(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(Kol(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=Hol(Jol(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=Qin()>=this._headBatchChargeableAt&&!this._retryAfter.isOpen(),g=await this._instance._sendTracesBatch(Yol(f,r,n,i,this._logger));if(c!==this._generation)break;if(this._retryAfter.record(g),g.kind==="ok"){this._consecutiveFlushFailures=0,this._flushJitter=G8,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=G8,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=nKt(),this._headBatchSize=p,m&&(this._headBatchFailures++,this._headBatchChargeableAt=Qin()+this._nextFlushDelay()),this._headBatchFailures<Xol)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=G8,this._resetHeadBatchBudget(),this._recordDrop(p,`the ingestion endpoint failed ${Xol} 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=G8,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(iKt(this._config.flushIntervalMs,this._consecutiveFlushFailures,this._flushJitter,3e4),this._retryAfter.remainingMs())}};var pKt=class{active(){return this._active}with(t,r){let n=this._active;this._active=t;try{return r()}finally{this._active=n}}};var Auh=5e3,yuh=512,buh=2048,Euh=128,Iuh=128,vuh=128,Cuh=8192,xuh=1e4,wuh=36e5;function d1e(e,t){return typeof e=="number"&&Number.isInteger(e)&&e>=1?e:t}var $ol=["service.name","service.version","deployment.environment"];function Suh(e){if(!(!e||typeof e!="object"||Array.isArray(e)))try{if($ol.every(r=>!(r in e)||typeof e[r]=="string"))return e;let t={...e};for(let r of $ol)r in t&&typeof t[r]!="string"&&delete t[r];return t}catch{return}}function Tuh(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 MXo(e,t,r){let n=Ghe({...t},Suh(e?.resourceAttributes)),i=d1e(e?.maxExportBatchSize,yuh);return{serviceName:n?.["service.name"]??e?.serviceName,serviceVersion:n?.["service.version"]??e?.serviceVersion,environment:n?.["deployment.environment"]??e?.environment,resourceAttributes:n,beforeSpanSend:Tuh(e?.beforeSpanSend,r),maxAttributesPerSpan:d1e(e?.maxAttributesPerSpan,Euh),maxEventsPerSpan:d1e(e?.maxEventsPerSpan,Iuh),maxAttributesPerEvent:vuh,maxAttributeValueLength:d1e(e?.maxAttributeValueLength,Cuh),flushIntervalMs:d1e(e?.flushIntervalMs,Auh),maxExportBatchSize:i,maxQueueSize:Math.max(d1e(e?.maxQueueSize,buh),i),maxLiveSpans:d1e(e?.maxLiveSpans,xuh),maxSpanAgeMs:d1e(e?.maxSpanAgeMs,wuh)}}var LXo=require("fs"),rsl=require("fs/promises"),UXo=require("path"),nsl=require("readline"),Lin=new nO.ReduceableCache(25),fKt=new nO.ReduceableCache(20),VXo=7,Ouh=1e3,Puh=1e4,_Xo=10485760;async function isl(e,t=rsl.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"||Fuh(u)||Nuh(c)||!(0,UXo.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=osl(a,i);if(c===void 0||fKt.get(c))continue;let u=n[a];if(!u)continue;u.sort((d,f)=>d-f);let l=zuh(u);if(l.every(d=>juh(c,d)))continue;let p=Quh(Lin,c,{});s.push(Ruh(a,l,p,c,t,r))}return await Promise.all(s).catch(()=>{}),e&&e.length>0&&Duh(e,Lin,i),Lin.reduce(),e}async function Buh(e,t,r){let n,i=!1;try{n=await t(e,LXo.constants.O_RDONLY|LXo.constants.O_NONBLOCK);let o=await n.stat();return o.isFile()?o.size>_Xo?void r?.debug(`Skipping source context for oversized file ${e}: ${o.size} bytes exceeds ${_Xo}`):(i=!0,n):void 0}catch{return}finally{n&&!i&&await n.close().catch(()=>{})}}async function Ruh(e,t,r,n,i,o){let s=await Buh(e,i,o);if(s===void 0)return void fKt.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:_Xo-1})}catch{fKt.set(n,1),l();return}let d;try{d=(0,nsl.createInterface)({input:p})}catch{fKt.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(){fKt.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]=Muh(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 Duh(e,t,r){for(let n of e)if(n.filename&&n.context_line===void 0&&typeof n.lineno=="number"){let i=osl(n.filename,r),o=i===void 0?void 0:t.get(i);if(o===void 0)continue;kuh(n.lineno,n,o)}}function kuh(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=ssl(e);i<e;i++){let o=r[i];if(o===void 0)return void esl(t);t.pre_context.push(o)}if(r[e]===void 0)return void esl(t);t.context_line=r[e];let n=asl(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 esl(e){delete e.pre_context,delete e.context_line,delete e.post_context}function Fuh(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function Nuh(e){return e.lineno!==void 0&&e.lineno>Puh||e.colno!==void 0&&e.colno>Ouh}function osl(e,t){return(0,UXo.isAbsolute)(e)?JSON.stringify([null,e]):t===void 0?void 0:JSON.stringify([t,e])}function juh(e,t){let r=Lin.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 zuh(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=tsl(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+VXo:(i.push(n),n=tsl(o)),t++}return i}function tsl(e){return[ssl(e),asl(e)]}function ssl(e){return Math.max(1,e-VXo)}function asl(e){return e+VXo}function Quh(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function Muh(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 csl(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 usl="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 Luh=6e4;function lsl(e){return e==="client"||e==="server"?e:"all"}function _uh(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 Uuh(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),Uuh(this,e)}},_in=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=xXo(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 vXo(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 fsl(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):psl(u,i,c,s.propertyMatchingVersion);if(!p)return"no_match"}if(a==null)return"match"}return a!=null&&await $Ht(t.key,r)>a/100?"out_of_rollout_bound":"match"}async getMatchingVariant(t,r){return CXo(t.key,r,t.filters?.multivariate?.variants||[])}variantLookupTable(t){return Sin(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?lsl(r.evaluation_runtime):void 0}getFlagKeysByEvaluationRuntime(t){return this.featureFlags.filter(r=>_uh(lsl(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(Luh,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 psl(e,t,r,n){return IXo(e,t,{warnFunction:r,propertyMatchingVersion:n})}function Vuh(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 fsl(e,t,r,n=!1,i,o){let s=String(e.value);Vuh(s,r);let a=r[s];return dsl(a,t,r,n,i,o)}async function dsl(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 dsl(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 fsl(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=psl(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 Guh=["--unhandled-rejections","--unhandled_rejections"],quh=new Set(["throw","strict","warn","warn-with-error-code","none"]),Wuh=[...globalThis.process?.execArgv??[]],Huh=globalThis.process?.env?.NODE_OPTIONS;function Kuh(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 msl(e){let t;for(let r=0;r<e.length;r++){let n=e[r],i=Guh.find(s=>n===s||n.startsWith(`${s}=`));if(!i)continue;let o=n===i?e[++r]:n.slice(i.length+1);quh.has(o)&&(t=o)}return t}function Juh(e=Wuh,t=Huh){return msl(e)??msl(Kuh(t??""))??"throw"}var hsl=Juh();function gsl(e,t,r){e(t,{mechanism:{type:r==="unhandledRejection"?"onunhandledrejection":"onuncaughtexception",handled:!1}})}function Yuh(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;gsl(e,n,i),!r&&o===0&&(r=!0,t(n))},{_posthogErrorHandler:!0})}function Asl(e,t,r=hsl){let n=globalThis.process;if(n){if(r==="strict")return void n.on("uncaughtExceptionMonitor",(i,o)=>gsl(e,i,o));n.on("uncaughtException",Yuh(e,t))}}function ysl(e,t=hsl){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 Xuh=2e3,GXo=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new sin({...Pil(r),refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return zHt(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()&&(Asl(this.onException.bind(this),this.onFatalError.bind(this)),ysl(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(Xuh),globalThis.process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}},E5e=GXo;var Uin=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};function Zuh(e){return e==="v0"||e==="v1"}function bsl(){let e="u">typeof process?process.env?.POSTHOG_CAPTURE_MODE:void 0;return Zuh(e)?e:"v0"}var $uh="$ai_",dKt="analytics";function Esl(e){return typeof e.event=="string"&&e.event.startsWith($uh)}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 qXo(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 elh(e){return typeof e=="string"?e:void 0}var tlh=[{property:"$cookieless_mode",optionKey:"cookieless_mode",coerce:qXo},{property:"$ignore_sent_at",optionKey:"disable_skew_correction",coerce:qXo},{property:"$process_person_profile",optionKey:"process_person_profile",coerce:qXo},{property:"$product_tour_id",optionKey:"product_tour_id",coerce:elh}],rlh=[{property:"$session_id",field:"session_id"},{property:"$window_id",field:"window_id"}];function nlh(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ilh(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 Isl(e,t,r){r!==void 0&&!(t in e)&&(e[t]=r)}function olh(e){let r={...nlh(e.properties)?e.properties:{}},n={};for(let{property:o,optionKey:s,coerce:a}of tlh)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 rlh)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,Isl(r,"$set",e.$set),Isl(r,"$set_once",e.$set_once),{event:String(e.event??""),uuid:String(e.uuid??""),distinct_id:String(e.distinct_id??""),timestamp:ilh(e.timestamp),...i,options:n,properties:r}}function vsl(e,{createdAt:t,historicalMigration:r}){let n={created_at:t,batch:e.map(olh)};return r&&(n.historical_migration=!0),n}var slh="/i/v1/analytics/events",alh=3e4,clh=new Set([408,500,502,503,504]),Vin=class{constructor(t,r){this.config=t,this.maxBackoffMs=t.maxBackoffMs??alh,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??YHt}async sendV1Batch(t){if(t.length===0)return;let r=this.generateRequestId(),n=new Date(this.now()).toISOString(),{batch:i}=vsl(t,{createdAt:n,historicalMigration:this.config.historicalMigration}),o=`${this.config.host}${slh}`,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&&clh.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",Gin="/i/v0/ai/batch/";var llh=new TextEncoder;function HXo(e){return llh.encode(u1e(e)).length}function Csl(e,t=8388608,r=5242880){let n=[],i=[],o=[],s=0;for(let a of e){if(a===void 0)continue;let c=HXo(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 plh=100,xsl=3e4,flh=5e4,dlh=50,mlh=500,hlh="https://us.i.posthog.com",wsl=new Set;function Win(e,t){wsl.has(e)||(wsl.add(e),console.warn(`[PostHog] ${t}`))}function glh(e){return typeof e=="string"?e.trim():""}function Alh(e){return(typeof e=="string"?e.trim():"")||void 0}function ylh(e){return(typeof e=="string"?e.trim():"")||hlh}function blh(e){return(Array.isArray(e)?e:[e]).filter(r=>typeof r=="string"&&r.trim().length>0)}function Elh(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 Hin=class extends XHt{constructor(t,r={}){let n=glh(t),i={...r,maxQueueSize:r.maxQueueSize??1e4,flushInterval:r.flushInterval??5e3,host:ylh(r.host),personalApiKey:Alh(r.secretKey??r.personalApiKey)};if(super(n,i),this._memoryStorage=new Uin,this._aiCaptureRouteActive=!1,this._minimalFlagCalledEvents=!1,this.options=i,this.captureMode=bsl(),this.enableFullAiCapture=i.enableFullAiCapture===!0,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof i.featureFlagsPollingInterval=="number"?Math.max(i.featureFlagsPollingInterval,plh):i.featureFlagsPollingInterval===null?null:xsl,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 _in({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||flh}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:LHt([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??mlh,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??dlh;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"&&Esl(t)?"ai":dKt}persistedQueueKeyForRoute(t){return t===I5e?OM.AiCaptureQueue:t==="ai"?OM.AiQueue:OM.Queue}getActiveQueueRoutes(){let t=this.captureMode==="v1"?[dKt,"ai"]:[dKt];return this._aiCaptureRouteActive&&t.push(I5e),t}getBatchEndpointPath(t){return t===I5e?Gin:super.getBatchEndpointPath(t)}async sendBatch(t,r,n=dKt){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}=Csl(t);for(let{event:o,bytes:s}of i){let a=`Event ${o} (${s} bytes) exceeds the ${8388608/1048576}MiB limit for ${Gin}, 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"} (${HXo(o)} bytes) was rejected with 413 by ${Gin} 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 Vin({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 usl}get metrics(){return this._metrics||(this._metrics=new sKt(this,Oin(this.options.metrics),this._logger)),this._metrics}initializeSpanContextManager(){return new pKt}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 lKt(this,MXo(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):uKt(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=blh(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=xsl){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){Win("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(Win("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){Win("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(Sil(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)?KHt(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){Win("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 Elh(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"&&Oil(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 Ssl=require("async_hooks"),Kin=class{constructor(){this.storage=new Ssl.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 Tsl=require("async_hooks"),Jin=class{active(){return this._storage.getStore()}with(t,r){return this._storage.run(t,r)}constructor(){this._storage=new Tsl.AsyncLocalStorage}};var Osl=require("zlib"),Psl=require("util"),Ilh=(0,Psl.promisify)(Osl.gzip);async function Bsl(e,t=!0){try{let r=await Ilh(e);return new Uint8Array(r)}catch(r){return t&&console.error("Failed to gzip compress data",r),null}}var Yin=require("os");function Rsl(){let e,t;try{e=(0,Yin.platform)(),t=(0,Yin.release)()}catch{}return OXo(e,t)}var Dsl="posthog-node";function vlh(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[KXo.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 KXo=class{static{this.POSTHOG_ID_TAG="posthog_distinct_id"}constructor(t,r,n,i,o){this.name=Dsl,this.name=Dsl,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(vlh(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};var yne=class extends Hin{getLibraryId(){return"posthog-node"}compressPayload(t){return Bsl(t,this.isDebug)}initializeContext(){return new Kin}initializeSpanContextManager(){return new Jin}hostResourceAttributes(){return Rsl()}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),[Iil(),t=>isl(t,void 0,this._logger),csl()])}};function ksl(e){return e==null||!e.enabled?!1:e.variant==null||e.variant==="true"}var Xin=class{isEnabled(){return Promise.resolve(!1)}getCachedValue(){}flush(){return Promise.resolve()}},Clh="feature_flag_evaluated",xlh=3e3,wlh=3e3,Zin=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:xlh,isServer:!1})}isEnabled(t,r){let n=Fsl(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(Fsl(t,r))}async flush(){if(!this.sendFeatureFlagEvents)return;let t;try{await Promise.race([this.flushAfterPendingEvaluations(),new Promise(r=>{t=setTimeout(r,wlh),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=Tlh(r,this.environment),o;try{o=await this.evaluator.getFeatureFlagResult(t,JXo(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}),ksl(o)}captureFlagUsage({flag:t,org:r,result:n,properties:i}){let o=Slh(n),s={...i,...n?.reason!=null?{$feature_flag_reason:n.reason}:{},version:"5.165.0"};this.tryCapture({distinctId:JXo(r),event:"$feature_flag_called",groups:{organization:r},properties:{...s,$feature_flag:t,$feature_flag_response:o,[`$feature/${t}`]:o}}),this.tryCapture({distinctId:JXo(r),event:Clh,groups:{organization:r},properties:{...s,flag:t,response:o,enabled:ksl(n)}})}tryCapture(t){try{this.evaluator.capture(t)}catch{}}};function Slh(e){if(e!=null)return e.enabled?e.variant??!0:!1}function JXo(e){return`org:${e}`}function Tlh({org:e,generator:t,language:r},n){return{org:e,environment:n,...t!=null?{generator:t}:{},...r!=null?{language:r}:{}}}function Fsl(e,{org:t,generator:r,language:n}){return JSON.stringify([e,t,r??null,n??null])}var $in;function eon(){return $in==null&&($in=Olh()),$in}async function YXo(){await $in?.flush()}function Olh(){let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal";return e==null||e.trim().length===0?new Xin:new Zin({posthogApiKey:e,environment:FJ(),sendFeatureFlagEvents:rin()})}var ton=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.165.0",usingAccessToken:!0,cliReleaseEnvironment:FJ(),...Ppe()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:{...t.properties,cliReleaseEnvironment:FJ()}})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var mKt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};kd();er();var Rft=require("fs/promises"),Nsl=require("os"),jsl=require("path");iVe();var Plh="id",Blh=".fern",hKt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new yne(r,{isServer:!1}),this.userId=t==null?void 0:_9o(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.165.0",...t,...t.properties,usingAccessToken:!1,cliReleaseEnvironment:FJ(),agent:rHr(),...r!=null?{userEmail:r}:{},...Ppe()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:{...t.properties,cliReleaseEnvironment:FJ()}})}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,Nsl.homedir)()),be.of(Blh),be.of(Plh));try{await Ut(r)?this.persistedDistinctId=(await(0,Rft.readFile)(r)).toString():(await(0,Rft.mkdir)((0,jsl.dirname)(r),{recursive:!0}),await(0,Rft.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var XXo;async function gKt(){return XXo==null&&(XXo=await Rlh()),XXo}async function Rlh(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal";if(e==null||!rin())return new mKt;let t=await Ult();return t!=null?new hKt({token:t,posthogApiKey:e}):await EM()!=null?new ton({posthogApiKey:e}):new hKt({token:void 0,posthogApiKey:e})}catch{return new mKt}}On();Ct();kt();h8();var AKt=Ae(require("process"),1);sZe();var Msl=Ae(A3o(),1),Lsl=Ae(Qsl(),1);function iO(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=uH(e),e.length===0))return 0;e=e.replace((0,Lsl.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(Msl.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}On();function ron(e){let t=0;for(let r of e.split(`
|
|
3460
3460
|
`))t=Math.max(t,iO(r));return t}var sal=Ae($Xo(),1);var klh=/[\p{Lu}]/u,Flh=/[\p{Ll}]/u,Vsl=/^[\p{Lu}](?![\p{Lu}])/gu,Wsl=/([\p{Alpha}\p{N}_]|$)/u,eZo=/[_.\- ]+/,Nlh=new RegExp("^"+eZo.source),Gsl=new RegExp(eZo.source+Wsl.source,"gu"),qsl=new RegExp("\\d+"+Wsl.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&&klh.test(u)?(e=e.slice(0,c)+"-"+e.slice(c),i=!1,s=o,o=!0,c++):o&&s&&Flh.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},zlh=(e,t)=>(Vsl.lastIndex=0,e.replace(Vsl,r=>t(r))),Qlh=(e,t)=>(Gsl.lastIndex=0,qsl.lastIndex=0,e.replace(Gsl,(r,n)=>t(n)).replace(qsl,r=>t(r)));function tZo(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?eZo.test(e)?"":t.pascalCase?n(e):r(e):(e!==r(e)&&(e=jlh(e,r,n,t.preserveConsecutiveUppercase)),e=e.replace(Nlh,""),e=t.preserveConsecutiveUppercase?zlh(e,r):r(e),t.pascalCase&&(e=n(e.charAt(0))+e.slice(1)),Qlh(e,n))}var oZo=Ae(Ksl(),1);sZe();var Jsl=(e=0)=>t=>`\x1B[${t+e}m`,Ysl=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Xsl=(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]}},TJv=Object.keys(vE.modifier),Ulh=Object.keys(vE.color),Vlh=Object.keys(vE.bgColor),OJv=[...Ulh,...Vlh];function Glh(){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=Jsl(),vE.color.ansi256=Ysl(),vE.color.ansi16m=Xsl(),vE.bgColor.ansi=Jsl(10),vE.bgColor.ansi256=Ysl(10),vE.bgColor.ansi16m=Xsl(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 qlh=Glh(),Zsl=qlh;var non=new Set(["\x1B","\x9B"]),Wlh=39,nZo="\x07",tal="[",Hlh="]",ral="m",iZo=`${Hlh}8;;`,$sl=e=>`${non.values().next().value}${tal}${e}${ral}`,eal=e=>`${non.values().next().value}${iZo}${e}${nZo}`,Klh=e=>e.split(" ").map(t=>iO(t)),rZo=(e,t,r)=>{let n=[...t],i=!1,o=!1,s=iO(uH(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),non.has(c)&&(i=!0,o=n.slice(a+1).join("").startsWith(iZo)),i){o?c===nZo&&(i=!1,o=!1):c===ral&&(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())},Jlh=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("")},Ylh=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i,o,s=Klh(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(""),rZo(a,l,t);continue}if(p+s[u]>t&&p>0&&s[u]>0){if(r.wordWrap===!1&&p<t){rZo(a,l,t);continue}a.push("")}if(p+s[u]>t&&r.wordWrap===!1){rZo(a,l,t);continue}a[a.length-1]+=l}r.trim!==!1&&(a=a.map(u=>Jlh(u)));let c=[...a.join(`
|
|
3461
3461
|
`)];for(let[u,l]of c.entries()){if(n+=l,non.has(l)){let{groups:d}=new RegExp(`(?:\\${tal}(?<code>\\d+)m|\\${iZo}(?<uri>.*)${nZo})`).exec(c.slice(u).join(""))||{groups:{}};if(d.code!==void 0){let f=Number.parseFloat(d.code);i=f===Wlh?void 0:f}else d.uri!==void 0&&(o=d.uri.length===0?void 0:d.uri)}let p=Zsl.codes.get(Number(i));c[u+1]===`
|
|
3462
3462
|
`?(o&&(n+=eal("")),i&&p&&(n+=$sl(p))):l===`
|
|
@@ -4116,7 +4116,7 @@ ${tt.stack}`),!1}};await D();let O=w.apiWorkspaces.flatMap(Be=>Be.getAbsoluteFil
|
|
|
4116
4116
|
`)},ue=[],Pe,Ce=!1;z.on("all",(Be,We)=>{n.logger.info(me.dim(`[${Be}] ${We}`)),!Ce&&(ue.push(_t.of(We)),Pe!=null&&clearTimeout(Pe),Pe=setTimeout(()=>{(async()=>{Ce=!0;try{let tt=R.getFilesToReload(ue);await D(tt)&&await ae()}finally{ue.length=0,Ce=!1}})()},D5g))}),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 pEp(_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,Awi.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 M$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 pEp(o)}async function pEp(e){let t=De(e,be.of(F5g)),r=N5g;if(await Ut(t)){let i=JSON.parse(await(0,Awi.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 Q5g="_fern-files";function M5g({rendererPort:e,rendererHost:t,mirrorPort:r,basepath:n,reloadClients:i}){let o=`${n}/${Q5g}/`;return U2s.default.createServer((s,a)=>{if(s.url===dEp){a.writeHead(200,{"content-type":"text/event-stream","cache-control":"no-store",connection:"keep-alive"}),a.write(`: connected
|
|
4117
4117
|
|
|
4118
4118
|
`),i.add(a),s.on("close",()=>i.delete(a));return}let c=s.url!=null&&s.url.startsWith(o),u=U2s.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,[fEp]: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)}${lEp}${m.slice(g)}`:`${m}${lEp}`,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}
|
|
4119
|
-
`)}),s.pipe(u)})}function L5g(){return new Promise((e,t)=>{let r=V2s.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 _5g(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=V2s.default.connect(e,"127.0.0.1");c.once("connect",()=>{c.destroy(),i()}),c.once("error",()=>{c.destroy(),setTimeout(a,200)})};a()})}kt();var gEp=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,mEp="docs.buildwithfern.com",hEp=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)),gEp.test(t)}function AEp(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function sir({orgId:e,previewId:t}){let r=AEp(t),n=`${e}-preview-${r}.${mEp}`;if(n.length<=hEp)return n;let i=`${e}-preview-`,o=hEp-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}.${mEp}`}Ct();LI();Ah();er();d0();kt();On();var yNs=require("child_process"),BIp=Ae(bEp(),1),bNs=Ae(hwi(),1),ENs=Ae(require("fs"),1),vNs=require("fs/promises"),RIp=Ae(require("http"),1),DIp=Ae(require("os"),1),kwi=Ae(require("path"),1);dNs();LI();er();var mNs=require("fs/promises");async function hNs(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,mNs.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,mNs.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}),ae=await c_({markdown:Fe,absolutePathToFernFolder:c,absolutePathToMarkdownFile:Se,context:t,fileLoader:I}),ue=u_({markdown:ae,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 ce={...n,apis:ee,pages:x,config:{...n.config,root:v,announcement:B,navbarLinks:R}};r.set(m,ce),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 qW=require("fs/promises"),xIp=require("os"),ANs=Ae(require("path"),1),mGg=".fern",hGg="logs",gNs=100*1024*1024;function gGg(){return"cli@5.
|
|
4119
|
+
`)}),s.pipe(u)})}function L5g(){return new Promise((e,t)=>{let r=V2s.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 _5g(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=V2s.default.connect(e,"127.0.0.1");c.once("connect",()=>{c.destroy(),i()}),c.once("error",()=>{c.destroy(),setTimeout(a,200)})};a()})}kt();var gEp=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,mEp="docs.buildwithfern.com",hEp=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)),gEp.test(t)}function AEp(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function sir({orgId:e,previewId:t}){let r=AEp(t),n=`${e}-preview-${r}.${mEp}`;if(n.length<=hEp)return n;let i=`${e}-preview-`,o=hEp-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}.${mEp}`}Ct();LI();Ah();er();d0();kt();On();var yNs=require("child_process"),BIp=Ae(bEp(),1),bNs=Ae(hwi(),1),ENs=Ae(require("fs"),1),vNs=require("fs/promises"),RIp=Ae(require("http"),1),DIp=Ae(require("os"),1),kwi=Ae(require("path"),1);dNs();LI();er();var mNs=require("fs/promises");async function hNs(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,mNs.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,mNs.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}),ae=await c_({markdown:Fe,absolutePathToFernFolder:c,absolutePathToMarkdownFile:Se,context:t,fileLoader:I}),ue=u_({markdown:ae,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 ce={...n,apis:ee,pages:x,config:{...n.config,root:v,announcement:B,navbarLinks:R}};r.set(m,ce),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 qW=require("fs/promises"),xIp=require("os"),ANs=Ae(require("path"),1),mGg=".fern",hGg="logs",gNs=100*1024*1024;function gGg(){return"cli@5.165.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,xIp.homedir)()),be.of(mGg)),be.of(hGg));await Ut(n)||await(0,qW.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: ${ANs.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
|
|
4120
4120
|
`);await(0,qW.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)+`
|
|
4121
4121
|
`;try{await(0,qW.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:gGg(),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,qW.readdir)(t)).filter(c=>c.endsWith(".log")),i=[];for(let c of n){let u=ANs.default.join(t,c);try{let l=await(0,qW.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=gNs/1024/1024;if(o<=gNs){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<=gNs)break;if(!(this.logFilePath!=null&&c.fullPath===this.logFilePath))try{await(0,qW.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 Dwi={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function wIp(e){let t=AGg();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:Dwi});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",...Dwi}})}catch{return new Response(JSON.stringify(i()),{headers:{"Content-Type":"application/json",...Dwi}})}let d=/^\/_local\/(.*)/.exec(p.pathname);return u.method==="GET"&&d!=null?new Response(t.file(`/${d[1]}`),{headers:Dwi}):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 AGg(){return globalThis.Bun}var SIp=require("fs"),TIp=Ae(require("path"),1),yGg=`"use strict";
|
|
4122
4122
|
|
|
@@ -4437,7 +4437,7 @@ ${n}
|
|
|
4437
4437
|
|
|
4438
4438
|
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.
|
|
4439
4439
|
|
|
4440
|
-
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 Isr({libraries:i,library:r.library,docsDirectoryPath:a,orgId:n.org,tokenValue:o.value,context:c,wrapStep:EP,docsConfig:n.docs.raw})}};function x_s(e){let t=new C_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 w_s(e){DA({cli:e,name:"md",subcommands:[x_s,H4s]})}kt();function ZBi(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},Psn(n)),s.version(!1).usage(r)})}Ct();LI();kt();On();Ct();kt();var $Bi=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 Nnr({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.
|
|
4440
|
+
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 Isr({libraries:i,library:r.library,docsDirectoryPath:a,orgId:n.org,tokenValue:o.value,context:c,wrapStep:EP,docsConfig:n.docs.raw})}};function x_s(e){let t=new C_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 w_s(e){DA({cli:e,name:"md",subcommands:[x_s,H4s]})}kt();function ZBi(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},Psn(n)),s.version(!1).usage(r)})}Ct();LI();kt();On();Ct();kt();var $Bi=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 Nnr({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.165.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(`
|
|
4441
4441
|
`),this.stream.write(`${me.cyan("\u25C6")} ${me.bold(t.title)}
|
|
4442
4442
|
`),t.subtitle!=null&&this.stream.write(` ${me.dim(t.subtitle)}
|
|
4443
4443
|
`),this.stream.write(`
|
|
@@ -5131,7 +5131,7 @@ ${r}`}function kNi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
|
|
|
5131
5131
|
`),g="";return c&&(g=l.style.error(c)),[`${p} ${f} ${s}`,[m,g].filter(Boolean).join(`
|
|
5132
5132
|
`)]});var ity=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 oty={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 tra(e){return!qd.isSeparator(e)&&!e.disabled}function sty(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 aty=Px((e,t)=>{let{pageSize:r=7,validate:n=()=>!0}=e,i=sv(oty,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(tra),Y=u.findLastIndex(tra);return{first:z,last:Y}},[u]),[g=m.first,A]=yu();mU(()=>{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(sty($)),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(!tra(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 ce=typeof z.disabled=="string"?z.disabled:"(disabled)";return i.style.disabled(`${z.name} ${ce}`)}let $=Y?i.style.highlight:ce=>ce,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(`
|
|
5133
5133
|
`).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 uty(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 rra=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(()=>uty(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(Sur(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)}}),mU(()=>()=>{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(`
|
|
5134
|
-
`).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"},lty={[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 KWp(e){return lty[e]}function JWp(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 YWp(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 XWp(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 ZWp(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 $Wp(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 pty="",fty="FERN_AUTOMATION_EVENTS_ORIGIN",dty=3e3,hji=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[fty]??pty)),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(),dty);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(ZWp(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function e7p(){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.
|
|
5134
|
+
`).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"},lty={[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 KWp(e){return lty[e]}function JWp(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 YWp(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 XWp(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 ZWp(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 $Wp(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 pty="",fty="FERN_AUTOMATION_EVENTS_ORIGIN",dty=3e3,hji=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[fty]??pty)),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(),dty);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(ZWp(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function e7p(){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.165.0"}}function t7p(){return process.env.FERN_AUTOMATION==="true"}var mty=3e3,gji=class{constructor(t,r=hji.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=e7p()}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,mty)})])}finally{clearTimeout(t)}}capturePostHogEvent({event:t,context:r}){this.reporter.instrumentPostHogAutomationEvent({distinctId:r.run_id??void 0,event:t.event,properties:JWp(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!KWp(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:YWp(t,r),context:{automation:XWp(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};kt();function Aji(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});t7p()?gty(i,e,n,s,a):hty(e,o,n,a)}function hty(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),uQt(r)&&e.captureException(n,{tags:{"error.code":r}})}function gty(e,t,r,n,i){let o=$Wp(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}kt();function VKe(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function yji({cliName:e,packageVersion:t,isLocal:r}){return VKe()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var bji=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(yji(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 Eji=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 Bur=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),tqt({message:t,error:r,logger:this.logger}),Aji(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 nra({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(`
|
|
5135
5135
|
`)}},nra=class extends Bur{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(`
|
|
5136
5136
|
`)})}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 r7p=Ae(F_e(),1);On();function n7p(e){return e.filter(t=>t.isUpgradeAvailable).length>0}function Aty(e){return(e.cliUpgradeInfo?.isUpgradeAvailable??!1)||n7p(e.generatorUpgradeInfo)}async function i7p({cliEnvironment:e,upgradeInfo:t}){if(!Aty(t)||e.packageVersion==t.cliUpgradeInfo?.latestVersion)return;let r=`${me.underline("Upgrades available")}
|
|
5137
5137
|
|
|
@@ -5140,7 +5140,7 @@ ${r}`}function kNi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
|
|
|
5140
5140
|
Run ${me.cyan("fern generator upgrade")} to upgrade your generators.`),i.length>2&&(r+=`
|
|
5141
5141
|
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 ira({generatorUpgradeInfo:e,header:t,limit:r,includeBoxen:n=!0}){if(!n7p(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+=`
|
|
5142
5142
|
${await yty(a.generatorName)} (${a.apiName!=null?"API: "+a.apiName+", ":""}Group: ${a.generatorGroup}) `+me.dim(a.currentVersion)+me.reset(" \u2192 ")+me.green(a.latestVersion);return i+=`
|
|
5143
|
-
`,n?Dft(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function yty(e){let r=await new r7p.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 Rur=Ae(_y(),1);function FFt(e){let t;return()=>(t??=e.runTask(r=>pd(r)),t)}function Iji({generatorId:e,candidateVersion:t,currentVersion:r}){if(!o7p(t)||!o7p(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=Rur.default.valid(t),i=Rur.default.valid(r);if(n!=null&&i!=null)return Math.sign(Rur.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 o7p(e){if(e==="latest"||Rur.default.valid(e)!=null)return!0;try{return rJ(e),!0}catch{return!1}}async function vji({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 ${Orr} 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=qv(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 Nvs({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 bty({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 s7p({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 c7p({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 s7p({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 c7p({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 s7p({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 a7p(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=Iji({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 c7p({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 Ety({organization:s,generatorName:$h(e),skipFeatureFlagRequest:a})?(await vji({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 Cji({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o,skipFeatureFlagRequest:s}){let a=[];if(e!=null){let c=await bty({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(...a7p(l,u,t.logger));else a.push(...a7p(c.versions,void 0,t.logger))}return a}async function Ety({organization:e,generatorName:t,skipFeatureFlagRequest:r}){return r===!0?mPs({organization:e,generatorName:t})??!1:OTt({organization:e,generatorName:t})}kt();zjr();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 u7p=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],xji=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Xn.Info;isLocal;stdoutRedirector=new Eji;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await gKt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new Aqt(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 bji({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new gji(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.
|
|
5143
|
+
`,n?Dft(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function yty(e){let r=await new r7p.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 Rur=Ae(_y(),1);function FFt(e){let t;return()=>(t??=e.runTask(r=>pd(r)),t)}function Iji({generatorId:e,candidateVersion:t,currentVersion:r}){if(!o7p(t)||!o7p(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=Rur.default.valid(t),i=Rur.default.valid(r);if(n!=null&&i!=null)return Math.sign(Rur.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 o7p(e){if(e==="latest"||Rur.default.valid(e)!=null)return!0;try{return rJ(e),!0}catch{return!1}}async function vji({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 ${Orr} 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=qv(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 Nvs({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 bty({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 s7p({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 c7p({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 s7p({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 c7p({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 s7p({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 a7p(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=Iji({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 c7p({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 Ety({organization:s,generatorName:$h(e),skipFeatureFlagRequest:a})?(await vji({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 Cji({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o,skipFeatureFlagRequest:s}){let a=[];if(e!=null){let c=await bty({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(...a7p(l,u,t.logger));else a.push(...a7p(c.versions,void 0,t.logger))}return a}async function Ety({organization:e,generatorName:t,skipFeatureFlagRequest:r}){return r===!0?mPs({organization:e,generatorName:t})??!1:OTt({organization:e,generatorName:t})}kt();zjr();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 u7p=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],xji=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Xn.Info;isLocal;stdoutRedirector=new Eji;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await gKt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new Aqt(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 bji({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new gji(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.165.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)&&(tqt({message:t,error:r,logger:this.logger}),Aji(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)+`
|
|
5144
5144
|
`)}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(),YXo()])}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 i7p({cliEnvironment:this.environment,upgradeInfo:t});r!=null&&(r.endsWith(`
|
|
5145
5145
|
`)||(r+=`
|
|
5146
5146
|
`),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=Dqi(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 Bur(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=l7p(r),i=1+(this.longestWorkspaceName!=null?l7p(this.longestWorkspaceName):n).length,o=n.padEnd(i),s=u7p[this.numTasks++%u7p.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 Cji({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 rra({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(`
|
|
@@ -5381,7 +5381,7 @@ To update the schema from its defined origin, please ensure the origin either:
|
|
|
5381
5381
|
`).length,p=u.split(`
|
|
5382
5382
|
`).length,d=l-p,f=c instanceof Error?c.message:String(c),m,g;if(c&&typeof c=="object"){let y=c;y.line!=null?(m=y.line+d,g=y.column):y.place?.line!=null?(m=y.place.line+d,g=y.place.column):y.position?.start?.line!=null&&(m=y.position.start.line+d,g=y.position.start.column)}let A;if(m!=null){let y=a.split(`
|
|
5383
5383
|
`),I=Math.max(0,m-3),x=Math.min(y.length,m);A=[];for(let v=I;v<x;v++)A.push({lineNumber:v+1,content:y[v]??"",isErrorLine:v+1===m})}r.push(new Hia(s,f,m,g,A))}}return{errors:r,totalFiles:o.length}}function Vif({errors:e,totalFiles:t,context:r}){if(e.length===0){r.logger.info(me.green(`
|
|
5384
|
-
\u2713 All ${t} MDX files are valid`));return}for(let n of e)r.logger.error(n.toString())}Fi();LI();er();Nd();kt();function Gif({apiResults:e,docsResult:t,hasErrors:r,showApiNames:n}){let i=[];for(let a of e)for(let c of a.violations){let u={severity:c.severity,message:c.message};n&&(u.api=a.apiName),c.name!=null&&(u.rule=c.name),i.push(u)}let o=[];if(t!=null)for(let a of t.violations){let c={severity:a.severity,message:a.message};a.name!=null&&(c.rule=a.name),o.push(c)}let s={};return i.length>0&&(s.apis=i),o.length>0&&(s.docs=o),{success:!r,results:s}}Ct();On();function Hif({apiResults:e,docsResult:t,logWarnings:r,context:n}){let i=performance.now(),o=!1;if(e.filter(l=>{let p=Alr(l.violations);return p.numErrors>0||r&&p.numWarnings>0}).length>0){let l=Hdy(e.map(d=>d.violations).flat());if(e.length>1){n.logger.info(me.cyan(me.bold("[sdk]")));for(let d of e){let f=Alr(d.violations);(f.numErrors>0||r&&f.numWarnings>0)&&(o=o||f.numErrors>0,Vdy({apiName:d.apiName,violations:d.violations,stats:f,logWarnings:r,context:n,indent:" "}))}}else o=o||l.numErrors>0,Udy({violations:e[0]?.violations??[],stats:l,logWarnings:r,context:n})}if(t!=null){let l=Alr(t.violations);(l.numErrors>0||r&&l.numWarnings>0)&&(o=o||l.numErrors>0,Gdy({violations:t.violations,stats:l,logWarnings:r,context:n}))}let a=performance.now()-i,c=[...e.map(l=>l.violations).flat(),...t?.violations??[]],u=Alr(c);return Kdy({stats:u,logWarnings:r,elapsedMillis:a,context:n}),{hasErrors:o}}function Udy({violations:e,stats:t,logWarnings:r,context:n}){let i=Jia(t,r);n.logger.info(me.cyan(me.bold("[sdk]"))+` ${i}`),Kia({violations:e,logWarnings:r,context:n,indent:" "})}function Vdy({apiName:e,violations:t,stats:r,logWarnings:n,context:i,indent:o}){let s=Jia(r,n);i.logger.info(`${o}${me.bold(`[${e}]`)} ${s}`),Kia({violations:t,logWarnings:n,context:i,indent:o+" "})}function Gdy({violations:e,stats:t,logWarnings:r,context:n}){let i=Jia(t,r);n.logger.info(me.magenta(me.bold("[docs]"))+` ${i}`),Kia({violations:e,logWarnings:r,context:n,indent:" "})}function Kia({violations:e,logWarnings:t,context:r,indent:n}){let i=e.filter(s=>s.severity==="fatal"||s.severity==="error"),o=e.filter(s=>s.severity==="warning");if(t)for(let s of o.sort(Wif))qif({violation:s,context:r,indent:n});for(let s of i.sort(Wif))qif({violation:s,context:r,indent:n})}function qif({violation:e,context:t,indent:r}){let n=Wdy(e.severity),i=qdy(e);i===""?t.logger.info(`${r}${n} ${e.message}`):(t.logger.info(`${r}${n}`),t.logger.info(`${r} path: ${me.blue(i)}`),t.logger.info(`${r} issue: ${e.message}`)),t.logger.info("")}function qdy(e){let t=[];e.relativeFilepath!==""&&t.push(e.relativeFilepath);for(let r of e.nodePath){let n=typeof r=="string"?r:r.key;typeof r!="string"&&r.arrayIndex!=null&&(n+=`[${r.arrayIndex}]`),t.push(n)}return t.join(" -> ")}function Wdy(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 Jia(e,t){let r=[];return e.numErrors>0&&r.push(`${e.numErrors} error${e.numErrors!==1?"s":""}`),t&&e.numWarnings>0&&r.push(`${e.numWarnings} warning${e.numWarnings!==1?"s":""}`),r.join(", ")}function Alr(e){let t=0,r=0;for(let n of e)switch(n.severity){case"fatal":case"error":t+=1;break;case"warning":r+=1;break;default:Ee(n.severity)}return{numErrors:t,numWarnings:r}}function Hdy(e){return Alr(e)}function Wif(e,t){let r=e.relativeFilepath.localeCompare(t.relativeFilepath);return r!==0?r:JSON.stringify(e.nodePath).localeCompare(JSON.stringify(t.nodePath))}function Kdy({stats:e,logWarnings:t,elapsedMillis:r,context:n}){let i=r>0?` in ${(r/1e3).toFixed(3)} seconds.`:".",o=`Found ${e.numErrors} error${e.numErrors!==1?"s":""} and ${e.numWarnings} warning${e.numWarnings!==1?"s":""}`+i;!t&&e.numWarnings>0&&(o+=" Run fern check --warnings to print out the warnings not shown."),e.numErrors>0?n.logger.error(o):e.numWarnings>0?n.logger.warn(o):n.logger.info(me.green("All checks passed"))}async function Kif({project:e,cliContext:t,logWarnings:r,brokenLinks:n,errorOnBrokenLinks:i,isLocal:o,directFromOpenapi:s,commandLineApiWorkspace:a}){let c=await Ydy({project:e,cliContext:t,commandLineApiWorkspace:a}),u={...e,apiWorkspaces:[...e.apiWorkspaces,...c.map(({workspace:A})=>A)]},l=[],p,d=!1,f,m=a!=null?u.apiWorkspaces.filter(A=>A.workspaceName===a):u.apiWorkspaces,g=!1;try{let A=u.docsWorkspaces;if(A!=null){let I=n||i?[]:["valid-markdown-links"],x=await zw(u),v;await t.runTaskForWorkspace(A,async w=>{v=await Ktf({workspace:A,context:w,apiWorkspaces:u.apiWorkspaces,ossWorkspaces:x,errorOnBrokenLinks:i,excludeRules:I})}),v!=null&&(p={violations:v.violations,elapsedMillis:v.elapsedMillis},v.hasErrors&&(d=!0))}if(await Promise.all(m.map(async I=>{if(I.generatorsConfiguration?.groups.length===0&&I.type!=="fern")return;if(I instanceof Lu&&s){await t.runTaskForWorkspace(I,async v=>{await I.getIntermediateRepresentation({context:v,audiences:{type:"all"},enableUniqueErrorsPerEndpoint:!1,generateV1Examples:!1,logWarnings:r})});return}if(I instanceof $D){let v=De(I.absoluteFilePath,be.of(ly),be.of(hv));if(!await Ut(v)){f="missing api.yml",await t.runTask(async B=>(B.logger.error(`Missing file: ${hv}`),B.failAndThrow(void 0,void 0,{code:T.Code.ValidationError})));return}}let x;await t.runTaskForWorkspace(I,async v=>{let w=await I.toFernWorkspace({context:v});x=await fRs({workspace:w,context:v,ossWorkspace:I instanceof Lu?I:void 0})}),x!=null&&(l.push({apiName:x.apiName,violations:x.violations,elapsedMillis:x.elapsedMillis}),x.hasErrors&&(d=!0))})),g=(await t.runTask(I=>Hif({apiResults:l,docsResult:p,logWarnings:r,context:I}))).hasErrors,t.isJsonMode){let I=l.length>1;t.writeJsonToStdout(Gif({apiResults:l,docsResult:p,hasErrors:g||d,showApiNames:I}))}(g||d)&&(f="validation errors",t.failAndThrow(void 0,void 0,{code:T.Code.ValidationError}))}catch(A){throw f==null&&(f=A instanceof Error?A.message.slice(0,100):"unexpected error"),A}finally{await Promise.all(c.map(({cleanup:v})=>v()));let A=[...l.flatMap(v=>v.violations),...p?.violations??[]],y=[...new Set(A.map(v=>v.name).filter(v=>v!=null))],I=A.filter(v=>v.severity==="fatal"||v.severity==="error").length,x=A.filter(v=>v.severity==="warning").length;t.instrumentPostHogEvent({command:"fern check",properties:{validationRules:y,numErrors:I,numWarnings:x,passed:!g&&!d,abortReason:f}})}}async function Jdy(e){for(let t of e){let r=De(t.absoluteFilePath,be.of(vd));await Ut(r)&&sra(await GKe(r,!0))}}async function Ydy({project:e,cliContext:t,commandLineApiWorkspace:r}){await Jdy(r!=null?e.apiWorkspaces.filter(i=>i.workspaceName===r):e.apiWorkspaces);let n=[];try{for(let i of e.sdkConfigWorkspaces??[]){let o=De(i.absoluteFilePath,be.of(vd)),s=await GKe(o,!0);sra(s),n.push(await t.runTask(a=>Wji({sdkConfig:s.config,absolutePathToConfig:s.absolutePath,cliVersion:t.environment.packageVersion,workspaceName:i.workspaceName,context:a})))}return n}catch(i){throw await Promise.all(n.map(({cleanup:o})=>o())),i}}Fi();er();xY();On();var hpe=require("fs/promises");es();var Yia=Ae(require("path"),1);async function Jif({project:e,cliContext:t,sdkLanguage:r,preserveSchemaIds:n}){await Promise.all(e.apiWorkspaces.map(async i=>{await t.runTaskForWorkspace(i,async o=>{i instanceof bD?await Xdy({workspace:i,context:o}):await Zdy({workspace:await i.toFernWorkspace({context:o},{preserveSchemaIds:n}),context:o})})}))}async function Xdy({workspace:e,context:t}){for(let[r,n]of Object.entries(e.definition.importedDefinitions)){let i=De(e.absoluteFilePath,be.of(ly),be.of(r),be.of(`.${ly}`));await Yif({definition:n.definition,absolutePathToOutputDirectory:i}),t.logger.info(me.green(`Wrote imported definition at ${Yia.default.relative(process.cwd(),i)}`))}}async function Zdy({workspace:e,context:t}){let r=De(e.absoluteFilePath,be.of(`.${ly}`));await Yif({definition:e.definition,absolutePathToOutputDirectory:r}),t.logger.info(me.green(`Wrote definition to ${Yia.default.relative(process.cwd(),r)}`))}async function Yif({definition:e,absolutePathToOutputDirectory:t}){let r=(n,i)=>{let o={imports:0,types:1,services:2},s=n in o?o[n]:Object.keys(o).length,a=i in o?o[i]:Object.keys(o).length;return s==null?-1:a==null?1:s!==a?s-a:n.localeCompare(i)};await Ut(t)&&await(0,hpe.rm)(t,{recursive:!0}),await(0,hpe.mkdir)(t,{recursive:!0}),await(0,hpe.writeFile)(De(t,be.of(hv)),vr.dump(e.rootApiFile.contents,{sortKeys:r}));for(let[n,i]of Object.entries(e.packageMarkers)){let o=De(t,be.of(n));await(0,hpe.mkdir)(un(o),{recursive:!0}),await(0,hpe.writeFile)(o,vr.dump(i.contents,{sortKeys:r}))}for(let[n,i]of Object.entries(e.namedDefinitionFiles)){let o=De(t,be.of(n));await(0,hpe.mkdir)(un(o),{recursive:!0}),await(0,hpe.writeFile)(o,vr.dump(i.contents,{sortKeys:r}))}}LI();er();On();var Xif=require("fs/promises");async function Zif({project:e,outputPath:t,cliContext:r}){let n=e.docsWorkspaces;n!=null&&await r.runTaskForWorkspace(n,async i=>{let o=await zw(e),s=await Promise.all(e.apiWorkspaces.map(async u=>u.toFernWorkspace({context:i},{enableUniqueErrorsPerEndpoint:!0,detectGlobalHeaders:!1}))),c=await new p_({domain:n.config.instances[0]?.url??"http://localhost:8080",docsWorkspace:n,ossWorkspaces:o,apiWorkspaces:s,taskContext:i,editThisPage:void 0,uploadFiles:void 0,registerApi:void 0,targetAudiences:n.config.instances[0]?.audiences?Array.isArray(n.config.instances[0].audiences)?n.config.instances[0].audiences:[n.config.instances[0].audiences]:void 0,buildRefVersions:!1}).resolve();await(0,Xif.writeFile)(_t.of(t),JSON.stringify(c,null,2)),i.logger.info(me.green(`Docs definition written to ${t}`))})}Fi();Ct();kt();async function $if(e,t,r){let i=(await Ha(e,{commandLineApiWorkspace:r,defaultToAllApiWorkspaces:!1})).apiWorkspaces[0];if(i==null)return e.failAndThrow("No API workspace found.",void 0,{code:T.Code.ConfigError});let o=i.generatorsConfiguration;if(o==null)return e.failAndThrow("No generators.yml found in workspace.",void 0,{code:T.Code.ConfigError});let s=o.groups.find(l=>l.groupName===t);if(s==null){let l=o.groups.map(p=>p.groupName).join(", ");return e.failAndThrow(`Group "${t}" not found. Available groups: ${l}`,void 0,{code:T.Code.ConfigError})}let a=l=>Cf(l,{onError:p=>e.failAndThrow(p,void 0,{code:T.Code.ConfigError})}),c=s.generators.find(l=>l.raw?.github!=null&&lwe(l.raw.github));if(c?.raw?.github!=null&&lwe(c.raw.github)){let l=a(c.raw.github);return e.logger.info(`Using github config from group "${t}" generator "${c.name}" (mode: ${l.mode??"pull-request"})`),{githubRepo:l.uri,token:l.token,mode:l.mode==="push"?"push":"pull-request",branch:l.branch}}let u=s.generators.find(l=>l.raw?.github!=null&&"repository"in l.raw.github);if(u?.raw?.github!=null&&"repository"in u.raw.github){let l=a(u.raw.github),p=process.env.GITHUB_TOKEN;return e.logger.info(`Using repository config from group "${t}" generator "${u.name}"`+(p!=null?". Using GITHUB_TOKEN from environment.":".")),{githubRepo:l.repository,token:p,mode:l.mode==="push"?"push":"pull-request",branch:"branch"in l?l.branch:void 0}}return e.failAndThrow(`No generator in group "${t}" has a github configuration.`,void 0,{code:T.Code.ConfigError})}var fMi=$dy();function $dy(){return typeof window<"u"&&typeof window.document<"u"?{type:"browser",version:window.navigator.userAgent}:typeof globalThis<"u"&&globalThis?.navigator?.userAgent==="Cloudflare-Workers"?{type:"workerd"}:typeof EdgeRuntime=="string"?{type:"edge-runtime"}:typeof self=="object"&&typeof self?.importScripts=="function"&&(self.constructor?.name==="DedicatedWorkerGlobalScope"||self.constructor?.name==="ServiceWorkerGlobalScope"||self.constructor?.name==="SharedWorkerGlobalScope")?{type:"web-worker"}:typeof Deno<"u"&&typeof Deno.version<"u"&&typeof Deno.version.deno<"u"?{type:"deno",version:Deno.version.deno}:typeof Bun<"u"&&typeof Bun.version<"u"?{type:"bun",version:Bun.version}:typeof process<"u"&&"version"in process&&!!process.version&&"versions"in process&&!!process.versions?.node?{type:"node",version:process.versions.node,parsedVersion:Number(process.versions.node.split(".")[0])}:typeof navigator<"u"&&navigator?.product==="ReactNative"?{type:"react-native"}:{type:"unknown"}}kt();function eof(e,{isLocal:t}){if(!yji({cliName:e.environment.cliName,packageVersion:e.environment.packageVersion,isLocal:t}))return;let r=!1,n=async(i,o)=>{r&&process.exit(1),r=!0;try{e.failWithoutThrowing(i,o,{code:T.Code.InternalError})}catch{}try{await e.exit({code:1})}catch{process.exit(1)}};process.on("uncaughtException",i=>{n("uncaught exception",i)}),process.on("unhandledRejection",i=>{n("unhandled promise rejection",i)})}function Xia(){return(process.env.FERN_USE_SDK_CONFIG??"false"??"false").trim().toLowerCase()==="true"}cQt();var emy=new Set(["org"]);function tof(e){let t=Zia(e);return t!=null&&emy.has(t)}function Zia(e){let t=TEe(e);for(let r=0;r<t.length;r++){let n=t[r];if(n!=null){if(n.startsWith("-")){n==="--log-level"&&r++;continue}return n}}}if(process.platform==="linux"&&parseInt(process.versions.node.split(".")[0]??"0",10)>=26&&process.env.UV_USE_IO_URING!=="0"){let e=(0,Bdf.spawnSync)(process.execPath,process.argv.slice(1),{env:{...process.env,UV_USE_IO_URING:"0"},stdio:"inherit"});e.signal&&process.kill(process.pid,e.signal),process.exit(e.status??1)}process.env.UV_THREADPOOL_SIZE==null&&(process.env.UV_THREADPOOL_SIZE="8");zvs()?Qvs():(jvs(typeof __filename=="string"?__filename:void 0),sSy());async function sSy(){let e=process.argv.includes("--get-yargs-completions");e||INt();let t=process.argv.includes("--local"),r=await xji.create(process.stdout,process.stderr,{isLocal:t});e&&r.suppressUpgradeMessage(),eof(r,{isLocal:t});let n=async()=>{await r.exit()};if(fMi.type==="node"&&fMi.parsedVersion!=null&&fMi.parsedVersion>=18){let{setGlobalDispatcher:i,Agent:o}=await Promise.resolve().then(()=>Ae(vca(),1));i(new o({connect:{timeout:2147483647},bodyTimeout:0,headersTimeout:2147483647}))}if(process.env.HTTP_PROXY!=null){let{setGlobalDispatcher:i,ProxyAgent:o}=await Promise.resolve().then(()=>Ae(vca(),1)),s=new o(process.env.HTTP_PROXY);i(s)}process.on("SIGINT",async()=>{r.suppressUpgradeMessage(),await n()});try{let i=process.env[slr];if(i!=null&&process.chdir(i),e||tof(process.argv))await Odf(r);else{let o=await aSy(r);r.environment.packageVersion===o?await Odf(r):await clr({version:o,cliContext:r})}}catch(i){r.failWithoutThrowing(void 0,i)}await n()}async function Odf(e){let t=TEe(process.argv);if(t[0]==="completion"){Nta(t).scriptName(e.environment.cliName).completion("completion","Generate shell completion script").parse();return}let r=Nta(t).scriptName(e.environment.cliName).version(!1).completion("completion","Generate shell completion script").fail((n,i,o)=>{i==null&&(o.showHelp(),e.logger.error(n))}).strict().exitProcess(!1).command("$0",!1,n=>n.option("version",{describe:"Print current version",alias:"v"}).version(!1),n=>{n.version!=null?e.logger.info(e.environment.packageVersion):(r.showHelp(),e.failAndThrow(void 0,void 0,{code:T.Code.ConfigError}))}).option("log-level",{default:Xn.Info,choices:mS}).demandCommand().recommendCommands();uSy(r,e),lSy(r,e),cSy(r,e),pSy(r,e),fSy(r,e),dSy(r,e),mSy(r,e),ySy(r,e),hSy(r,e),gSy(r,e),ASy(r,e),ISy(r,e),bSy(r,e),ESy(r,e),TSy(r,e),PSy(r,e),OSy(r,e),BSy(r,e),zSy(r,e),QSy(r,e),DSy(r,e),kSy(r,e),jSy(r,e),RSy(r,e),xSy(r,e),SSy(r,e),vSy({cli:r,cliContext:e,onRun:()=>{e.suppressUpgradeMessage()}}),CSy(r,e),n1y(r,e),i1y(r,e),o1y(r,e),E1y(r,e),h1y(r,e),a1y(r,e),u1y(r,e),Q7p(r,e),M7p(r,e),w1y(r,e),g1y(r,e),b1y(r,e),r.middleware(async n=>{e.setLogLevel(n["log-level"]);let i=n._[0]==="sdk"&&n._[1]==="migrate"&&n.output==="-";(n.json===!0||i)&&e.enableJsonMode(),e.logFernVersionDebug()}),await r.parse()}async function aSy(e){if(process.env.FERN_NO_VERSION_REDIRECTION==="true"){let r=await Cca(e);return r!=null&&Zia(process.argv)!=="upgrade"&&await ztf({cliContext:e,orgId:r,currentVersion:e.environment.packageVersion}),e.environment.packageVersion}let t=await sd();if(t!=null){let r=await e.runTask(i=>aw({directory:t,context:i})),n;return r.version==="*"?n=e.environment.packageVersion:r.version==="latest"?n=await Zbe({cliEnvironment:e.environment}):n=r.version,await jtf({cliContext:e,orgId:r.organization,intendedVersion:n})}return Zbe({cliEnvironment:e.environment})}async function Cca(e){let t=await sd();if(t!=null)return(await e.runTask(n=>aw({directory:t,context:n}))).organization}function cSy(e,t){e.command("init","Initialize a Fern API",r=>r.option("api",{boolean:!0,description:"Initialize an api."}).option("docs",{boolean:!0,description:"Initialize a docs website."}).option("organization",{alias:"org",type:"string",description:"Organization name"}).option("openapi",{type:"string",description:"Filepath or url to an existing OpenAPI spec"}).option("fern-definition",{boolean:!0,description:"Initialize with a sample Fern Definition instead of an OpenAPI spec"}).option("mintlify",{type:"string",description:"Migrate docs from Mintlify provided a path to a mint.json file"}).option("readme",{type:"string",description:"Migrate docs from Readme provided a URL to a Readme generated docs site"}),async r=>{if(r.organization==null){let n=await Cca(t);n!=null?r.organization=n:r.organization=await t.getInput({message:"Please enter your organization"})}if(r.api!=null&&r.docs!=null)return t.failWithoutThrowing("Cannot specify both --api and --docs. Please choose one.",void 0,{code:T.Code.ConfigError});if(r.readme!=null&&r.mintlify!=null)return t.failWithoutThrowing("Cannot specify both --readme and --mintlify. Please choose one.",void 0,{code:T.Code.ConfigError});if(r.openapi!=null&&r["fern-definition"]===!0)return t.failWithoutThrowing("Cannot specify both --openapi and --fern-definition. Please choose one.",void 0,{code:T.Code.ConfigError});if(r.readme!=null)await t.runTask(async n=>{await Xea({readmeUrl:r.readme,organization:r.organization??"fern",taskContext:n,versionOfCli:await Zbe({cliEnvironment:t.environment})})});else if(r.docs!=null)await t.runTask(async n=>{await our({organization:r.organization,versionOfCli:await Zbe({cliEnvironment:t.environment}),taskContext:n,openApi:r.openapi,useSdkConfig:Xia()})});else if(r.mintlify!=null)await t.runTask(async n=>{await Fea({pathToMintJson:r.mintlify,organization:r.organization??"fern",taskContext:n,versionOfCli:await Zbe({cliEnvironment:t.environment})})});else{let n=Xia(),i,o;if(r.openapi!=null){if(P2(r.openapi)){if(o=r.openapi,!n){let s=await iur({url:r.openapi,logger:t.logger});s.status===Kbe.Failure&&t.failAndThrow(s.errorMessage,void 0,{code:T.Code.NetworkError}),i=_t.of(s.filePath)}}else i=_t.of(Yn(Za(),r.openapi));i!=null&&!await Ut(i)&&t.failAndThrow(`${i} does not exist`,void 0,{code:T.Code.ConfigError})}await t.runTask(async s=>{await Pea({organization:r.organization,versionOfCli:await Zbe({cliEnvironment:t.environment}),context:s,openApiPath:i,openApiUrl:o,useFernDefinition:r["fern-definition"]===!0,useSdkConfig:n,includeDocs:r.api==null})})}})}function uSy(e,t){e.command("diff","Diff two versions of an API",r=>r.option("from",{string:!0,demandOption:!0,description:"The previous version of the API"}).option("to",{string:!0,demandOption:!0,description:"The next version of the API"}).option("from-version",{string:!0,description:"The previous version of the API (e.g. 1.1.0)"}).option("from-generator-version",{string:!0,description:"The previous version of the generator (e.g. 1.1.0)"}).option("to-generator-version",{string:!0,description:"The next version of the generator (e.g. 1.1.0)"}).option("quiet",{boolean:!0,default:!1,alias:"q",description:"Whether to suppress output written to stderr"}).middleware(n=>{if(!Cyr(n.fromGeneratorVersion,n.toGeneratorVersion))throw new T({message:"Both --from-generator-version and --to-generator-version must be provided together, or neither should be provided",code:T.Code.ValidationError})}),async r=>{if(process.env.__FERN_DIFF_HEAP_RESPAWNED==null){let a=await import("fs"),c=1024*1024*1024,u=Yn(Za(),r.from),l=Yn(Za(),r.to),p=a.statSync(u,{throwIfNoEntry:!1})?.size??0,d=a.statSync(l,{throwIfNoEntry:!1})?.size??0;if(p>c||d>c){let{spawnSync:f}=await import("child_process"),g=f(process.execPath,["--max-old-space-size=8192",...process.execArgv,...process.argv.slice(1)],{env:{...process.env,__FERN_DIFF_HEAP_RESPAWNED:"1"},stdio:"inherit"});await t.exit({code:g.status??1});return}}let n=Iyr(r.fromVersion),i=vyr({from:r.fromGeneratorVersion,to:r.toGeneratorVersion}),o=await Htf({context:t,from:r.from,to:r.to,fromVersion:n,generatorVersions:i});if(n!=null){let{errors:a,...c}=o;t.logger.info(JSON.stringify(c))}!r.quiet&&o.errors.length>0&&t.stderr.info(o.errors.join(`
|
|
5384
|
+
\u2713 All ${t} MDX files are valid`));return}for(let n of e)r.logger.error(n.toString())}Fi();LI();er();Nd();kt();function Gif({apiResults:e,docsResult:t,hasErrors:r,showApiNames:n}){let i=[];for(let a of e)for(let c of a.violations){let u={severity:c.severity,message:c.message};n&&(u.api=a.apiName),c.name!=null&&(u.rule=c.name),i.push(u)}let o=[];if(t!=null)for(let a of t.violations){let c={severity:a.severity,message:a.message};a.name!=null&&(c.rule=a.name),o.push(c)}let s={};return i.length>0&&(s.apis=i),o.length>0&&(s.docs=o),{success:!r,results:s}}Ct();On();function Hif({apiResults:e,docsResult:t,logWarnings:r,context:n}){let i=performance.now(),o=!1;if(e.filter(l=>{let p=Alr(l.violations);return p.numErrors>0||r&&p.numWarnings>0}).length>0){let l=Hdy(e.map(d=>d.violations).flat());if(e.length>1){n.logger.info(me.cyan(me.bold("[sdk]")));for(let d of e){let f=Alr(d.violations);(f.numErrors>0||r&&f.numWarnings>0)&&(o=o||f.numErrors>0,Vdy({apiName:d.apiName,violations:d.violations,stats:f,logWarnings:r,context:n,indent:" "}))}}else o=o||l.numErrors>0,Udy({violations:e[0]?.violations??[],stats:l,logWarnings:r,context:n})}if(t!=null){let l=Alr(t.violations);(l.numErrors>0||r&&l.numWarnings>0)&&(o=o||l.numErrors>0,Gdy({violations:t.violations,stats:l,logWarnings:r,context:n}))}let a=performance.now()-i,c=[...e.map(l=>l.violations).flat(),...t?.violations??[]],u=Alr(c);return Kdy({stats:u,logWarnings:r,elapsedMillis:a,context:n}),{hasErrors:o}}function Udy({violations:e,stats:t,logWarnings:r,context:n}){let i=Jia(t,r);n.logger.info(me.cyan(me.bold("[sdk]"))+` ${i}`),Kia({violations:e,logWarnings:r,context:n,indent:" "})}function Vdy({apiName:e,violations:t,stats:r,logWarnings:n,context:i,indent:o}){let s=Jia(r,n);i.logger.info(`${o}${me.bold(`[${e}]`)} ${s}`),Kia({violations:t,logWarnings:n,context:i,indent:o+" "})}function Gdy({violations:e,stats:t,logWarnings:r,context:n}){let i=Jia(t,r);n.logger.info(me.magenta(me.bold("[docs]"))+` ${i}`),Kia({violations:e,logWarnings:r,context:n,indent:" "})}function Kia({violations:e,logWarnings:t,context:r,indent:n}){let i=e.filter(s=>s.severity==="fatal"||s.severity==="error"),o=e.filter(s=>s.severity==="warning");if(t)for(let s of o.sort(Wif))qif({violation:s,context:r,indent:n});for(let s of i.sort(Wif))qif({violation:s,context:r,indent:n})}function qif({violation:e,context:t,indent:r}){let n=Wdy(e.severity),i=qdy(e);i===""?t.logger.info(`${r}${n} ${e.message}`):(t.logger.info(`${r}${n}`),t.logger.info(`${r} path: ${me.blue(i)}`),t.logger.info(`${r} issue: ${e.message}`)),t.logger.info("")}function qdy(e){let t=[];e.relativeFilepath!==""&&t.push(e.relativeFilepath);for(let r of e.nodePath){let n=typeof r=="string"?r:r.key;typeof r!="string"&&r.arrayIndex!=null&&(n+=`[${r.arrayIndex}]`),t.push(n)}return t.join(" -> ")}function Wdy(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 Jia(e,t){let r=[];return e.numErrors>0&&r.push(`${e.numErrors} error${e.numErrors!==1?"s":""}`),t&&e.numWarnings>0&&r.push(`${e.numWarnings} warning${e.numWarnings!==1?"s":""}`),r.join(", ")}function Alr(e){let t=0,r=0;for(let n of e)switch(n.severity){case"fatal":case"error":t+=1;break;case"warning":r+=1;break;default:Ee(n.severity)}return{numErrors:t,numWarnings:r}}function Hdy(e){return Alr(e)}function Wif(e,t){let r=e.relativeFilepath.localeCompare(t.relativeFilepath);return r!==0?r:JSON.stringify(e.nodePath).localeCompare(JSON.stringify(t.nodePath))}function Kdy({stats:e,logWarnings:t,elapsedMillis:r,context:n}){let i=r>0?` in ${(r/1e3).toFixed(3)} seconds.`:".",o=`Found ${e.numErrors} error${e.numErrors!==1?"s":""} and ${e.numWarnings} warning${e.numWarnings!==1?"s":""}`+i;!t&&e.numWarnings>0&&(o+=" Run fern check --warnings to print out the warnings not shown."),e.numErrors>0?n.logger.error(o):e.numWarnings>0?n.logger.warn(o):n.logger.info(me.green("All checks passed"))}async function Kif({project:e,cliContext:t,logWarnings:r,brokenLinks:n,errorOnBrokenLinks:i,isLocal:o,directFromOpenapi:s,commandLineApiWorkspace:a}){let c=await Ydy({project:e,cliContext:t,commandLineApiWorkspace:a}),u={...e,apiWorkspaces:[...e.apiWorkspaces,...c.map(({workspace:A})=>A)]},l=[],p,d=!1,f,m=a!=null?u.apiWorkspaces.filter(A=>A.workspaceName===a):u.apiWorkspaces,g=!1;try{let A=u.docsWorkspaces;if(A!=null){let I=n||i?[]:["valid-markdown-links"],x=await zw(u),v;await t.runTaskForWorkspace(A,async w=>{v=await Ktf({workspace:A,context:w,apiWorkspaces:u.apiWorkspaces,ossWorkspaces:x,errorOnBrokenLinks:i,excludeRules:I})}),v!=null&&(p={violations:v.violations,elapsedMillis:v.elapsedMillis},v.hasErrors&&(d=!0))}if(await Promise.all(m.map(async I=>{if(I.generatorsConfiguration?.groups.length===0&&I.type!=="fern")return;if(I instanceof Lu&&s){await t.runTaskForWorkspace(I,async v=>{await I.getIntermediateRepresentation({context:v,audiences:{type:"all"},enableUniqueErrorsPerEndpoint:!1,generateV1Examples:!1,logWarnings:r})});return}if(I instanceof $D){let v=De(I.absoluteFilePath,be.of(ly),be.of(hv));if(!await Ut(v)){f="missing api.yml",await t.runTask(async B=>(B.logger.error(`Missing file: ${hv}`),B.failAndThrow(void 0,void 0,{code:T.Code.ValidationError})));return}}let x;await t.runTaskForWorkspace(I,async v=>{let w=await I.toFernWorkspace({context:v});x=await fRs({workspace:w,context:v,ossWorkspace:I instanceof Lu?I:void 0})}),x!=null&&(l.push({apiName:x.apiName,violations:x.violations,elapsedMillis:x.elapsedMillis}),x.hasErrors&&(d=!0))})),g=(await t.runTask(I=>Hif({apiResults:l,docsResult:p,logWarnings:r,context:I}))).hasErrors,t.isJsonMode){let I=l.length>1;t.writeJsonToStdout(Gif({apiResults:l,docsResult:p,hasErrors:g||d,showApiNames:I}))}(g||d)&&(f="validation errors",t.failAndThrow(void 0,void 0,{code:T.Code.ValidationError}))}catch(A){throw f==null&&(f=A instanceof Error?A.message.slice(0,100):"unexpected error"),A}finally{await Promise.all(c.map(({cleanup:v})=>v()));let A=[...l.flatMap(v=>v.violations),...p?.violations??[]],y=[...new Set(A.map(v=>v.name).filter(v=>v!=null))],I=A.filter(v=>v.severity==="fatal"||v.severity==="error").length,x=A.filter(v=>v.severity==="warning").length;t.instrumentPostHogEvent({command:"fern check",properties:{validationRules:y,numErrors:I,numWarnings:x,passed:!g&&!d,abortReason:f}})}}async function Jdy(e){for(let t of e){let r=De(t.absoluteFilePath,be.of(vd));await Ut(r)&&sra(await GKe(r,!0))}}async function Ydy({project:e,cliContext:t,commandLineApiWorkspace:r}){await Jdy(r!=null?e.apiWorkspaces.filter(i=>i.workspaceName===r):e.apiWorkspaces);let n=[];try{for(let i of e.sdkConfigWorkspaces??[]){let o=De(i.absoluteFilePath,be.of(vd)),s=await GKe(o,!0);sra(s),n.push(await t.runTask(a=>Wji({sdkConfig:s.config,absolutePathToConfig:s.absolutePath,cliVersion:t.environment.packageVersion,workspaceName:i.workspaceName,context:a})))}return n}catch(i){throw await Promise.all(n.map(({cleanup:o})=>o())),i}}Fi();er();xY();On();var hpe=require("fs/promises");es();var Yia=Ae(require("path"),1);async function Jif({project:e,cliContext:t,sdkLanguage:r,preserveSchemaIds:n}){await Promise.all(e.apiWorkspaces.map(async i=>{await t.runTaskForWorkspace(i,async o=>{i instanceof bD?await Xdy({workspace:i,context:o}):await Zdy({workspace:await i.toFernWorkspace({context:o},{preserveSchemaIds:n}),context:o})})}))}async function Xdy({workspace:e,context:t}){for(let[r,n]of Object.entries(e.definition.importedDefinitions)){let i=De(e.absoluteFilePath,be.of(ly),be.of(r),be.of(`.${ly}`));await Yif({definition:n.definition,absolutePathToOutputDirectory:i}),t.logger.info(me.green(`Wrote imported definition at ${Yia.default.relative(process.cwd(),i)}`))}}async function Zdy({workspace:e,context:t}){let r=De(e.absoluteFilePath,be.of(`.${ly}`));await Yif({definition:e.definition,absolutePathToOutputDirectory:r}),t.logger.info(me.green(`Wrote definition to ${Yia.default.relative(process.cwd(),r)}`))}async function Yif({definition:e,absolutePathToOutputDirectory:t}){let r=(n,i)=>{let o={imports:0,types:1,services:2},s=n in o?o[n]:Object.keys(o).length,a=i in o?o[i]:Object.keys(o).length;return s==null?-1:a==null?1:s!==a?s-a:n.localeCompare(i)};await Ut(t)&&await(0,hpe.rm)(t,{recursive:!0}),await(0,hpe.mkdir)(t,{recursive:!0}),await(0,hpe.writeFile)(De(t,be.of(hv)),vr.dump(e.rootApiFile.contents,{sortKeys:r}));for(let[n,i]of Object.entries(e.packageMarkers)){let o=De(t,be.of(n));await(0,hpe.mkdir)(un(o),{recursive:!0}),await(0,hpe.writeFile)(o,vr.dump(i.contents,{sortKeys:r}))}for(let[n,i]of Object.entries(e.namedDefinitionFiles)){let o=De(t,be.of(n));await(0,hpe.mkdir)(un(o),{recursive:!0}),await(0,hpe.writeFile)(o,vr.dump(i.contents,{sortKeys:r}))}}LI();er();On();var Xif=require("fs/promises");async function Zif({project:e,outputPath:t,cliContext:r}){let n=e.docsWorkspaces;n!=null&&await r.runTaskForWorkspace(n,async i=>{let o=await zw(e),s=await Promise.all(e.apiWorkspaces.map(async u=>u.toFernWorkspace({context:i},{enableUniqueErrorsPerEndpoint:!0,detectGlobalHeaders:!1}))),c=await new p_({domain:n.config.instances[0]?.url??"http://localhost:8080",docsWorkspace:n,ossWorkspaces:o,apiWorkspaces:s,taskContext:i,editThisPage:void 0,uploadFiles:void 0,registerApi:void 0,targetAudiences:n.config.instances[0]?.audiences?Array.isArray(n.config.instances[0].audiences)?n.config.instances[0].audiences:[n.config.instances[0].audiences]:void 0,buildRefVersions:!1}).resolve();await(0,Xif.writeFile)(_t.of(t),JSON.stringify(c,null,2)),i.logger.info(me.green(`Docs definition written to ${t}`))})}Fi();Ct();kt();async function $if(e,t,r){let i=(await Ha(e,{commandLineApiWorkspace:r,defaultToAllApiWorkspaces:!1})).apiWorkspaces[0];if(i==null)return e.failAndThrow("No API workspace found.",void 0,{code:T.Code.ConfigError});let o=i.generatorsConfiguration;if(o==null)return e.failAndThrow("No generators.yml found in workspace.",void 0,{code:T.Code.ConfigError});let s=o.groups.find(l=>l.groupName===t);if(s==null){let l=o.groups.map(p=>p.groupName).join(", ");return e.failAndThrow(`Group "${t}" not found. Available groups: ${l}`,void 0,{code:T.Code.ConfigError})}let a=l=>Cf(l,{onError:p=>e.failAndThrow(p,void 0,{code:T.Code.ConfigError})}),c=s.generators.find(l=>l.raw?.github!=null&&lwe(l.raw.github));if(c?.raw?.github!=null&&lwe(c.raw.github)){let l=a(c.raw.github);return e.logger.info(`Using github config from group "${t}" generator "${c.name}" (mode: ${l.mode??"pull-request"})`),{githubRepo:l.uri,token:l.token,mode:l.mode==="push"?"push":"pull-request",branch:l.branch}}let u=s.generators.find(l=>l.raw?.github!=null&&"repository"in l.raw.github);if(u?.raw?.github!=null&&"repository"in u.raw.github){let l=a(u.raw.github),p=process.env.GITHUB_TOKEN;return e.logger.info(`Using repository config from group "${t}" generator "${u.name}"`+(p!=null?". Using GITHUB_TOKEN from environment.":".")),{githubRepo:l.repository,token:p,mode:l.mode==="push"?"push":"pull-request",branch:"branch"in l?l.branch:void 0}}return e.failAndThrow(`No generator in group "${t}" has a github configuration.`,void 0,{code:T.Code.ConfigError})}var fMi=$dy();function $dy(){return typeof window<"u"&&typeof window.document<"u"?{type:"browser",version:window.navigator.userAgent}:typeof globalThis<"u"&&globalThis?.navigator?.userAgent==="Cloudflare-Workers"?{type:"workerd"}:typeof EdgeRuntime=="string"?{type:"edge-runtime"}:typeof self=="object"&&typeof self?.importScripts=="function"&&(self.constructor?.name==="DedicatedWorkerGlobalScope"||self.constructor?.name==="ServiceWorkerGlobalScope"||self.constructor?.name==="SharedWorkerGlobalScope")?{type:"web-worker"}:typeof Deno<"u"&&typeof Deno.version<"u"&&typeof Deno.version.deno<"u"?{type:"deno",version:Deno.version.deno}:typeof Bun<"u"&&typeof Bun.version<"u"?{type:"bun",version:Bun.version}:typeof process<"u"&&"version"in process&&!!process.version&&"versions"in process&&!!process.versions?.node?{type:"node",version:process.versions.node,parsedVersion:Number(process.versions.node.split(".")[0])}:typeof navigator<"u"&&navigator?.product==="ReactNative"?{type:"react-native"}:{type:"unknown"}}kt();function eof(e,{isLocal:t}){if(!yji({cliName:e.environment.cliName,packageVersion:e.environment.packageVersion,isLocal:t}))return;let r=!1,n=async(i,o)=>{r&&process.exit(1),r=!0;try{e.failWithoutThrowing(i,o,{code:T.Code.InternalError})}catch{}try{await e.exit({code:1})}catch{process.exit(1)}};process.on("uncaughtException",i=>{n("uncaught exception",i)}),process.on("unhandledRejection",i=>{n("unhandled promise rejection",i)})}function Xia(){return(process.env.FERN_USE_SDK_CONFIG??"true"??"true").trim().toLowerCase()==="true"}cQt();var emy=new Set(["org"]);function tof(e){let t=Zia(e);return t!=null&&emy.has(t)}function Zia(e){let t=TEe(e);for(let r=0;r<t.length;r++){let n=t[r];if(n!=null){if(n.startsWith("-")){n==="--log-level"&&r++;continue}return n}}}if(process.platform==="linux"&&parseInt(process.versions.node.split(".")[0]??"0",10)>=26&&process.env.UV_USE_IO_URING!=="0"){let e=(0,Bdf.spawnSync)(process.execPath,process.argv.slice(1),{env:{...process.env,UV_USE_IO_URING:"0"},stdio:"inherit"});e.signal&&process.kill(process.pid,e.signal),process.exit(e.status??1)}process.env.UV_THREADPOOL_SIZE==null&&(process.env.UV_THREADPOOL_SIZE="8");zvs()?Qvs():(jvs(typeof __filename=="string"?__filename:void 0),sSy());async function sSy(){let e=process.argv.includes("--get-yargs-completions");e||INt();let t=process.argv.includes("--local"),r=await xji.create(process.stdout,process.stderr,{isLocal:t});e&&r.suppressUpgradeMessage(),eof(r,{isLocal:t});let n=async()=>{await r.exit()};if(fMi.type==="node"&&fMi.parsedVersion!=null&&fMi.parsedVersion>=18){let{setGlobalDispatcher:i,Agent:o}=await Promise.resolve().then(()=>Ae(vca(),1));i(new o({connect:{timeout:2147483647},bodyTimeout:0,headersTimeout:2147483647}))}if(process.env.HTTP_PROXY!=null){let{setGlobalDispatcher:i,ProxyAgent:o}=await Promise.resolve().then(()=>Ae(vca(),1)),s=new o(process.env.HTTP_PROXY);i(s)}process.on("SIGINT",async()=>{r.suppressUpgradeMessage(),await n()});try{let i=process.env[slr];if(i!=null&&process.chdir(i),e||tof(process.argv))await Odf(r);else{let o=await aSy(r);r.environment.packageVersion===o?await Odf(r):await clr({version:o,cliContext:r})}}catch(i){r.failWithoutThrowing(void 0,i)}await n()}async function Odf(e){let t=TEe(process.argv);if(t[0]==="completion"){Nta(t).scriptName(e.environment.cliName).completion("completion","Generate shell completion script").parse();return}let r=Nta(t).scriptName(e.environment.cliName).version(!1).completion("completion","Generate shell completion script").fail((n,i,o)=>{i==null&&(o.showHelp(),e.logger.error(n))}).strict().exitProcess(!1).command("$0",!1,n=>n.option("version",{describe:"Print current version",alias:"v"}).version(!1),n=>{n.version!=null?e.logger.info(e.environment.packageVersion):(r.showHelp(),e.failAndThrow(void 0,void 0,{code:T.Code.ConfigError}))}).option("log-level",{default:Xn.Info,choices:mS}).demandCommand().recommendCommands();uSy(r,e),lSy(r,e),cSy(r,e),pSy(r,e),fSy(r,e),dSy(r,e),mSy(r,e),ySy(r,e),hSy(r,e),gSy(r,e),ASy(r,e),ISy(r,e),bSy(r,e),ESy(r,e),TSy(r,e),PSy(r,e),OSy(r,e),BSy(r,e),zSy(r,e),QSy(r,e),DSy(r,e),kSy(r,e),jSy(r,e),RSy(r,e),xSy(r,e),SSy(r,e),vSy({cli:r,cliContext:e,onRun:()=>{e.suppressUpgradeMessage()}}),CSy(r,e),n1y(r,e),i1y(r,e),o1y(r,e),E1y(r,e),h1y(r,e),a1y(r,e),u1y(r,e),Q7p(r,e),M7p(r,e),w1y(r,e),g1y(r,e),b1y(r,e),r.middleware(async n=>{e.setLogLevel(n["log-level"]);let i=n._[0]==="sdk"&&n._[1]==="migrate"&&n.output==="-";(n.json===!0||i)&&e.enableJsonMode(),e.logFernVersionDebug()}),await r.parse()}async function aSy(e){if(process.env.FERN_NO_VERSION_REDIRECTION==="true"){let r=await Cca(e);return r!=null&&Zia(process.argv)!=="upgrade"&&await ztf({cliContext:e,orgId:r,currentVersion:e.environment.packageVersion}),e.environment.packageVersion}let t=await sd();if(t!=null){let r=await e.runTask(i=>aw({directory:t,context:i})),n;return r.version==="*"?n=e.environment.packageVersion:r.version==="latest"?n=await Zbe({cliEnvironment:e.environment}):n=r.version,await jtf({cliContext:e,orgId:r.organization,intendedVersion:n})}return Zbe({cliEnvironment:e.environment})}async function Cca(e){let t=await sd();if(t!=null)return(await e.runTask(n=>aw({directory:t,context:n}))).organization}function cSy(e,t){e.command("init","Initialize a Fern API",r=>r.option("api",{boolean:!0,description:"Initialize an api."}).option("docs",{boolean:!0,description:"Initialize a docs website."}).option("organization",{alias:"org",type:"string",description:"Organization name"}).option("openapi",{type:"string",description:"Filepath or url to an existing OpenAPI spec"}).option("fern-definition",{boolean:!0,description:"Initialize with a sample Fern Definition instead of an OpenAPI spec"}).option("mintlify",{type:"string",description:"Migrate docs from Mintlify provided a path to a mint.json file"}).option("readme",{type:"string",description:"Migrate docs from Readme provided a URL to a Readme generated docs site"}),async r=>{if(r.organization==null){let n=await Cca(t);n!=null?r.organization=n:r.organization=await t.getInput({message:"Please enter your organization"})}if(r.api!=null&&r.docs!=null)return t.failWithoutThrowing("Cannot specify both --api and --docs. Please choose one.",void 0,{code:T.Code.ConfigError});if(r.readme!=null&&r.mintlify!=null)return t.failWithoutThrowing("Cannot specify both --readme and --mintlify. Please choose one.",void 0,{code:T.Code.ConfigError});if(r.openapi!=null&&r["fern-definition"]===!0)return t.failWithoutThrowing("Cannot specify both --openapi and --fern-definition. Please choose one.",void 0,{code:T.Code.ConfigError});if(r.readme!=null)await t.runTask(async n=>{await Xea({readmeUrl:r.readme,organization:r.organization??"fern",taskContext:n,versionOfCli:await Zbe({cliEnvironment:t.environment})})});else if(r.docs!=null)await t.runTask(async n=>{await our({organization:r.organization,versionOfCli:await Zbe({cliEnvironment:t.environment}),taskContext:n,openApi:r.openapi,useSdkConfig:Xia()})});else if(r.mintlify!=null)await t.runTask(async n=>{await Fea({pathToMintJson:r.mintlify,organization:r.organization??"fern",taskContext:n,versionOfCli:await Zbe({cliEnvironment:t.environment})})});else{let n=r["fern-definition"]===!0,i=Xia()&&!n,o,s;if(r.openapi!=null){if(P2(r.openapi)){if(s=r.openapi,!i){let a=await iur({url:r.openapi,logger:t.logger});a.status===Kbe.Failure&&t.failAndThrow(a.errorMessage,void 0,{code:T.Code.NetworkError}),o=_t.of(a.filePath)}}else o=_t.of(Yn(Za(),r.openapi));o!=null&&!await Ut(o)&&t.failAndThrow(`${o} does not exist`,void 0,{code:T.Code.ConfigError})}await t.runTask(async a=>{await Pea({organization:r.organization,versionOfCli:await Zbe({cliEnvironment:t.environment}),context:a,openApiPath:o,openApiUrl:s,useFernDefinition:n,useSdkConfig:i,includeDocs:r.api==null})})}})}function uSy(e,t){e.command("diff","Diff two versions of an API",r=>r.option("from",{string:!0,demandOption:!0,description:"The previous version of the API"}).option("to",{string:!0,demandOption:!0,description:"The next version of the API"}).option("from-version",{string:!0,description:"The previous version of the API (e.g. 1.1.0)"}).option("from-generator-version",{string:!0,description:"The previous version of the generator (e.g. 1.1.0)"}).option("to-generator-version",{string:!0,description:"The next version of the generator (e.g. 1.1.0)"}).option("quiet",{boolean:!0,default:!1,alias:"q",description:"Whether to suppress output written to stderr"}).middleware(n=>{if(!Cyr(n.fromGeneratorVersion,n.toGeneratorVersion))throw new T({message:"Both --from-generator-version and --to-generator-version must be provided together, or neither should be provided",code:T.Code.ValidationError})}),async r=>{if(process.env.__FERN_DIFF_HEAP_RESPAWNED==null){let a=await import("fs"),c=1024*1024*1024,u=Yn(Za(),r.from),l=Yn(Za(),r.to),p=a.statSync(u,{throwIfNoEntry:!1})?.size??0,d=a.statSync(l,{throwIfNoEntry:!1})?.size??0;if(p>c||d>c){let{spawnSync:f}=await import("child_process"),g=f(process.execPath,["--max-old-space-size=8192",...process.execArgv,...process.argv.slice(1)],{env:{...process.env,__FERN_DIFF_HEAP_RESPAWNED:"1"},stdio:"inherit"});await t.exit({code:g.status??1});return}}let n=Iyr(r.fromVersion),i=vyr({from:r.fromGeneratorVersion,to:r.toGeneratorVersion}),o=await Htf({context:t,from:r.from,to:r.to,fromVersion:n,generatorVersions:i});if(n!=null){let{errors:a,...c}=o;t.logger.info(JSON.stringify(c))}!r.quiet&&o.errors.length>0&&t.stderr.info(o.errors.join(`
|
|
5385
5385
|
`));let s=o.bump==="major"?1:0;await t.exit({code:s})})}function lSy(e,t){e.command("sdk-diff <from-dir> <to-dir>",!1,r=>r.positional("from-dir",{type:"string",demandOption:!0,description:"Path to the directory containing the previous version of the SDK"}).positional("to-dir",{type:"string",demandOption:!0,description:"Path to the directory containing the next version of the SDK"}).option("json",{boolean:!0,default:!1,description:"Output result as JSON"}),async r=>{t.instrumentPostHogEvent({command:"fern sdk-diff"});let n=await Ha(t,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0}),i=await Pnf({context:t,project:n,fromDir:r.fromDir,toDir:r.toDir});r.json?t.logger.info(JSON.stringify(i,null,2)):(t.logger.info(`
|
|
5386
5386
|
`+i.message),t.logger.info(`
|
|
5387
5387
|
Version Bump: ${i.version_bump}`))})}function pSy(e,t){e.command("token","Generate a Fern Token",r=>r.option("organization",{alias:"org",type:"string",description:"The organization to create a token for. Defaults to the one in `fern.config.json`"}),async r=>{await t.runTask(async n=>{await Bif({orgId:r.organization??(await Ha(t,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0})).config.organization,taskContext:n})})})}function fSy(e,t){e.command("add <generator>",`Add a code generator to ${zu}`,r=>r.positional("generator",{type:"string",demandOption:!0}).option("api",{string:!0,description:"Only run the command on the provided API"}).option("group",{string:!0,description:"Add the generator to the specified group"}),async r=>{let n=xca(r.generator,t);await _7p({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1}),generatorName:n,groupName:r.group,cliContext:t})})}function dSy(e,t){e.command(["generate"],"Generate SDKs or docs from legacy generator groups and SDK Config targets",r=>r.option("api",{type:"string",array:!0,description:"If multiple APIs, specify the name with --api <name>. Pass --api multiple times to generate for several APIs at once."}).option("docs",{string:!0,description:"If multiple docs sites, specify the name with --docs <name>. Otherwise just --docs."}).option("instance",{string:!0,description:"The url for the instance of docs (e.g. --instance acme.docs.buildwithfern.com)"}).option("preview",{boolean:!0,default:!1,description:"Whether to generate a preview link for the docs"}).option("id",{type:"string",description:"A stable identifier for the preview. Reusing the same ID overwrites the previous preview, keeping the URL stable."}).option("group",{type:"string",array:!0,description:"A legacy group from generators.yml or generators.legacy.yml. Pass --group multiple times to generate several groups."}).option("target",{type:"string",array:!0,description:"A target language from sdk-config.yml or --sdk-config. Pass --target multiple times to generate several targets."}).option("generator",{type:"string",description:"A specific generator within selected legacy groups. With --sdk-config and no --target, filters the explicit SDK Config for backward compatibility."}).option("mode",{choices:Object.values(mJp),description:"Defaults to the mode specified in generators.yml"}).option("version",{type:"string",description:"The version for the generated packages"}).option("printZipUrl",{boolean:!0,hidden:!0,default:!1}).option("local",{boolean:!0,default:!1,description:"Run the generator(s) locally using Docker. SDK Config targets run on the on-prem generator."}).option("keepDocker",{boolean:!0,default:!1,description:"Prevent auto-deletion of the Docker containers."}).option("force",{boolean:!0,default:!1,description:"Ignore prompts to confirm generation, defaults to false"}).option("broken-links",{boolean:!0,description:"Log a warning if there are broken links in the docs.",default:!1}).option("strict-broken-links",{boolean:!0,description:"Throw an error (rather than logging a warning) if there are broken links in the docs.",default:!1}).option("disable-snippets",{boolean:!0,description:"Disable snippets in docs generation.",default:!1}).option("runner",{choices:["docker","podman"],description:"Choose the container runtime to use for local generation.",default:void 0}).option("lfs-override",{type:"string",hidden:!0,description:"Override output mode to local-file-system with the specified path"}).option("sdk-config",{type:"string",description:"Path to the SDK Config v1 YAML or JSON file to use instead of sdk-config.yml discovered for the selected API"}).option("disable-dynamic-snippets",{boolean:!0,description:"Disable dynamic SDK snippets in docs generation",default:!1}).option("prompt",{boolean:!0,description:"Prompt for confirmation before generating (use --no-prompt to skip)",default:!0}).option("skip-upload",{boolean:!0,description:"Skip asset upload step and generate fake links for preview",default:!1}).option("fernignore",{type:"string",description:"Path to a custom .fernignore file. For generators with local file system output, the .fernignore in the output directory is used automatically if not specified"}).option("dynamic-ir-only",{boolean:!0,description:"Only upload dynamic IR for specified version, skip SDK generation (remote generation only)",default:!1}).option("output",{type:"string",description:"Custom output directory (currently only supported with --preview for SDK generation)"}).option("replay",{boolean:!0,default:!0,hidden:!0,description:"Run replay after generation (use --no-replay to skip)"}).option("verify",{boolean:!0,default:!1,hidden:!0,description:"Run the generator's verify.sh script in a validator container after generation (local generation only)"}).option("retry-rate-limited",{boolean:!0,default:!1,description:"Automatically retry with exponential backoff when receiving 429 Too Many Requests responses"}).option("require-env-vars",{boolean:!0,default:!0,description:"Require all referenced environment variables to be defined (use --no-require-env-vars to substitute empty strings for missing variables)"}).option("skip-fernignore",{boolean:!0,default:!1,description:"Skip the .fernignore file and generate all files. For remote generation, uploads an empty .fernignore. For local generation, skips reading .fernignore from the output directory."}).option("skip-if-no-diff",{boolean:!0,default:!1,description:"Skip opening a PR / pushing when the generated output has no diff from the base branch."}).option("generate-tests",{boolean:!0,default:!1,description:"Generate test files even when generating to a local file system (tests are normally only generated for GitHub output modes)"}).option("package",{boolean:!0,default:!1,description:"After generating to the local file system, build distributable package artifacts (npm tarball, wheel, JAR, NuGet package, gem, etc.) into a fern-dist/ folder inside the output directory."}).option("package-mode",{choices:["host","docker"],default:"host",description:"Where --package runs the packaging toolchain: 'host' uses toolchains installed on this machine; 'docker' runs each toolchain inside an official Docker image (node, python, gradle, dotnet/sdk, ruby, composer, rust) with the output directory mounted, so no local toolchains are needed. Docker mode forwards HTTP(S)_PROXY/NO_PROXY and, for Java, gives Gradle a persistent cache under ~/.fern/gradle-docker-home plus the host's gradle.properties and init.d (from GRADLE_USER_HOME or ~/.gradle)."}).option("package-only",{boolean:!0,default:!1,description:"Like --package, but only the fern-dist/ artifact is kept in the output directory \u2014 the generated SDK source is removed after the package is built."}).option("private",{boolean:!0,default:!1,description:"Include OpenAPI elements marked `x-twilio.libraryVisibility: private` (SDKs) or `x-twilio.docsVisibility: private` (--docs) in the output. By default only `public` elements are generated; `hidden` elements are always excluded."}).example("$0 generate --api my-api","Generate the legacy default group and every target in the API's default sdk-config.yml").example("$0 generate --api my-api --group python-sdk","Generate one legacy group").example("$0 generate --api my-api --target typescript","Generate one SDK Config target").example("$0 generate --api my-api --group python-sdk --target typescript","Generate legacy and SDK Config selections together").example("$0 generate --api my-api --sdk-config ./internal-sdk-config.yml --target typescript","Generate a target from an alternate SDK Config file"),async r=>{if(r.api!=null&&r.api.length>0&&r.docs!=null)return t.failWithoutThrowing("Cannot specify both --api and --docs. Please choose one.",void 0,{code:T.Code.ConfigError});if(r.id!=null&&!r.preview)return t.failWithoutThrowing("The --id flag can only be used with --preview.",void 0,{code:T.Code.ConfigError});if(r.id!=null&&r.docs==null)return t.failWithoutThrowing("The --id flag can only be used with --docs.",void 0,{code:T.Code.ConfigError});if(r.skipUpload&&!r.preview)return t.failWithoutThrowing("The --skip-upload flag can only be used with --preview.",void 0,{code:T.Code.ConfigError});if(r.skipUpload&&r.docs==null)return t.failWithoutThrowing("The --skip-upload flag can only be used with --docs.",void 0,{code:T.Code.ConfigError});if(r.fernignore!=null&&(r.local||r.runner!=null))return t.failWithoutThrowing("The --fernignore flag is not supported with local generation (--local or --runner). It can only be used with remote generation.",void 0,{code:T.Code.ConfigError});if(r["skip-fernignore"]&&r.fernignore!=null)return t.failWithoutThrowing("The --skip-fernignore and --fernignore flags cannot be used together.",void 0,{code:T.Code.ConfigError});if(r["dynamic-ir-only"]&&(r.local||r.runner!=null))return t.failWithoutThrowing("The --dynamic-ir-only flag is not supported with local generation (--local or --runner). It can only be used with remote generation.",void 0,{code:T.Code.ConfigError});if(r["dynamic-ir-only"]&&r.version==null)return t.failWithoutThrowing("The --dynamic-ir-only flag requires a version to be specified with --version.",void 0,{code:T.Code.ConfigError});if(r["dynamic-ir-only"]&&r.docs!=null)return t.failWithoutThrowing("The --dynamic-ir-only flag can only be used for API generation, not docs generation.",void 0,{code:T.Code.ConfigError});if(r.output!=null&&!r.preview)return t.failWithoutThrowing("The --output flag currently only works with --preview.",void 0,{code:T.Code.ConfigError});let n=r.package||r.packageOnly;if(n&&r.preview)return t.failWithoutThrowing("The --package flag cannot be used with --preview.",void 0,{code:T.Code.ConfigError});if(n&&r.docs!=null)return t.failWithoutThrowing("The --package flag can only be used for API generation, not docs generation.",void 0,{code:T.Code.ConfigError});if(r.packageMode!=="host"&&!n)return t.failWithoutThrowing("The --package-mode flag can only be used with --package.",void 0,{code:T.Code.ConfigError});if(r.output!=null&&r.docs!=null)return t.failWithoutThrowing("The --output flag is not supported for docs generation.",void 0,{code:T.Code.ConfigError});if(r.sdkConfig!=null&&r.docs!=null)return t.failWithoutThrowing("The --sdk-config flag can only be used for API generation, not docs generation.",void 0,{code:T.Code.ConfigError});if(r.target!=null&&r.target.length>0&&r.docs!=null)return t.failWithoutThrowing("The --target flag can only be used for API generation, not docs generation.",void 0,{code:T.Code.ConfigError});let i=r.generator!=null?xca(r.generator,t):void 0,{generatorName:o,generatorIndex:s}=Pji(i);return r.api!=null&&r.api.length>0?await Gur({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1,skipApiWorkspaces:r.sdkConfig!=null&&r.group==null}),cliContext:t,version:r.version,groupNames:r.group,targetNames:r.target,generatorName:o,generatorIndex:s,shouldLogS3Url:r.printZipUrl,keepDocker:r.keepDocker,useLocalDocker:r.local||r.runner!=null,preview:r.preview,mode:r.mode,force:r.force,runner:r.runner,inspect:!1,lfsOverride:r.lfsOverride,sdkConfigPath:r.sdkConfig,fernignorePath:r.fernignore,skipFernignore:r["skip-fernignore"],dynamicIrOnly:r["dynamic-ir-only"],outputDir:r.output,noReplay:!r.replay,verify:r.verify,retryRateLimited:r["retry-rate-limited"],requireEnvVars:r["require-env-vars"],skipIfNoDiff:r["skip-if-no-diff"],generateTests:r["generate-tests"],pack:n,packMode:r.packageMode,packOnly:r.packageOnly,includePrivate:r.private}):r.docs!=null?(r.group!=null&&r.group.length>0&&t.logger.warn("--group is ignored when generating docs"),r.generator!=null&&t.logger.warn("--generator is ignored when generating docs"),r.version!=null&&t.logger.warn("--version is ignored when generating docs"),await Prf({project:await Ha(t,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0},!0),cliContext:t,instance:r.instance,preview:r.preview,previewId:r.id,force:r.force,brokenLinks:r.brokenLinks,strictBrokenLinks:r.strictBrokenLinks,disableTemplates:r.disableSnippets,noPrompt:!r.prompt,skipUpload:r.skipUpload,includePrivate:r.private})):await Gur({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1,skipApiWorkspaces:r.sdkConfig!=null&&r.group==null}),cliContext:t,version:r.version,groupNames:r.group,targetNames:r.target,generatorName:o,generatorIndex:s,shouldLogS3Url:r.printZipUrl,keepDocker:r.keepDocker,useLocalDocker:r.local,preview:r.preview,mode:r.mode,force:r.force,runner:r.runner,inspect:!1,lfsOverride:r.lfsOverride,sdkConfigPath:r.sdkConfig,fernignorePath:r.fernignore,skipFernignore:r["skip-fernignore"],dynamicIrOnly:r["dynamic-ir-only"],outputDir:r.output,noReplay:!r.replay,verify:r.verify,retryRateLimited:r["retry-rate-limited"],requireEnvVars:r["require-env-vars"],skipIfNoDiff:r["skip-if-no-diff"],generateTests:r["generate-tests"],pack:n,packMode:r.packageMode,packOnly:r.packageOnly,includePrivate:r.private})})}function mSy(e,t){e.command("ir <path-to-output>","Generate IR (Intermediate Representation)",r=>r.positional("path-to-output",{type:"string",description:"Path to write intermediate representation (IR)",demandOption:!0}).option("api",{string:!0,description:"Only run the command on the provided API"}).option("version",{string:!0,description:"The version of IR to produce"}).option("language",{choices:Object.values(Hr.GenerationLanguage),description:"Generate IR for a particular language"}).option("audience",{type:"array",string:!0,default:[],description:"Filter the IR for certain audiences"}).option("smart-casing",{boolean:!0,description:"Whether to use smart casing"}).option("from-openapi",{boolean:!0,description:"Whether to use the new parser and go directly from OpenAPI to IR",default:!1}).option("disable-examples",{boolean:!0,description:"Whether to disable automatic example generation in the IR",default:!1}),async r=>{await Nrf({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1,sdkLanguage:r.language}),irFilepath:Yn(Za(),r.pathToOutput),cliContext:t,generationLanguage:r.language,audiences:r.audience.length>0?{type:"select",audiences:r.audience}:{type:"all"},version:r.version,keywords:void 0,smartCasing:r.smartCasing??!1,readme:void 0,directFromOpenapi:r.fromOpenapi,disableExamples:r.disableExamples})})}function hSy(e,t){e.command("openapi-ir <path-to-output>",!1,r=>r.positional("path-to-output",{type:"string",description:"Path to write intermediate representation (IR)",demandOption:!0}).option("language",{choices:Object.values(Hr.GenerationLanguage),description:"Generate IR for a particular language"}).option("api",{string:!0,description:"Only run the command on the provided API"}),async r=>{await Mrf({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1,sdkLanguage:r.language}),irFilepath:Yn(Za(),r.pathToOutput),cliContext:t,sdkLanguage:r.language})})}function gSy(e,t){e.command("resolve-specs <path-to-output>",!1,r=>r.positional("path-to-output",{type:"string",description:"Path to write resolved specs",demandOption:!0}).option("api",{string:!0,description:"Only run the command on the provided API"}),async r=>{await Snf({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!0}),outputDir:_t.of(Yn(Za(),r.pathToOutput)),cliContext:t})})}function ASy(e,t){e.command("dynamic-ir <path-to-output>",!1,r=>r.positional("path-to-output",{type:"string",description:"Path to write intermediate representation (IR)",demandOption:!0}).option("api",{string:!0,description:"Only run the command on the provided API"}).option("version",{string:!0,description:"The version of IR to produce"}).option("language",{choices:Object.values(Hr.GenerationLanguage),description:"Generate IR for a particular language"}).option("audience",{type:"array",string:!0,default:[],description:"Filter the IR for certain audiences"}).option("smart-casing",{boolean:!0,description:"Whether to use smart casing"}).option("disable-examples",{boolean:!0,description:"Whether to suppress examples from being included in the IR"}),async r=>{await Rrf({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1,sdkLanguage:r.language}),irFilepath:Yn(Za(),r.pathToOutput),cliContext:t,generationLanguage:r.language,audiences:{type:"all"},version:r.version,keywords:void 0,smartCasing:r.smartCasing??!1,disableDynamicExamples:r.disableExamples??!1})})}function ySy(e,t){e.command("fdr <path-to-output>",!1,r=>r.positional("path-to-output",{type:"string",description:"Path to write FDR API definition",demandOption:!0}).option("api",{string:!0,description:"Only run the command on the provided API"}).option("audience",{type:"array",string:!0,default:[],description:"Filter the FDR API definition for certain audiences"}).option("from-openapi",{boolean:!0,description:"Whether to use the new parser and go directly from OpenAPI to IR",default:!1}),async r=>{r.fromOpenapi?await zrf({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1}),outputFilepath:Yn(Za(),r.pathToOutput),cliContext:t,audiences:r.audience.length>0?{type:"select",audiences:r.audience}:{type:"all"}}):await krf({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1}),outputFilepath:Yn(Za(),r.pathToOutput),cliContext:t,audiences:r.audience.length>0?{type:"select",audiences:r.audience}:{type:"all"}})})}function bSy(e,t){e.command(["register"],!1,r=>r.option("version",{type:"string",description:"The version for the registered api"}).option("api",{string:!0,description:"Only run the command on the provided API"}),async r=>{let n=await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1}),i=await t.runTask(o=>pd(o));await xnf({project:n,cliContext:t,token:i,version:r.version})})}function ESy(e,t){e.command(["register-v2"],!1,r=>r.option("api",{string:!0,description:"Only run the command on the provided API"}),async r=>{let n=await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1}),i=await t.runTask(o=>pd(o));await wnf({project:n,cliContext:t,token:i})})}function ISy(e,t){e.command("check","Validates your Fern Definition. Logs errors.",r=>r.option("api",{string:!0,description:"Only run the command on the provided API"}).option("warnings",{boolean:!0,description:"Log warnings in addition to errors.",default:!1}).option("broken-links",{boolean:!0,description:"Log a warning if there are broken links in the docs.",default:!1,deprecated:"Use docs.yml `check.rules.broken-links: warn` instead."}).option("strict-broken-links",{boolean:!0,description:"Throw an error (rather than logging a warning) if there are broken links in the docs.",default:!1,deprecated:"Use docs.yml `check.rules.broken-links: error` instead."}).option("local",{boolean:!0,description:"Run validation locally without sending data to Fern API.",default:!1}).option("from-openapi",{boolean:!0,description:"Whether to use the new parser and go directly from OpenAPI to IR",default:!1}).option("json",{boolean:!0,description:"Output results as JSON to stdout.",default:!1}),async r=>{let n;try{n=await Ha(t,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0}),r.api!=null&&!n.apiWorkspaces.some(i=>i.workspaceName===r.api)&&!n.sdkConfigWorkspaces?.some(i=>i.workspaceName===r.api)&&(t.instrumentPostHogEvent({command:"fern check",properties:{passed:!1,abortReason:`API does not exist: ${r.api}`}}),t.failAndThrow(`API does not exist: ${r.api}`,void 0,{code:T.Code.ConfigError})),await Kif({project:n,cliContext:t,logWarnings:r.warnings,brokenLinks:r.brokenLinks,errorOnBrokenLinks:r.strictBrokenLinks,directFromOpenapi:r.fromOpenapi,commandLineApiWorkspace:r.api})}catch(i){if(n==null){let o=i instanceof Error?i.message.slice(0,100):"project load failed";t.instrumentPostHogEvent({command:"fern check",properties:{passed:!1,abortReason:o}})}throw i}})}function vSy({cli:e,cliContext:t,onRun:r}){e.command("upgrade",`Upgrades Fern CLI version in ${pI}`,n=>n.option("rc",{boolean:!0,hidden:!0,default:!1}).option("version",{string:!0,description:"The version to upgrade to. Defaults to the latest release."}).option("to",{string:!0,hidden:!0}).option("from",{string:!0,description:"The version to migrate from. Use this to manually run migrations when upgrading from an older CLI version."}).option("from-git",{boolean:!0,hidden:!0}).option("yes",{alias:"y",boolean:!0,default:!1,description:"Automatically answer yes to migration prompts."}),async n=>{await _Qi({cliContext:t,includePreReleases:n.rc,targetVersion:n.to??n.version,fromVersion:n.from,fromGit:n["from-git"],yes:n.yes}),r()})}function CSy(e,t){e.command("downgrade <version>",`Downgrades Fern CLI version in ${pI}`,r=>r.positional("version",{type:"string",description:"The version to downgrade to",demandOption:!0}),async r=>{await Arf({cliContext:t,targetVersion:r.version})})}function xSy(e,t){e.command("api","Commands for managing your API specs",r=>(wSy(r,t),s1y(r,t),r))}function wSy(e,t){e.command("update",`Pulls the latest OpenAPI spec from the specified origin in ${zu} and updates the local spec.`,r=>r.option("api",{string:!0,description:"The API to update the spec for. If not specified, all APIs with a declared origin will be updated."}).option("indent",{type:"number",description:"Indentation width in spaces (default: 2)",default:2}),async r=>{t.instrumentPostHogEvent({command:"fern api update"}),await zif({cliContext:t,project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!0}),indent:r.indent})})}function SSy(e,t){e.command("self-update [version]","Updates the globally installed Fern CLI to the latest version or the specified version",r=>r.positional("version",{type:"string",description:"The version to update to (e.g., 0.85.0, 10). Defaults to latest."}).option("dry-run",{type:"boolean",description:"Show what would be executed without actually running the update",default:!1}),async r=>{t.instrumentPostHogEvent({command:"fern self-update"}),await Oif({cliContext:t,version:r.version,dryRun:r.dryRun})})}function TSy(e,t){e.command("login","Log in to Fern via GitHub",r=>r.option("device-code",{boolean:!0,default:!1,description:"Use device code authorization"}).option("email",{string:!0,description:"Log in via enterprise SSO using your email address"}),async r=>{await t.runTask(async n=>{t.instrumentPostHogEvent({command:"fern login"}),await vKt(n,{useDeviceCodeFlow:r.deviceCode,email:r.email})})})}function OSy(e,t){e.command("mcp","Manage the Fern MCP server",r=>{r.command("install","Connect your coding agent to the Fern MCP server using your Fern login",n=>n.option("client",{type:"string",array:!0,choices:tMi,description:"The coding agent(s) to configure. Defaults to every one found on this machine."}).option("organization",{alias:"org",type:"string",description:"The organization to connect to. Defaults to the one in `fern.config.json`."}),async n=>{t.instrumentPostHogEvent({command:"fern mcp install"}),await t.runTask(async i=>{await cnf({clients:n.client,organization:n.organization??await Cca(t),context:i})})}).demandCommand(1,"Specify a subcommand, e.g. `fern mcp install`.")})}function PSy(e,t){e.command("logout","Log out of Fern",r=>r,async()=>{await t.runTask(async r=>{t.instrumentPostHogEvent({command:"fern logout"}),await PZo(r)})})}function BSy(e,t){e.command("format","Formats your Fern Definition",r=>r.option("ci",{boolean:!0,default:!1,description:"Fail with non-zero exit status if files are not formatted correctly."}).option("api",{string:!0,description:"Only run the command on the provided API"}),async r=>{t.instrumentPostHogEvent({command:"fern format"}),await Srf({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!0}),cliContext:t,shouldFix:!r.ci})})}function RSy(e,t){e.command("test",!1,r=>r.option("api",{string:!0,description:"The API to mock."}).option("command",{string:!0,description:"The command to run to test your SDK."}).option("language",{choices:Object.values(Hr.GenerationLanguage),description:"Run the tests configured to a specific language"}),async r=>{t.instrumentPostHogEvent({command:"fern test"}),await Pif({cliContext:t,project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1,nameOverride:".mock",sdkLanguage:r.language}),testCommand:r.command,generationLanguage:r.language})})}function DSy(e,t){e.command("mock",!1,r=>r.option("port",{number:!0,description:"The port the server binds to."}).option("api",{string:!0,description:"The API to mock."}),async r=>{t.instrumentPostHogEvent({command:"fern mock"}),await Enf({cliContext:t,project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!1}),port:r.port})})}function kSy(e,t){e.command("overrides","Commands for managing OpenAPI overrides",r=>(FSy(r,t),NSy(r,t),r))}function FSy(e,t){e.command("compare <original> <modified>","Compare two OpenAPI specs and generate an overrides file from the differences.",r=>r.positional("original",{type:"string",description:"Path to the original OpenAPI spec",demandOption:!0}).positional("modified",{type:"string",description:"Path to the modified OpenAPI spec",demandOption:!0}).option("output",{type:"string",alias:"o",description:"Path to write the overrides file (defaults to <original>-overrides.yml)"}),async r=>{t.instrumentPostHogEvent({command:"fern overrides compare"});let n=Yn(Za(),r.original),i=Yn(Za(),r.modified),o=r.output!=null?Yn(Za(),r.output):void 0;await _rf({originalPath:_t.of(n),modifiedPath:_t.of(i),outputPath:o!=null?_t.of(o):void 0,cliContext:t})})}function NSy(e,t){e.command("write","Generate a basic openapi overrides file.",r=>[r.option("api",{string:!0,description:"Only run the command on the provided API"}),r.option("exclude-models",{boolean:!0,description:"When generating the initial overrides, also stub the models (in addition to the endpoints)",default:!1})],async r=>{t.instrumentPostHogEvent({command:"fern overrides write"}),await Eia({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!0}),includeModels:!r.excludeModels,cliContext:t})})}function jSy(e,t){e.command("write-overrides",!1,r=>[r.option("api",{string:!0,description:"Only run the command on the provided API"}),r.option("exclude-models",{boolean:!0,description:"When generating the initial overrides, also stub the models (in addition to the endpoints)",default:!1})],async r=>{t.logger.warn("The 'write-overrides' command is deprecated. Use 'fern overrides write' instead."),t.instrumentPostHogEvent({command:"fern write-overrides"}),await Eia({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!0}),includeModels:!r.excludeModels,cliContext:t})})}function zSy(e,t){e.command("write-definition","Write underlying Fern Definition for OpenAPI specs and API Dependencies.",r=>r.option("api",{string:!0,description:"Only run the command on the provided API"}).option("language",{choices:Object.values(Hr.GenerationLanguage),description:"Write the definition for a particular SDK language"}).option("preserve-schemas",{string:!0,description:"Preserve potentially unsafe schema Ids in the generated fern definition"}),async r=>{let n=r.preserveSchemas!=null;t.instrumentPostHogEvent({command:"fern write-definition"}),await Jif({project:await Ha(t,{commandLineApiWorkspace:r.api,defaultToAllApiWorkspaces:!0,sdkLanguage:r.language,preserveSchemaIds:n}),cliContext:t,sdkLanguage:r.language,preserveSchemaIds:n})})}function QSy(e,t){e.command("docs","Commands for managing your docs",r=>(XSy(r,t),ZSy(r,t),$Sy(r,t),KSy(r,t),HSy(r,t),qSy(r,t),MSy(r,t),r))}function MSy(e,t){e.command("theme","Manage org-level themes for your documentation",r=>(LSy(r,t),_Sy(r,t),USy(r,t),VSy(r,t),GSy(r,t),r))}function LSy(e,t){e.command("delete","Delete a theme from Fern's cloud",r=>r.option("name",{alias:"n",type:"string",description:"Name of the theme to delete",demandOption:!0}).option("force",{alias:"f",type:"boolean",description:"Skip the confirmation prompt"}).example("$0 docs theme delete --name dark","Delete the theme named 'dark'").example("$0 docs theme delete --name dark --force","Delete without confirmation"),async r=>{t.instrumentPostHogEvent({command:"fern docs theme delete"}),await srf({cliContext:t,name:r.name,force:r.force})})}function _Sy(e,t){e.command("download","Download a theme from Fern's cloud into a local theme directory (theme.yml + assets)",r=>r.option("name",{alias:"n",type:"string",description:'Theme name (default: "default")',default:"default"}).option("org",{type:"string",description:"Override the org ID from fern.config.json"}).option("output",{alias:"o",type:"string",description:"Directory to write the theme into (default: ./fern/theme)"}).example("$0 docs theme download --name dark","Download the theme named 'dark' to ./fern/theme").example("$0 docs theme download --name dark --output ./themes/dark","Download to a custom directory, e.g. to vendor into a self-hosted image"),async r=>{t.instrumentPostHogEvent({command:"fern docs theme download"}),await arf({cliContext:t,name:r.name,org:r.org,output:r.output})})}function USy(e,t){e.command("export","Export theme-eligible fields from docs.yml into a standalone theme directory",r=>r.option("output",{alias:"o",type:"string",description:"Directory to export the theme into (default: ./fern/theme)"}).example("$0 docs theme export","Export theme from docs.yml to ./fern/theme").example("$0 docs theme export --output ./my-theme","Export to a custom directory"),async r=>{t.instrumentPostHogEvent({command:"fern docs theme export"}),await crf({cliContext:t,output:r.output})})}function VSy(e,t){e.command("list","List all themes for an org",r=>r.option("org",{type:"string",description:"Override the org ID from fern.config.json"}).option("json",{type:"boolean",description:"Output themes as a JSON array (includes updatedAt)"}).example("$0 docs theme list","List all themes for the current org").example("$0 docs theme list --json","Output themes as JSON"),async r=>{t.instrumentPostHogEvent({command:"fern docs theme list"}),await urf({cliContext:t,org:r.org,json:r.json})})}function GSy(e,t){e.command("upload","Upload a theme to Fern's cloud (creates or updates)",r=>r.option("name",{alias:"n",type:"string",description:'Theme name (default: "default")',default:"default"}).option("org",{type:"string",description:"Override the org ID from fern.config.json"}).example("$0 docs theme upload",'Upload theme from ./fern/theme as "default"').example("$0 docs theme upload --name dark","Upload a named theme variant"),async r=>{t.instrumentPostHogEvent({command:"fern docs theme upload"}),await hrf({cliContext:t,name:r.name,org:r.org})})}function qSy(e,t){e.command("md",!1,r=>(WSy(r,t),r1y(r,t),r))}function WSy(e,t){e.command("generate","[Beta] Generate MDX documentation from library source code. Requires 'libraries' config in docs.yml.",r=>r.option("library",{type:"string",description:"Name of a specific library defined in docs.yml to generate docs for"}).option("local",{boolean:!0,default:!1,description:"Run the library parser(s) locally using Docker instead of Fern's servers"}),async r=>{t.instrumentPostHogEvent({command:"fern docs md generate"});let n=await Ha(t,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0});await rrf({project:n,cliContext:t,library:r.library,local:r.local})})}function HSy(e,t){e.command("diff <preview-url> <files..>","Generate visual diffs between preview and production docs pages",r=>r.positional("preview-url",{type:"string",description:"The preview deployment URL (e.g. acme-preview-abc123.docs.buildwithfern.com)",demandOption:!0}).positional("files",{type:"string",array:!0,description:"File paths to generate diffs for (e.g. fern/pages/intro.mdx)",demandOption:!0}).option("output",{type:"string",default:".fern/diff",description:"Output directory for diff images"}),async r=>{t.instrumentPostHogEvent({command:"fern docs diff"});let n=await Ha(t,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0}),i=await trf({cliContext:t,project:n,previewUrl:r.previewUrl,files:r.files??[],outputDir:r.output});t.logger.info(JSON.stringify(i,null,2))})}function KSy(e,t){e.command("preview","Commands for managing preview deployments",r=>(JSy(r,t),YSy(r,t),r))}function JSy(e,t){e.command("list","List all preview deployments",r=>r.option("limit",{type:"number",description:"Maximum number of preview deployments to display"}).option("page",{type:"number",description:"Page number for pagination (starts at 1)"}),async r=>{t.instrumentPostHogEvent({command:"fern docs preview list"}),await irf({cliContext:t,limit:r.limit,page:r.page})})}function YSy(e,t){e.command("delete [target]","Delete a preview deployment",r=>r.positional("target",{type:"string",description:"A preview URL or ID (auto-detected)"}).option("url",{type:"string",description:"The FQDN of the preview deployment to delete (e.g. acme-preview-abc123.docs.buildwithfern.com)"}).option("id",{type:"string",description:"The preview ID to delete. Resolves the URL from the organization in fern.config.json and the instance basepaths in docs.yml."}).check(n=>{let i=[n.target,n.url,n.id].filter(Boolean);if(i.length===0)throw new T({message:"Must provide a preview URL or --id.",code:T.Code.ConfigError});if(i.length>1)throw new T({message:"Provide only one of: [target], --url, or --id.",code:T.Code.ConfigError});return!0}),async r=>{t.instrumentPostHogEvent({command:"fern docs preview delete"}),await nrf({cliContext:t,target:r.target,previewUrl:r.url,previewId:r.id})})}function XSy(e,t){e.command("dev","Run a local development server to preview your docs",r=>r.option("port",{number:!0,description:"Run the development server on the following port"}).option("bundle-path",{string:!0,hidden:!0,description:"Path of the local docs bundle to use"}).option("broken-links",{boolean:!0,default:!1,description:"Check for broken links in your docs"}).option("beta",{boolean:!0,default:!1,hidden:!0,description:"Deprecated alias for --legacy"}).option("legacy",{boolean:!0,default:!1,description:"Run the legacy Next.js docs preview server instead of the default Astro one"}).option("astro",{boolean:!0,default:!1,hidden:!0,description:"No-op: Astro is now the default docs preview server"}).option("backend-port",{number:!0,description:"Run the development backend server on the following port"}).option("force-download",{boolean:!0,default:!1,description:"Force re-download of the docs preview bundle by deleting the cached bundle"}).option("private",{boolean:!0,default:!1,description:"Include OpenAPI elements marked `x-twilio.docsVisibility: private` in the previewed API reference. By default only `public` elements are shown; `hidden` elements are always excluded."}).option("skip-api",{boolean:!0,default:!1,description:"Skip building API reference sections for a much faster preview. Endpoint and schema pages are left out; overview and hand-written pages in API sections are kept."}).option("skip-validation",{boolean:!0,default:!1,description:"Skip validating the docs while previewing, so the preview is ready sooner on large sites. Docs errors will not be reported."}),async r=>{r.beta&&t.logger.warn("--beta is deprecated and is now an alias for --legacy (the Next.js docs preview server). Use --legacy instead.");let n=r.legacy||r.beta;if(n&&r.astro)throw new T({message:"--astro and --legacy cannot be used together. Astro is the default; pass --legacy for Next.js.",code:T.Code.ConfigError});let i,o;try{r.port!=null?i=r.port:i=await _Fe({port:[3e3,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010]}),r.backendPort!=null?o=r.backendPort:o=await _Fe({port:[3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011]})}catch(a){throw new T({message:`Failed to find an available port: ${a instanceof Error?a.message:String(a)}`,code:T.Code.EnvironmentError})}let s=r.bundlePath;await Xtf({loadProject:()=>Ha(t,{defaultToAllApiWorkspaces:!0,commandLineApiWorkspace:void 0}),cliContext:t,port:i,bundlePath:s,brokenLinks:r.brokenLinks,legacy:n,backendPort:o,forceDownload:r.forceDownload,includePrivate:r.private,skipApi:r.skipApi,skipValidation:r.skipValidation})})}function ZSy(e,t){e.command("broken-links","Check for broken links in your docs",r=>r.option("strict",{boolean:!0,default:!1,description:"Fail with non-zero exit status"}),async r=>{let n=await Ha(t,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0});await Qif({project:n,cliContext:t,errorOnBrokenLinks:r.strict})})}function $Sy(e,t){e.command("link","Manage and validate links on live docs sites",r=>(e1y(r,t),r))}function e1y(e,t){e.command("check","Check for broken links on a live docs site",r=>r.option("url",{type:"string",description:"Docs site URL to check (e.g. buildwithfern.com/learn)"}).option("output",{type:"string",description:"Output format: text, json, or csv",choices:["text","json","csv"],default:"text"}),async r=>{t.instrumentPostHogEvent({command:"fern docs link check"});let{domain:n,docsConfigDir:i}=await t1y(t,r.url),o=bne(),s=await t.runTask(l=>pd(l));t.stderr.info(`${me.cyan("\u25C6")} Checking links on ${me.cyan(n)}...`),t.stderr.info("");let a=new E7e({dashboardUrl:o,token:s.value}),c=new v7e(process.stderr),u=!1;try{let l=await a.run(n,{onSitemapFetched:g=>{c.onSitemapFetched(g.totalPages)},onPageScraped:g=>{c.onPageScraped(g.pageIndex,g.totalPages)},onLinkChecked:g=>{c.onLinkChecked(g.linksChecked,g.totalLinks)},onStreamInterrupted:g=>{u=!0,c.finish(),t.stderr.warn(`\u26A0 Connection lost while ${g.phase} (${g.pagesScraped} pages scraped, ${g.linksChecked}/${g.totalLinks} links checked). Showing partial results.`)}}),d=new C7e(i).resolve(l);c.finish();let m=new I7e(n).format(d,r.output,{interrupted:u});r.output==="json"||r.output==="csv"?await Pdf(process.stdout,m+`
|