fern-api 5.5.0 → 5.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/cli.cjs +4 -4
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -2692,7 +2692,7 @@ ${VDc.default.cursorShow}`)}releaseCursor(){this.extraLinesUnderPrompt>0&&rvo(th
2692
2692
  `+M6e.default.red(">> ")+t),this.screen.render(r,n)}getMaskedValue(t){return this.status==="answered"?this.opt.mask?M6e.default.cyan(XDc(t,this.opt.mask)):M6e.default.italic(M6e.default.dim("[hidden]")):this.opt.mask?XDc(t,this.opt.mask):M6e.default.italic(M6e.default.dim("[input is hidden] "))}getSpinningValue(t){return this.getMaskedValue(t)}filterInput(t){return t||(this.opt.default==null?"":this.opt.default)}onEnd(t){this.status="answered",this.answer=t.value,this.render(),this.screen.done(),this.done(t.value)}onError(t){this.render(t.isValid)}onKeypress(){this.opt.default&&=void 0,this.render()}};var x5r=we(Ww(),1);var YRc=we(jvo(),1),v5r=require("child_process"),Lnt=require("fs"),I5r=we(require("path"),1),XRc=we(require("os"),1),ZRc=require("crypto"),ICo=we(KRc(),1);var y5r=class extends Error{originalError;constructor(t){super(`Failed to create temporary file. ${t.message}`),this.originalError=t}};var nzt=class extends Error{originalError;constructor(t){super(`Failed to launch editor. ${t.message}`),this.originalError=t}};var b5r=class extends Error{originalError;constructor(t){super(`Failed to read temporary file. ${t.message}`),this.originalError=t}};var E5r=class extends Error{originalError;constructor(t){super(`Failed to remove temporary file. ${t.message}`),this.originalError=t}};function C5r(e="",t,r){let n=new vCo(e,r);n.runAsync((i,o)=>{if(i)setImmediate(t,i,void 0);else try{n.cleanup(),setImmediate(t,void 0,o)}catch(s){setImmediate(t,s,void 0)}})}function JRc(e){return e?e.replace(/[^a-zA-Z0-9_.-]/g,"_"):""}function t2d(e){let t=[],r="";for(let n=0;n<e.length;n++){let i=e.charAt(n);n>0&&i===" "&&e[n-1]!=="\\"&&r.length>0?(t.push(r),r=""):r=`${r}${i}`}return r.length>0&&t.push(r),t}var vCo=class{text="";tempFile;editor;lastExitStatus=0;fileOptions={};get temp_file(){return console.log("DEPRECATED: temp_file. Use tempFile moving forward."),this.tempFile}get last_exit_status(){return console.log("DEPRECATED: last_exit_status. Use lastExitStatus moving forward."),this.lastExitStatus}constructor(t="",r){this.text=t,r&&(this.fileOptions=r),this.determineEditor(),this.createTemporaryFile()}run(){return this.launchEditor(),this.readTemporaryFile(),this.text}runAsync(t){try{this.launchEditorAsync(()=>{try{this.readTemporaryFile(),setImmediate(t,void 0,this.text)}catch(r){setImmediate(t,r,void 0)}})}catch(r){setImmediate(t,r,void 0)}}cleanup(){this.removeTemporaryFile()}determineEditor(){let t=process.env.VISUAL?process.env.VISUAL:process.env.EDITOR?process.env.EDITOR:process.platform.startsWith("win")?"notepad":"vim",r=t2d(t).map(i=>i.replace("\\ "," ")),n=r.shift();this.editor={args:r,bin:n}}createTemporaryFile(){try{let t=this.fileOptions.dir??XRc.default.tmpdir(),r=(0,ZRc.randomUUID)(),n=JRc(this.fileOptions.prefix),i=JRc(this.fileOptions.postfix),o=`${n}${r}${i}`,s=I5r.default.resolve(t,o),a=I5r.default.resolve(t)+I5r.default.sep;if(!s.startsWith(a))throw new Error("Resolved temporary file escaped the base directory");this.tempFile=s;let c={encoding:"utf8",flag:"wx"};Object.prototype.hasOwnProperty.call(this.fileOptions,"mode")&&(c.mode=this.fileOptions.mode),(0,Lnt.writeFileSync)(this.tempFile,this.text,c)}catch(t){throw new y5r(t)}}readTemporaryFile(){try{let t=(0,Lnt.readFileSync)(this.tempFile);if(t.length===0)this.text="";else{let r=(0,YRc.detect)(t)??"utf8";ICo.default.encodingExists(r)||(r="utf8"),this.text=ICo.default.decode(t,r)}}catch(t){throw new b5r(t)}}removeTemporaryFile(){try{(0,Lnt.unlinkSync)(this.tempFile)}catch(t){throw new E5r(t)}}launchEditor(){try{let t=(0,v5r.spawnSync)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"});this.lastExitStatus=t.status??0}catch(t){throw new nzt(t)}}launchEditorAsync(t){try{(0,v5r.spawn)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"}).on("exit",n=>{this.lastExitStatus=n,setImmediate(t)})}catch(r){throw new nzt(r)}}};var eFc=we(qL(),1);var izt=class extends $w{_run(t){this.done=t,this.editorResult=new eFc.Subject;let r=wB(this.rl);this.lineSubscription=r.line.subscribe(this.startExternalEditor.bind(this));let n=this.opt.waitUserInput===void 0?!0:this.opt.waitUserInput,i=this.handleSubmitEvents(this.editorResult);return i.success.forEach(this.onEnd.bind(this)),i.error.forEach(this.onError.bind(this)),this.currentText=this.opt.default,this.opt.default=null,n?this.render():this.startExternalEditor(),this}render(t){let r="",n=this.getQuestion();n+=this.status==="answered"?x5r.default.dim("Received"):x5r.default.dim("Press <enter> to launch your preferred editor."),t&&(r=x5r.default.red(">> ")+t),this.screen.render(n,r)}startExternalEditor(){this.rl.pause(),C5r(this.currentText,this.endExternalEditor.bind(this),{postfix:this.opt.postfix??".txt"})}endExternalEditor(t,r){this.rl.resume(),t?this.editorResult.error(t):this.editorResult.next(r)}onEnd(t){this.editorResult.unsubscribe(),this.lineSubscription.unsubscribe(),this.answer=t.value,this.status="answered",this.render(),this.screen.done(),this.done(this.answer)}onError(t){this.render(t.isValid)}};var oFc=require("stream");var nFc=we(require("readline"),1),iFc=we(rFc(),1),V6e=class{constructor(t){this.rl||=nFc.default.createInterface(n2d(t)),this.rl.resume(),this.onForceClose=this.onForceClose.bind(this),process.on("exit",this.onForceClose),this.rl.on("SIGINT",this.onForceClose)}onForceClose(){this.close(),process.kill(process.pid,"SIGINT"),console.log("")}close(){this.rl.removeListener("SIGINT",this.onForceClose),process.removeListener("exit",this.onForceClose),this.rl.output.unmute(),this.activePrompt&&typeof this.activePrompt.close=="function"&&this.activePrompt.close(),this.rl.output.end(),this.rl.pause(),this.rl.close()}};function n2d(e={}){e.skipTTYChecks=e.skipTTYChecks===void 0?!0:e.skipTTYChecks;let t=e.input||process.stdin;if(!e.skipTTYChecks&&!t.isTTY){let i=new Error("Prompts can not be meaningfully rendered in non-TTY environments");throw i.isTtyError=!0,i}let r=new iFc.default;return r.pipe(e.output||process.stdout),{terminal:!0,...e,input:t,output:r}}var ozt=class extends V6e{constructor(t={}){super(t),this.log=new oFc.Writable({write:(r,n,i)=>{this.writeLog(r),i()}}),this.bottomBar=t.bottomBar||"",this.render()}render(){return this.write(this.bottomBar),this}clean(){return U3t(this.rl,this.bottomBar.split(`
2693
2693
  `).length),this}updateBottomBar(t){return U3t(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+`
2694
2694
  `}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&&WVr(this.rl,t.length+this.rl.line.length),this.rl.output.write(t)}};var Fd=we(qL(),1),cFc=we(b3t(),1);var w5r=we(qL(),1),sFc=we(b3t(),1),S5r=function(e,t,r){return typeof e[t]!="function"?(0,w5r.of)(e):(0,w5r.from)((0,sFc.default)(e[t])(r).then(n=>(e[t]=n,e)))};var aFc={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}},znt=class extends V6e{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,Fd.from)(t):(0,Fd.isObservable)(t)?n=t:Object.values(t).every(i=>typeof i=="object"&&!Array.isArray(i)&&i!=null)?n=(0,Fd.from)(Object.entries(t).map(([i,o])=>({name:i,...o}))):n=(0,Fd.from)([t]),this.process=n.pipe((0,Fd.concatMap)(this.processQuestion.bind(this)),(0,Fd.publish)()),this.process.connect(),this.process.pipe((0,Fd.reduce)((i,o)=>(aFc.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,Fd.defer)(()=>(0,Fd.of)(t).pipe((0,Fd.concatMap)(this.setDefaultType.bind(this)),(0,Fd.concatMap)(this.filterIfRunnable.bind(this)),(0,Fd.concatMap)(()=>S5r(t,"message",this.answers)),(0,Fd.concatMap)(()=>S5r(t,"default",this.answers)),(0,Fd.concatMap)(()=>S5r(t,"choices",this.answers)),(0,Fd.concatMap)(this.fetchAnswer.bind(this))))}fetchAnswer(t){let r=this.prompts[t.type];return this.activePrompt=new r(t,this.rl,this.answers),(0,Fd.defer)(()=>(0,Fd.from)(this.activePrompt.run().then(n=>({name:t.name,answer:n}))))}setDefaultType(t){return this.prompts[t.type]||(t.type="input"),(0,Fd.defer)(()=>(0,Fd.of)(t))}filterIfRunnable(t){if(t.askAnswered!==!0&&aFc.get(this.answers,t.name)!==void 0)return Fd.EMPTY;if(t.when===!1)return Fd.EMPTY;if(typeof t.when!="function")return(0,Fd.of)(t);let{answers:r}=this;return(0,Fd.defer)(()=>(0,Fd.from)((0,cFc.default)(t.when)(r).then(n=>{if(n)return t})).pipe((0,Fd.filter)(n=>n!=null)))}};function uFc(e){let t=function(r,n){let i;try{i=new znt(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",q3t),this.registerPrompt("input",Q6e),this.registerPrompt("number",G3t),this.registerPrompt("confirm",W3t),this.registerPrompt("rawlist",$3t),this.registerPrompt("expand",H3t),this.registerPrompt("checkbox",K3t),this.registerPrompt("password",J3t),this.registerPrompt("editor",izt)},t.restoreDefaultPrompts(),t}var xCo=uFc();function o2d(e,t){xCo.registerPrompt(e,t)}function s2d(){xCo.restoreDefaultPrompts()}var a2d={prompt:xCo,ui:{BottomBar:ozt,Prompt:znt},createPromptModule:uFc,registerPrompt:o2d,restoreDefaultPrompts:s2d,Separator:Uj},Yp=a2d;var Unt=require("path");function pFc(){let e=c2d();return async t=>{for(let r of t)r.module=e(r.filename);return t}}function c2d(e=process.argv[1]?(0,Unt.dirname)(process.argv[1]):process.cwd(),t=Unt.sep==="\\"){let r=t?lFc(e):e;return n=>{if(!n)return;let i=t?lFc(n):n,{dir:o,base:s,ext:a}=Unt.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 lFc(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var wCo=e=>{if("flags"in e){let t=fFc(e.flags),r=dFc(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([i,o])=>[i,SCo(o)])),n=Object.fromEntries(Object.entries(t).map(([i,o])=>[i,u2d(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function u2d(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 fFc=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,szt(r)]).filter(([,t])=>t!==void 0)),dFc=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?SCo(n):void 0]}))};var szt=e=>e===void 0?void 0:e.variant??e.enabled,SCo=e=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};function mFc(){return"CompressionStream"in globalThis}async function _5r(e,t=!0){try{let n=new Blob([e],{type:"text/plain"}).stream().pipeThrough(new CompressionStream("gzip"));return await new Response(n).blob()}catch(r){return t&&console.error("Failed to gzip compress data",r),null}}var T5r="0123456789abcdef",B5r=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+=T5r.charAt(this.bytes[r]>>>4),t+=T5r.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+=T5r.charAt(this.bytes[r]>>>4),t+=T5r.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}},_Co=class{constructor(t){this.timestamp=0,this.counter=0,this.random=t??l2d()}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 B5r.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,B5r.ofInner(t)}},l2d=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),hFc,yve=()=>p2d().toString(),p2d=()=>(hFc||(hFc=new _Co)).generate();var qj=(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.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.SurveyLastSeenDate="survey_last_seen_date",e.SurveysSeen="surveys_seen",e.Surveys="surveys",e.RemoteConfig="remote_config",e.FlagsEndpointWasHit="flags_endpoint_was_hit",e.DeviceId="device_id",e})({});var f2d=["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","pinterest","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"],gFc=function(e,t=[]){if(!e)return!1;let r=e.toLowerCase();return f2d.concat(t).some(n=>{let i=n.toLowerCase();return r.indexOf(i)!==-1})};var m2d=Array.isArray,AFc=Object.prototype,nz0=AFc.hasOwnProperty,TCo=AFc.toString,BCo=m2d||function(e){return TCo.call(e)==="[object Array]"};var OCo=e=>e===Object(e)&&!BCo(e);var azt=e=>e===void 0,czt=e=>TCo.call(e)=="[object String]",yFc=e=>czt(e)&&e.trim().length===0;var bFc=e=>TCo.call(e)=="[object Number]"&&e===e;var PCo=e=>e instanceof Error;function O5r(e){return e===null||typeof e!="object"}function q6e(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function EFc(e){return q6e(e,"ErrorEvent")}function Vnt(e){return typeof Event<"u"&&h2d(e,Event)}function IFc(e){return q6e(e,"Object")}function h2d(e,t){try{return e instanceof t}catch{return!1}}function uzt(e,t,r,n,i){return t>r&&(n.warn("min cannot be greater than max."),t=r),bFc(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),uzt(i||r,t,r,n))}var g2d=864e5,P5r=class{constructor(t){this._buckets={},this._onBucketRateLimited=t._onBucketRateLimited,this._bucketSize=uzt(t.bucketSize,0,100,t._logger),this._refillRate=uzt(t.refillRate,0,this._bucketSize,t._logger),this._refillInterval=uzt(t.refillInterval,0,g2d,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 D5r=class{add(t){let r=yve();return this.promiseByIds[r]=t,t.catch(()=>{}).finally(()=>{delete this.promiseByIds[r]}),t}async join(){let t=Object.values(this.promiseByIds),r=t.length;for(;r>0;)await Promise.all(t),t=Object.values(this.promiseByIds),r=t.length}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={}}};function A2d(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var vFc=(e,t,r)=>{function n(o,...s){t(()=>{let a=r[o];a(e,...s)})}return{info:(...o)=>{n("log",...o)},warn:(...o)=>{n("warn",...o)},error:(...o)=>{n("error",...o)},critical:(...o)=>{r.error(e,...o)},createLogger:o=>vFc(`${e} ${o}`,t,r)}},y2d=e=>e();function CFc(e,t=y2d){return vFc(e,t,A2d())}var Gnt="Mobile",F5r="iOS",qnt="Android",xFc="Tablet",hz0=qnt+" "+xFc;var b2d="Apple",gz0=b2d+" Watch",wFc="Safari",k5r="BlackBerry",SFc="Samsung",E2d=SFc+"Browser",I2d=SFc+" Internet",N5r="Chrome",v2d=N5r+" OS",C2d=N5r+" "+F5r,_Fc="Internet Explorer",x2d=_Fc+" "+Gnt,RCo="Opera",Az0=RCo+" Mini",TFc="Edge",w2d="Microsoft "+TFc,FCo="Firefox",S2d=FCo+" "+F5r,kCo="Nintendo",NCo="PlayStation",R5r="Xbox",_2d=qnt+" "+Gnt,T2d=Gnt+" "+wFc,lzt="Windows",B2d=lzt+" Phone";var BFc="Generic",yz0=BFc+" "+Gnt.toLowerCase(),bz0=BFc+" "+xFc.toLowerCase(),O2d="Konqueror",ck="(\\d+(\\.\\d+)?)",DCo=new RegExp("Version/"+ck),Ez0=new RegExp(R5r,"i"),Iz0=new RegExp(NCo+" \\w+","i"),vz0=new RegExp(kCo+" \\w+","i"),P2d=new RegExp(k5r+"|PlayBook|BB10","i"),D2d={"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 Cz0={[x2d]:[new RegExp("rv:"+ck)],[w2d]:[new RegExp(TFc+"?\\/"+ck)],[N5r]:[new RegExp("("+N5r+"|CrMo)\\/"+ck)],[C2d]:[new RegExp("CriOS\\/"+ck)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+ck)],[wFc]:[DCo],[T2d]:[DCo],[RCo]:[new RegExp("("+RCo+"|OPR)\\/"+ck)],[FCo]:[new RegExp(FCo+"\\/"+ck)],[S2d]:[new RegExp("FxiOS\\/"+ck)],[O2d]:[new RegExp("Konqueror[:/]?"+ck,"i")],[k5r]:[new RegExp(k5r+" "+ck),DCo],[_2d]:[new RegExp("android\\s"+ck,"i")],[I2d]:[new RegExp(E2d+"\\/"+ck)],[_Fc]:[new RegExp("(rv:|MSIE )"+ck)],Mozilla:[new RegExp("rv:"+ck)]};var xz0=[[new RegExp(R5r+"; "+R5r+" (.*?)[);]","i"),e=>[R5r,e&&e[1]||""]],[new RegExp(kCo,"i"),[kCo,""]],[new RegExp(NCo,"i"),[NCo,""]],[P2d,[k5r,""]],[new RegExp(lzt,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[B2d,""];if(new RegExp(Gnt).test(t)&&!/IEMobile\b/.test(t))return[lzt+" "+Gnt,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let n=r[1],i=D2d[n]||"";return/arm/i.test(t)&&(i="RT"),[lzt,i]}return[lzt,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,e=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[F5r,t.join(".")]}return[F5r,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,e=>{let t="";return e&&e.length>=3&&(t=azt(e[2])?e[3]:e[2]),["watchOS",t]}],[new RegExp("("+qnt+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+qnt+")","i"),e=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[qnt,t.join(".")]}return[qnt,""]}],[/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/,[v2d,""]],[/Linux|debian/i,["Linux",""]]];var OFc="utf8";function PFc(e,t){if(!e||typeof e!="string"||R2d(e))throw new Error(t)}function R2d(e){return e.trim().length===0}function DFc(e){return e?.replace(/\/+$/,"")}async function RFc(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 j5r(){return new Date().toISOString()}function Upe(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}var FFc=e=>e instanceof Error;function jCo(e){return Promise.all(e.map(t=>(t??Promise.resolve()).then(r=>({status:"fulfilled",value:r}),r=>({status:"rejected",reason:r}))))}var Q5r=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)}};var G6e=class extends Error{constructor(t,r){super("HTTP error while fetching PostHog: status="+t.status+", reqByteLength="+r),this.response=t,this.reqByteLength=r,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}},Wnt=class extends Error{constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};async function kFc(e){if(e instanceof G6e){let t="";try{t=await e.text}catch{}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 QCo(e){return typeof e=="object"&&(e instanceof G6e||e instanceof Wnt)}function NFc(e){return typeof e=="object"&&e instanceof G6e&&e.status===413}var pzt=class{constructor(t,r={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new D5r,this._events=new Q5r,this._isInitialized=!1,PFc(t,"You must pass your PostHog project's api key."),this.apiKey=t,this.host=DFc(r.host||"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:QCo},this.requestTimeout=r.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=r.featureFlagsRequestTimeoutMs??3e3,this.remoteConfigRequestTimeoutMs=r.remoteConfigRequestTimeoutMs??3e3,this.disableGeoip=r.disableGeoip??!0,this.disabled=r.disabled??!1,this.historicalMigration=r?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this._logger=CFc("[PostHog]",this.logMsgIfDebug.bind(this)),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=!mFc()||(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(qj.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(qj.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(qj.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){return{distinct_id:t.distinct_id,event:t.event,properties:{...t.properties||{},...this.getCommonEventProperties()}}}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 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,{retryCount:0},this.remoteConfigRequestTimeoutMs).then(i=>i.json()).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};this.evaluationContexts&&this.evaluationContexts.length>0&&(u.evaluation_contexts=this.evaluationContexts);let l={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(u)};return this._logger.info("Flags URL",c),this.fetchWithRetry(c,l,{retryCount:0},this.featureFlagsRequestTimeoutMs).then(p=>p.json()).then(p=>({success:!0,response:wCo(p)})).catch(p=>(this._events.emit("error",p),{success:!1,error:this.categorizeRequestError(p)}))}categorizeRequestError(t){if(t instanceof G6e)return{type:"api_error",statusCode:t.status};if(t instanceof Wnt){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=szt(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={};(o??this.disableGeoip)&&(a.geoip_disable=!0),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.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).then(o=>{if(o.status!==200||!o.json){let s=`Surveys API could not be loaded: ${o.status}`,a=new Error(s);this._logger.error(a),this._events.emit("error",new Error(s));return}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(qj.Props)),this._props||{}}set props(t){this._props=t}async register(t){this.wrap(()=>{this.props={...this.props,...t},this.setPersistedProperty(qj.Props,this.props)})}async unregister(t){this.wrap(()=>{delete this.props[t],this.setPersistedProperty(qj.Props,this.props)})}processBeforeEnqueue(t){return t}async flushStorage(){}enqueue(t,r,n){this.wrap(()=>{if(this.optedOut)return void this._events.emit(t,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let i=this.prepareMessage(t,r,n);if(i=this.processBeforeEnqueue(i),i===null)return;let o=this.getPersistedProperty(qj.Queue)||[];o.length>=this.maxQueueSize&&(o.shift(),this._logger.info("Queue is full, the oldest event is dropped.")),o.push({message:i}),this.setPersistedProperty(qj.Queue,o),this._events.emit(t,i),o.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=Upe(()=>this.flushBackground(),this.flushInterval))})}async sendImmediate(t,r,n){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 i=this.prepareMessage(t,r,n);if(i=this.processBeforeEnqueue(i),i===null)return;let o={api_key:this.apiKey,batch:[i],sent_at:j5r()};this.historicalMigration&&(o.historical_migration=!0);let s=JSON.stringify(o),a=`${this.host}/batch/`,c=this.disableCompression?null:await _5r(s,this.isDebug),u={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...c!==null&&{"Content-Encoding":"gzip"}},body:c||s};try{await this.fetchWithRetry(a,u)}catch(l){this._events.emit("error",l)}}prepareMessage(t,r,n){let i={...r,type:t,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:n?.timestamp?n?.timestamp:j5r(),uuid:n?.uuid?n.uuid:yve()};return(n?.disableGeoip??this.disableGeoip)&&(i.properties||(i.properties={}),i.properties.$geoip_disable=!0),i.distinctId&&(i.distinct_id=i.distinctId,delete i.distinctId),i}clearFlushTimer(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=void 0)}flushBackground(){this.flush().catch(async t=>{await kFc(t)})}async flush(){let t=jCo([this.flushPromise]).then(()=>this._flush());return this.flushPromise=t,this.addPendingPromise(t),jCo([t]).then(()=>{this.flushPromise===t&&(this.flushPromise=null)}),t}getCustomHeaders(){let t=this.getCustomUserAgent(),r={};return t&&t!==""&&(r["User-Agent"]=t),r}async _flush(){this.clearFlushTimer(),await this._initPromise;let t=this.getPersistedProperty(qj.Queue)||[];if(!t.length)return;let r=[],n=t.length;for(;t.length>0&&r.length<n;){let i=t.slice(0,this.maxBatchSize),o=i.map(f=>f.message),s=async()=>{let m=(this.getPersistedProperty(qj.Queue)||[]).slice(i.length);this.setPersistedProperty(qj.Queue,m),t=m,await this.flushStorage()},a={api_key:this.apiKey,batch:o,sent_at:j5r()};this.historicalMigration&&(a.historical_migration=!0);let c=JSON.stringify(a),u=`${this.host}/batch/`,l=this.disableCompression?null:await _5r(c,this.isDebug),p={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...l!==null&&{"Content-Encoding":"gzip"}},body:l||c},d={retryCheck:f=>NFc(f)?!1:QCo(f)};try{await this.fetchWithRetry(u,p,d)}catch(f){if(NFc(f)&&o.length>1){this.maxBatchSize=Math.max(1,Math.floor(o.length/2)),this._logger.warn(`Received 413 when sending batch of size ${o.length}, reducing batch size to ${this.maxBatchSize}`);continue}throw f instanceof Wnt||await s(),this._events.emit("error",f),f}await s(),r.push(...o)}this._events.emit("flush",r)}async fetchWithRetry(t,r,n,i){let o=r.body?r.body:"",s=-1;try{s=o instanceof Blob?o.size:Buffer.byteLength(o,OFc)}catch{o instanceof Blob?s=o.size:s=new TextEncoder().encode(o).length}return await RFc(async()=>{let a=new AbortController,c=i??this.requestTimeout,u=Upe(()=>a.abort(),c),l=null;try{l=await this.fetch(t,{signal:a.signal,...r})}catch(d){throw new Wnt(d)}finally{clearTimeout(u)}if(!(r.mode==="no-cors")&&(l.status<200||l.status>=400))throw new G6e(l,s);return l},{...this._retryOptions,...n})}async _shutdown(t=3e4){await this._initPromise;let r=!1;this.clearFlushTimer();let n=async()=>{try{for(await this.promiseQueue.join();!((this.getPersistedProperty(qj.Queue)||[]).length===0||(await this.flush(),r)););}catch(o){if(!QCo(o))throw o;await kFc(o)}},i;try{return await Promise.race([new Promise((o,s)=>{i=Upe(()=>{this._logger.error("Timed out while shutting down PostHog"),r=!0,s("Timeout while shutting down PostHog. Some events may not have been sent.")},t)}),n()])}finally{clearTimeout(i)}}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 Gj={};te(Gj,{DOMExceptionCoercer:()=>UCo,ErrorCoercer:()=>VCo,ErrorEventCoercer:()=>qCo,ErrorPropertiesBuilder:()=>MCo,EventCoercer:()=>$Co,ObjectCoercer:()=>WCo,PrimitiveCoercer:()=>HCo,PromiseRejectionEventCoercer:()=>KCo,ReduceableCache:()=>JCo,StringCoercer:()=>GCo,chromeStackLineParser:()=>LCo,createDefaultStackParser:()=>H2d,createStackParser:()=>$Fc,geckoStackLineParser:()=>zCo,nodeStackLineParser:()=>VFc,opera10StackLineParser:()=>LFc,opera11StackLineParser:()=>zFc,reverseAndStripFrames:()=>WFc,winjsStackLineParser:()=>MFc});var M5r,jFc,L5r;function QFc(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);return L5r&&r.length===jFc||(jFc=r.length,L5r=r.reduce((n,i)=>{M5r||(M5r={});let o=M5r[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,M5r[i]=[u,l];break}}}return n},{})),L5r}var k2d=4,MCo=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&&BCo(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;return t.stack!=""&&t.stack!=null&&(i=this.applyChunkIds(this.stackParser(t.stack,t.synthetic?r.skipFirstLines:0),r.chunkIdMap)),{...t,cause:n,stack:i}}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={type:t.type,value:t.value,mechanism:{type:r.type??"generic",handled:r.handled??!0,synthetic:t.synthetic??!1}};t.stack&&(n.stacktrace={type:"raw",frames:t.stack});let i=[n];return t.cause!=null&&i.push(...this.convertToExceptionList(t.cause,{...r,handled:!0})),i}buildParsingContext(t){return{chunkIdMap:QFc(this.stackParser),skipFirstLines:t.skipFirstLines??1}}buildCoercingContext(t,r,n=0){let i=(s,a)=>{if(a<=k2d){let c=this.buildCoercingContext(t,r,a);return this.applyCoercers(s,c)}};return{...r,syntheticException:n==0?r.syntheticException:void 0,mechanism:t,apply:s=>i(s,n),next:s=>i(s,n+1)}}};var _B="?";function TZ(e,t,r,n,i){let o={platform:e,filename:t,function:r==="<anonymous>"?_B:r,in_app:!0};return azt(n)||(o.lineno=n),azt(i)||(o.colno=i),o}var z5r=(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]:_B,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var N2d=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,j2d=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Q2d=/\((\S*)(?::(\d+))(?::(\d+))\)/,LCo=(e,t)=>{let r=N2d.exec(e);if(r){let[,i,o,s]=r;return TZ(t,i,_B,+o,+s)}let n=j2d.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let a=Q2d.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}let[o,s]=z5r(n[1]||_B,n[2]);return TZ(t,s,o,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var M2d=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,L2d=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,zCo=(e,t)=>{let r=M2d.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let s=L2d.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]||_B;return[o,i]=z5r(o,i),TZ(t,i,o,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var z2d=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,MFc=(e,t)=>{let r=z2d.exec(e);return r?TZ(t,r[2],r[1]||_B,+r[3],r[4]?+r[4]:void 0):void 0};var U2d=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,LFc=(e,t)=>{let r=U2d.exec(e);return r?TZ(t,r[2],r[3]||_B,+r[1]):void 0},V2d=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,zFc=(e,t)=>{let r=V2d.exec(e);return r?TZ(t,r[5],r[3]||r[4]||_B,+r[1],+r[2]):void 0};var q2d=/^\s*[-]{4,}$/,G2d=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,VFc=(e,t)=>{let r=e.match(G2d);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||_B,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]),{filename:c?decodeURI(c):void 0,module:void 0,function:o,lineno:UFc(r[3]),colno:UFc(r[4]),in_app:W2d(c||"",u),platform:t}}if(e.match(q2d))return{filename:e,platform:t}};function W2d(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 UFc(e){return parseInt(e||"",10)||void 0}var qFc=/\(error: (.*)\)/,GFc=50;function WFc(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,GFc).map(r=>({...r,filename:r.filename||$2d(t).filename,function:r.function||_B}))}function $2d(e){return e[e.length-1]||{}}function H2d(){return $Fc("web:javascript",LCo,zCo)}function $Fc(e,...t){return(r,n=0)=>{let i=[],o=r.split(`
2695
- `);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=qFc.test(a)?a.replace(qFc,"$1"):a;if(!c.match(/\S*Error: /)){for(let u of t){let l=u(c,e);if(l){i.push(l);break}}if(i.length>=GFc)break}}return WFc(i)}}var UCo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=czt(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 q6e(t,"DOMException")}isDOMError(t){return q6e(t,"DOMError")}};var VCo=class{match(t){return PCo(t)}coerce(t,r){return{type:this.getType(t),value:this.getMessage(t,r),stack:this.getStack(t),cause:t.cause?r.next(t.cause):void 0,synthetic:!1}}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){return t.stacktrace||t.stack||void 0}};var qCo=class{constructor(){}match(t){return EFc(t)&&t.error!=null}coerce(t,r){let n=r.apply(t.error);return n||{type:"ErrorEvent",value:t.message,stack:r.syntheticException?.stack,synthetic:!0}}};var K2d=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,GCo=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(K2d);return i&&(r=i[1],n=i[2]),[r,n]}};var HFc=["fatal","error","warning","log","info","debug"];function U5r(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 WCo=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:r.syntheticException?.stack,level:this.isSeverityLevel(t.level)?t.level:"error",synthetic:!0}}getType(t){return Vnt(t)?t.constructor.name:"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=U5r(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return czt(t)&&!yFc(t)&&HFc.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(FFc(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var $Co=class{match(t){return Vnt(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${U5r(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var HCo=class{match(t){return O5r(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var KCo=class{match(t){return q6e(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!Vnt(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 O5r(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 JCo=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 YFc=require("fs"),XFc=require("readline"),V5r=new Gj.ReduceableCache(25),ZFc=new Gj.ReduceableCache(20),YCo=7,J2d=1e3,Y2d=1e4;async function ekc(e){let t={};for(let i=e.length-1;i>=0;i--){let o=e[i],s=o?.filename;if(!o||typeof s!="string"||typeof o.lineno!="number"||tNd(s)||rNd(o))continue;t[s]||(t[s]=[]),t[s].push(o.lineno)}let r=Object.keys(t);if(r.length==0)return e;let n=[];for(let i of r){if(ZFc.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=iNd(o);if(s.every(c=>nNd(i,c)))continue;let a=oNd(V5r,i,{});n.push(X2d(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&Z2d(e,V5r),V5r.reduce(),e}function X2d(e,t,r){return new Promise(n=>{let i=(0,YFc.createReadStream)(e),o=(0,XFc.createInterface)({input:i});function s(){i.destroy(),n()}let a=0,c=0,u=t[c];if(u===void 0)return void s();let l=u[0],p=u[1];function d(){ZFc.set(e,1),o.close(),o.removeAllListeners(),s()}i.on("error",d),o.on("error",d),o.on("close",s),o.on("line",f=>{if(a++,!(a<l)&&(r[a]=sNd(f,0),a>=p)){if(c===t.length-1){o.close(),o.removeAllListeners();return}c++;let m=t[c];if(m===void 0){o.close(),o.removeAllListeners();return}l=m[0],p=m[1]}})})}function Z2d(e,t){for(let r of e)if(r.filename&&r.context_line===void 0&&typeof r.lineno=="number"){let n=t.get(r.filename);if(n===void 0)continue;eNd(r.lineno,r,n)}}function eNd(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=tkc(e);i<e;i++){let o=r[i];if(o===void 0)return void KFc(t);t.pre_context.push(o)}if(r[e]===void 0)return void KFc(t);t.context_line=r[e];let n=rkc(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 KFc(e){delete e.pre_context,delete e.context_line,delete e.post_context}function tNd(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function rNd(e){return e.lineno!==void 0&&e.lineno>Y2d||e.colno!==void 0&&e.colno>J2d}function nNd(e,t){let r=V5r.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 iNd(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=JFc(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+YCo:(i.push(n),n=JFc(o)),t++}return i}function JFc(e){return[tkc(e),rkc(e)]}function tkc(e){return Math.max(1,e-YCo)}function rkc(e){return e+YCo}function oNd(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function sNd(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}function aNd(e,t){let r=!1;return Object.assign(n=>{let o=global.process.listeners("uncaughtException").filter(s=>s.name!=="domainUncaughtExceptionClear"&&s._posthogErrorHandler!==!0).length===0;e(n,{mechanism:{type:"onuncaughtexception",handled:!1}}),!r&&o&&(r=!0,t(n))},{_posthogErrorHandler:!0})}function nkc(e,t){globalThis.process?.on("uncaughtException",aNd(e,t))}function ikc(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var cNd=2e3,CW=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new P5r({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return OCo(t)&&"__posthog_previously_captured_error"in t&&t.__posthog_previously_captured_error===!0}static async buildEventMessage(t,r,n,i){let o={...i},s=this.errorPropertiesBuilder.buildFromUnknown(t,r);return s.$exception_list=await this.errorPropertiesBuilder.modifyFrames(s.$exception_list),{event:"$exception",distinctId:n,properties:{...s,...o},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){this.isEnabled()&&(nkc(this.onException.bind(this),this.onFatalError.bind(this)),ikc(this.onException.bind(this)))}onException(t,r){this.client.addPendingPromise((async()=>{if(!e.isPreviouslyCapturedError(t)){let n=await e.buildEventMessage(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.capture(n)}})())}async onFatalError(t){console.error(t),await this.client.shutdown(cNd),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var okc="5.29.1";var fzt={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};async function skc(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(i=>i.toString(16).padStart(2,"0")).join("")}var uNd=6e4,lNd=1152921504606847e3,pNd=["is_not"],$nt=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},kd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},BZ=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},q5r=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.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.cacheProvider=a.cacheProvider,this.strictLocalEvaluation=a.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(t=!0){this.debugMode=t}logMsgIfDebug(t){this.debugMode&&t()}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 BZ||u instanceof kd?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={...t,evaluationCache:t.evaluationCache??{}};return await Promise.all(s.map(async c=>{try{let{value:u,payload:l}=await this.computeFlagAndPayloadLocally(c,a);n[c.key]=u,l&&(i[c.key]=l)}catch(u){u instanceof BZ||u instanceof kd?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(o||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=i!==void 0?i:await this.computeFlagValueLocally(t,r);let a=this.getFeatureFlagPayload(t.key,s);return{value:s,payload:a}}async computeFlagValueLocally(t,r){let{distinctId:n,groups:i,personProperties:o,groupProperties:s}=r;if(t.ensure_experience_continuity)throw new kd("Flag has experience continuity enabled");if(!t.active)return!1;let c=(t.filters||{}).aggregation_group_type_index;if(c!=null){let u=this.groupTypeMapping[String(c)];if(!u)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${c} for feature flag ${t.key}`)),new kd("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 kd(`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}getFeatureFlagPayload(t,r){let n=null;if(r!==!1&&r!=null&&(typeof r=="boolean"?n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r.toString()]||null:typeof r=="string"&&(n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r]||null),n!=null)){if(typeof n=="object")return n;if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}return null}async evaluateFlagDependency(t,r,n){let{evaluationCache:i}=n,o=t.key;if(!this.featureFlagsByKey)throw new kd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new kd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new kd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new kd(`Circular dependency detected for flag '${o}' (empty dependency chain)`);for(let c of s){if(!(c in i)){let l=this.featureFlagsByKey[c];if(l)if(l.active)try{let p=await this.computeFlagValueLocally(l,n);i[c]=p}catch(p){throw new kd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new kd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new kd(`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){let o=t.filters||{},s=o.groups||[],a=!1,c;for(let u of s)try{if(await this.isConditionMatch(t,r,u,n,i)){let l=u.variant,p=o.multivariate?.variants||[];c=l&&p.some(d=>d.key===l)?l:await this.getMatchingVariant(t,r)||!0;break}}catch(l){if(l instanceof BZ)throw l;if(l instanceof kd)a=!0;else throw l}if(c!==void 0)return c;if(a)throw new kd("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(t,r,n,i,o){let s=n.rollout_percentage,a=c=>{this.logMsgIfDebug(()=>console.warn(c))};if((n.properties||[]).length>0){for(let c of n.properties){let u=c.type,l=!1;if(l=u==="cohort"?pkc(c,i,this.cohorts,this.debugMode):u==="flag"?await this.evaluateFlagDependency(c,i,o):lkc(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await akc(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await akc(t.key,r,"variant"),i=this.variantLookupTable(t).find(o=>n>=o.valueMin&&n<o.valueMax);if(i)return i.key}variantLookupTable(t){let r=[],n=0,i=0;return((t.filters||{}).multivariate?.variants||[]).forEach(a=>{i=n+a.rollout_percentage/100,r.push({valueMin:n,valueMax:i,key:a.key}),n=i}),r}updateFlagState(t){this.featureFlags=t.flags,this.featureFlagsByKey=t.flags.reduce((r,n)=>(r[n.key]=n,r),{}),this.groupTypeMapping=t.groupTypeMapping,this.cohorts=t.cohorts,this.loadedSuccessfullyOnce=!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(r.flags),!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(){return this.shouldBeginExponentialBackoff?Math.min(uNd,this.pollingInterval*2**this.backOffCount):this.pollingInterval}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),this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());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 $nt(`Your project key or personal API 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.groupTypeMapping={},this.cohorts={};return;case 403:throw this.beginBackoff(),new $nt(`Your personal API 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 personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new $nt(`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={flags:n.flags??[],groupTypeMapping:n.group_type_mapping||{},cohorts:n.cohorts||{}};if(this.updateFlagState(i),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&t)try{await this.cacheProvider.onFlagDefinitionsReceived(i)}catch(o){this.onError?.(new Error(`Failed to store in cache: ${o}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(i.flags);break}default:return}}catch(t){t instanceof $nt&&this.onError?.(t)}}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}}_requestFeatureFlagDefinitions(){let t=`${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`,r=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;n=Upe(()=>{i.abort()},this.timeout),r.signal=i.signal}try{let i=this.fetch;return i(t,r)}finally{clearTimeout(n)}}async stopPoller(t=3e4){if(clearTimeout(this.poller),this.cacheProvider)try{let r=this.cacheProvider.shutdown();r instanceof Promise&&await Promise.race([r,new Promise((n,i)=>setTimeout(()=>i(new Error(`Cache shutdown timeout after ${t}ms`)),t))])}catch(r){this.onError?.(new Error(`Error during cache shutdown: ${r}`))}}};async function akc(e,t,r=""){let n=await skc(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/lNd}function lkc(e,t,r){let n=e.key,i=e.value,o=e.operator||"exact";if(n in t){if(o==="is_not_set")throw new kd("Operator is_not_set is not supported")}else throw new kd(`Property ${n} not found in propertyValues`);let s=t[n];if(s==null&&!pNd.includes(o))return r&&r(`Property ${n} cannot have a value of null/undefined with the ${o} operator`),!1;function a(u,l){return Array.isArray(u)?u.map(p=>String(p).toLowerCase()).includes(String(l).toLowerCase()):String(u).toLowerCase()===String(l).toLowerCase()}function c(u,l,p){if(p==="gt")return u>l;if(p==="gte")return u>=l;if(p==="lt")return u<l;if(p==="lte")return u<=l;throw new Error(`Invalid operator: ${p}`)}switch(o){case"exact":return a(i,s);case"is_not":return!a(i,s);case"is_set":return n in t;case"icontains":return String(s).toLowerCase().includes(String(i).toLowerCase());case"not_icontains":return!String(s).toLowerCase().includes(String(i).toLowerCase());case"regex":return ckc(String(i))&&String(s).match(String(i))!==null;case"not_regex":return ckc(String(i))&&String(s).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof i=="number"?i:null;if(typeof i=="string")try{u=parseFloat(i)}catch{}return u==null||s==null?c(String(s),String(i),o):typeof s=="string"?c(s,String(i),o):c(s,u,o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new kd("Date operations cannot be performed on boolean values");let u=gNd(String(i));if(u==null&&(u=ukc(i)),u==null)throw new kd(`Invalid date: ${i}`);let l=ukc(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return sV(TB(String(s)),TB(String(i)))===0;case"semver_neq":return sV(TB(String(s)),TB(String(i)))!==0;case"semver_gt":return sV(TB(String(s)),TB(String(i)))>0;case"semver_gte":return sV(TB(String(s)),TB(String(i)))>=0;case"semver_lt":return sV(TB(String(s)),TB(String(i)))<0;case"semver_lte":return sV(TB(String(s)),TB(String(i)))<=0;case"semver_tilde":{let u=TB(String(s)),{lower:l,upper:p}=dNd(String(i));return sV(u,l)>=0&&sV(u,p)<0}case"semver_caret":{let u=TB(String(s)),{lower:l,upper:p}=mNd(String(i));return sV(u,l)>=0&&sV(u,p)<0}case"semver_wildcard":{let u=TB(String(s)),{lower:l,upper:p}=hNd(String(i));return sV(u,l)>=0&&sV(u,p)<0}default:throw new kd(`Unknown operator: ${o}`)}}function fNd(e,t){if(!(e in t))throw new BZ(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function pkc(e,t,r,n=!1){let i=String(e.value);fNd(i,r);let o=r[i];return fkc(o,t,r,n)}function fkc(e,t,r,n=!1){if(!e)return!0;let i=e.type,o=e.values;if(!o||o.length===0)return!0;let s=!1;if("values"in o[0]){for(let a of o)try{let c=fkc(a,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof BZ)throw c;if(c instanceof kd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new kd("Can't match cohort without a given cohort property value");return i==="AND"}for(let a of o)try{let c;if(a.type==="cohort")c=pkc(a,t,r,n);else if(a.type==="flag"){n&&console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${a.key||"unknown"}'`);continue}else c=lkc(a,t);let u=a.negation||!1;if(i==="AND"){if(!c&&!u||c&&u)return!1}else if(c&&!u||!c&&u)return!0}catch(c){if(c instanceof BZ)throw c;if(c instanceof kd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new kd("can't match cohort without a given cohort property value");return i==="AND"}function ckc(e){try{return new RegExp(e),!0}catch{return!1}}function TB(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new kd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>{if(c===void 0||c==="")return 0;if(!/^\d+$/.test(c))throw new kd(`Invalid semver: ${e}`);return parseInt(c,10)},o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function sV(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 dNd(e){let t=TB(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function mNd(e){let t=TB(e),[r,n,i]=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 hNd(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new kd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=parseInt(n[0],10);if(isNaN(i))throw new kd(`Invalid wildcard semver: ${e}`);let o,s;if(n.length===1)o=[i,0,0],s=[i+1,0,0];else{let a=parseInt(n[1],10);if(isNaN(a))throw new kd(`Invalid wildcard semver: ${e}`);o=[i,a,0],s=[i,a+1,0]}return{lower:o,upper:s}}function ukc(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 kd(`${e} is in an invalid date format`)}throw new kd(`The date provided ${e} must be a string, number, or date object`)}function gNd(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,r=e.match(t),n=new Date(new Date().toISOString());if(!r)return null;{if(!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}}var G5r=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var ANd=100,dkc=3e4,yNd=5e4,bNd=50,ENd=500,W5r=class extends pzt{constructor(t,r={}){if(super(t,r),this._memoryStorage=new G5r,this.options=r,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof r.featureFlagsPollingInterval=="number"?Math.max(r.featureFlagsPollingInterval,ANd):dkc,typeof r.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(r.waitUntilDebounceMs,0)),typeof r.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(r.waitUntilMaxWaitMs,0)),r.personalApiKey){if(r.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.');r.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new q5r({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:r.personalApiKey,projectApiKey:t,timeout:r.requestTimeout??1e4,host:this.host,fetch:r.fetch,onError:i=>{this._events.emit("error",i)},onLoad:i=>{this._events.emit("localEvaluationFlagsLoaded",i)},customHeaders:this.getCustomHeaders(),cacheProvider:r.flagDefinitionCacheProvider,strictLocalEvaluation:r.strictLocalEvaluation}))}this.errorTracking=new CW(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||yNd}enqueue(t,r,n){super.enqueue(t,r,n),this.scheduleDebouncedFlush()}async flush(){let t=super.flush(),r=this.options.waitUntil;if(r&&!this._waitUntilCycle)try{r(t.catch(()=>{}))}catch{}return t}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??ENd,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??bNd;this._waitUntilCycle.timer=Upe(()=>{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 super.flush()}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)}getLibraryVersion(){return okc}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}capture(t){typeof t=="string"&&this._logger.warn("Called capture() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStateless(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}async captureImmediate(t){return typeof t=="string"&&this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("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.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStatelessImmediate(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}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};super.identifyStateless(t,l,{disableGeoip:n})}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};super.identifyStatelessImmediate(t,l,{disableGeoip:n})}alias(t){super.aliasStateless(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}async aliasImmediate(t){await super.aliasStatelessImmediate(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(t=dkc){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){let o=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&t in this._flagOverrides){let T=this._flagOverrides[t];if(T===void 0)return;let B=this._payloadOverrides?.[t];return{key:t,enabled:T!==!1,variant:typeof T=="string"?T:void 0,payload:B}}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,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f,m=!1,h,A,b,v,x,C;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let T=this.featureFlagsPoller?.featureFlagsByKey[t];if(T)try{let B=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(T,d,{matchValue:i});if(B){m=!0;let R=B.value;v=T.id,C="Evaluated locally",f={key:t,enabled:R!==!1,variant:typeof R=="string"?R:void 0,payload:B.payload??void 0}}}catch(B){if(B instanceof BZ||B instanceof kd)this._logger?.info(`${B.name} when computing flag locally: ${t}: ${B.message}`);else throw B}}if(!m&&!c){let T=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(T===void 0)b=fzt.UNKNOWN_ERROR;else{h=T.requestId,A=T.evaluatedAt;let B=[];T.errorsWhileComputingFlags&&B.push(fzt.ERRORS_WHILE_COMPUTING),T.quotaLimited?.includes("feature_flags")&&B.push(fzt.QUOTA_LIMITED);let R=T.flags[t];if(R===void 0)B.push(fzt.FLAG_MISSING);else{v=R.metadata?.id,x=R.metadata?.version,C=R.reason?.description??R.reason?.code;let O;if(R.metadata?.payload!==void 0)try{O=JSON.parse(R.metadata.payload)}catch{O=R.metadata.payload}f={key:t,enabled:R.enabled,variant:R.variant,payload:O}}B.length>0&&(b=B.join(","))}}if(o){let T=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,B=`${t}_${T}`;if(!(r in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[r].includes(B)){Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(B):this.distinctIdHasSentFlagCalls[r]=[B];let R={$feature_flag:t,$feature_flag_response:T,$feature_flag_id:v,$feature_flag_version:x,$feature_flag_reason:C,locally_evaluated:m,[`$feature/${t}`]:T,$feature_flag_request_id:h,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let O=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();O!==void 0&&(R.$feature_flag_definitions_loaded_at=O)}b&&(R.$feature_flag_error=b),this.capture({distinctId:r,event:"$feature_flag_called",properties:R,groups:s,disableGeoip:a})}}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){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(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.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){let i=await this.getFeatureFlag(t,r,n);if(i!==void 0)return!!i||!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:{}};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,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},h={},A=!0;if(f&&(m=f.response,h=f.payloads,A=f.fallbackToFlags),A&&!c){let b=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...b.flags||{}},h={...h,...b.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(h={...h,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:h}}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){super.groupIdentifyStateless(t,r,n,{disableGeoip:o},i)}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=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(t),this.errorTracking.shutdown();try{return await super._shutdown(t)}finally{r?.()}}async _requestRemoteConfigPayload(t){if(!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=Upe(()=>{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(IFc(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){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={distinct_id:t,...n||{}},s={};if(r)for(let a of Object.keys(r))s[a]={$group_key:r[a],...i?.[a]||{}};return{allPersonProperties:o,allGroupProperties:s}}createFeatureFlagEvaluationContext(t,r,n,i){return{distinctId:t,groups:r||{},personProperties:n||{},groupProperties:i||{},evaluationCache:{}}}captureException(t,r,n,i){if(!CW.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");this.addPendingPromise(CW.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.capture({...s,uuid:i})))}}async captureExceptionImmediate(t,r,n){if(!CW.isPreviouslyCapturedError(t)){let i=new Error("PostHog syntheticException");return this.addPendingPromise(CW.buildEventMessage(t,{syntheticException:i},r,n).then(o=>this.captureImmediate(o)))}}async prepareEventMessage(t){let{distinctId:r,event:n,properties:i,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u}=t,l=this.context?.get(),p=r||l?.distinctId,d={...this.props,...l?.properties||{},...i||{}};p||(p=yve(),d.$process_person_profile=!1),l?.sessionId&&!d.$session_id&&(d.$session_id=l.sessionId);let f=this._runBeforeSend({distinctId:p,event:n,properties:d,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u});if(!f)return Promise.reject(null);let m=await Promise.resolve().then(async()=>{if(s){let h=typeof s=="object"?s:void 0;return await this.getFeatureFlagsForEvent(f.distinctId,o,c,h)}return f.event,{}}).then(h=>{let A={};if(h)for(let[v,x]of Object.entries(h))A[`$feature/${v}`]=x;let b=Object.keys(h||{}).filter(v=>h?.[v]!==!1).sort();return b.length>0&&(A.$active_feature_flags=b),A}).catch(()=>({})).then(h=>({...h,...f.properties||{},$groups:f.groups||o}));return f.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof m.$raw_user_agent=="string"&&gFc(m.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(f.event="$bot_pageview",m.$browser_type="bot"),{distinctId:f.distinctId,event:f.event,properties:m,options:{timestamp:f.timestamp,disableGeoip:f.disableGeoip,uuid:f.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){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)}}return i}};var mkc=require("async_hooks"),$5r=class{constructor(){this.storage=new mkc.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 hkc="posthog-node";function INd(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[XCo.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(m=>({...m,stacktrace:m.stacktrace?{...m.stacktrace,type:"raw",frames:(m.stacktrace.frames||[]).map(h=>({...h,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};return 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 XCo=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=hkc,this.name=hkc,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(INd(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};CW.errorPropertiesBuilder=new Gj.ErrorPropertiesBuilder([new Gj.EventCoercer,new Gj.ErrorCoercer,new Gj.ObjectCoercer,new Gj.StringCoercer,new Gj.PrimitiveCoercer],Gj.createStackParser("node:javascript",Gj.nodeStackLineParser),[pFc(),ekc]);var bve=class extends W5r{getLibraryId(){return"posthog-node"}initializeContext(){return new $5r}};var H5r=class{posthog;constructor({posthogApiKey:t}){this.posthog=new bve(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.5.0",usingAccessToken:!0}})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var dzt=class{async sendEvent(){}async identify(){}async flush(){}};er();var Hnt=require("fs/promises"),gkc=require("os"),Akc=require("path");var vNd="id",CNd=".fern",mzt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new bve(r),this.userId=t==null?void 0:hyo(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.5.0",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{}}})}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 Nf({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=Ze(Jt.of((0,gkc.homedir)()),Re.of(CNd),Re.of(vNd));await lr(t)||(await(0,Hnt.mkdir)((0,Akc.dirname)(t),{recursive:!0}),await(0,Hnt.writeFile)(t,DP())),this.persistedDistinctId=(await(0,Hnt.readFile)(t)).toString()}return this.persistedDistinctId}};var ZCo;async function hzt(){return ZCo==null&&(ZCo=await xNd()),ZCo}async function xNd(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new dzt;let r=await oLr();return r!=null?new mzt({token:r,posthogApiKey:e}):await pZ()!=null?new H5r({posthogApiKey:e}):new mzt({token:void 0,posthogApiKey:e})}catch{return new dzt}}Lt();var gzt=we(require("process"),1);bGe();var Ekc=we(huo(),1),Ikc=we(bkc(),1);function $_(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=s7(e),e.length===0))return 0;e=e.replace((0,Ikc.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(Ekc.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}function K5r(e){let t=0;for(let r of e.split(`
2695
+ `);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=qFc.test(a)?a.replace(qFc,"$1"):a;if(!c.match(/\S*Error: /)){for(let u of t){let l=u(c,e);if(l){i.push(l);break}}if(i.length>=GFc)break}}return WFc(i)}}var UCo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=czt(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 q6e(t,"DOMException")}isDOMError(t){return q6e(t,"DOMError")}};var VCo=class{match(t){return PCo(t)}coerce(t,r){return{type:this.getType(t),value:this.getMessage(t,r),stack:this.getStack(t),cause:t.cause?r.next(t.cause):void 0,synthetic:!1}}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){return t.stacktrace||t.stack||void 0}};var qCo=class{constructor(){}match(t){return EFc(t)&&t.error!=null}coerce(t,r){let n=r.apply(t.error);return n||{type:"ErrorEvent",value:t.message,stack:r.syntheticException?.stack,synthetic:!0}}};var K2d=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,GCo=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(K2d);return i&&(r=i[1],n=i[2]),[r,n]}};var HFc=["fatal","error","warning","log","info","debug"];function U5r(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 WCo=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:r.syntheticException?.stack,level:this.isSeverityLevel(t.level)?t.level:"error",synthetic:!0}}getType(t){return Vnt(t)?t.constructor.name:"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=U5r(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return czt(t)&&!yFc(t)&&HFc.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(FFc(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var $Co=class{match(t){return Vnt(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${U5r(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var HCo=class{match(t){return O5r(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var KCo=class{match(t){return q6e(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!Vnt(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 O5r(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 JCo=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 YFc=require("fs"),XFc=require("readline"),V5r=new Gj.ReduceableCache(25),ZFc=new Gj.ReduceableCache(20),YCo=7,J2d=1e3,Y2d=1e4;async function ekc(e){let t={};for(let i=e.length-1;i>=0;i--){let o=e[i],s=o?.filename;if(!o||typeof s!="string"||typeof o.lineno!="number"||tNd(s)||rNd(o))continue;t[s]||(t[s]=[]),t[s].push(o.lineno)}let r=Object.keys(t);if(r.length==0)return e;let n=[];for(let i of r){if(ZFc.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=iNd(o);if(s.every(c=>nNd(i,c)))continue;let a=oNd(V5r,i,{});n.push(X2d(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&Z2d(e,V5r),V5r.reduce(),e}function X2d(e,t,r){return new Promise(n=>{let i=(0,YFc.createReadStream)(e),o=(0,XFc.createInterface)({input:i});function s(){i.destroy(),n()}let a=0,c=0,u=t[c];if(u===void 0)return void s();let l=u[0],p=u[1];function d(){ZFc.set(e,1),o.close(),o.removeAllListeners(),s()}i.on("error",d),o.on("error",d),o.on("close",s),o.on("line",f=>{if(a++,!(a<l)&&(r[a]=sNd(f,0),a>=p)){if(c===t.length-1){o.close(),o.removeAllListeners();return}c++;let m=t[c];if(m===void 0){o.close(),o.removeAllListeners();return}l=m[0],p=m[1]}})})}function Z2d(e,t){for(let r of e)if(r.filename&&r.context_line===void 0&&typeof r.lineno=="number"){let n=t.get(r.filename);if(n===void 0)continue;eNd(r.lineno,r,n)}}function eNd(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=tkc(e);i<e;i++){let o=r[i];if(o===void 0)return void KFc(t);t.pre_context.push(o)}if(r[e]===void 0)return void KFc(t);t.context_line=r[e];let n=rkc(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 KFc(e){delete e.pre_context,delete e.context_line,delete e.post_context}function tNd(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function rNd(e){return e.lineno!==void 0&&e.lineno>Y2d||e.colno!==void 0&&e.colno>J2d}function nNd(e,t){let r=V5r.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 iNd(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=JFc(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+YCo:(i.push(n),n=JFc(o)),t++}return i}function JFc(e){return[tkc(e),rkc(e)]}function tkc(e){return Math.max(1,e-YCo)}function rkc(e){return e+YCo}function oNd(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function sNd(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}function aNd(e,t){let r=!1;return Object.assign(n=>{let o=global.process.listeners("uncaughtException").filter(s=>s.name!=="domainUncaughtExceptionClear"&&s._posthogErrorHandler!==!0).length===0;e(n,{mechanism:{type:"onuncaughtexception",handled:!1}}),!r&&o&&(r=!0,t(n))},{_posthogErrorHandler:!0})}function nkc(e,t){globalThis.process?.on("uncaughtException",aNd(e,t))}function ikc(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var cNd=2e3,CW=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new P5r({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return OCo(t)&&"__posthog_previously_captured_error"in t&&t.__posthog_previously_captured_error===!0}static async buildEventMessage(t,r,n,i){let o={...i},s=this.errorPropertiesBuilder.buildFromUnknown(t,r);return s.$exception_list=await this.errorPropertiesBuilder.modifyFrames(s.$exception_list),{event:"$exception",distinctId:n,properties:{...s,...o},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){this.isEnabled()&&(nkc(this.onException.bind(this),this.onFatalError.bind(this)),ikc(this.onException.bind(this)))}onException(t,r){this.client.addPendingPromise((async()=>{if(!e.isPreviouslyCapturedError(t)){let n=await e.buildEventMessage(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.capture(n)}})())}async onFatalError(t){console.error(t),await this.client.shutdown(cNd),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var okc="5.29.1";var fzt={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};async function skc(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(i=>i.toString(16).padStart(2,"0")).join("")}var uNd=6e4,lNd=1152921504606847e3,pNd=["is_not"],$nt=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},kd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},BZ=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},q5r=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.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.cacheProvider=a.cacheProvider,this.strictLocalEvaluation=a.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(t=!0){this.debugMode=t}logMsgIfDebug(t){this.debugMode&&t()}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 BZ||u instanceof kd?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={...t,evaluationCache:t.evaluationCache??{}};return await Promise.all(s.map(async c=>{try{let{value:u,payload:l}=await this.computeFlagAndPayloadLocally(c,a);n[c.key]=u,l&&(i[c.key]=l)}catch(u){u instanceof BZ||u instanceof kd?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(o||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=i!==void 0?i:await this.computeFlagValueLocally(t,r);let a=this.getFeatureFlagPayload(t.key,s);return{value:s,payload:a}}async computeFlagValueLocally(t,r){let{distinctId:n,groups:i,personProperties:o,groupProperties:s}=r;if(t.ensure_experience_continuity)throw new kd("Flag has experience continuity enabled");if(!t.active)return!1;let c=(t.filters||{}).aggregation_group_type_index;if(c!=null){let u=this.groupTypeMapping[String(c)];if(!u)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${c} for feature flag ${t.key}`)),new kd("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 kd(`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}getFeatureFlagPayload(t,r){let n=null;if(r!==!1&&r!=null&&(typeof r=="boolean"?n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r.toString()]||null:typeof r=="string"&&(n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r]||null),n!=null)){if(typeof n=="object")return n;if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}return null}async evaluateFlagDependency(t,r,n){let{evaluationCache:i}=n,o=t.key;if(!this.featureFlagsByKey)throw new kd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new kd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new kd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new kd(`Circular dependency detected for flag '${o}' (empty dependency chain)`);for(let c of s){if(!(c in i)){let l=this.featureFlagsByKey[c];if(l)if(l.active)try{let p=await this.computeFlagValueLocally(l,n);i[c]=p}catch(p){throw new kd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new kd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new kd(`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){let o=t.filters||{},s=o.groups||[],a=!1,c;for(let u of s)try{if(await this.isConditionMatch(t,r,u,n,i)){let l=u.variant,p=o.multivariate?.variants||[];c=l&&p.some(d=>d.key===l)?l:await this.getMatchingVariant(t,r)||!0;break}}catch(l){if(l instanceof BZ)throw l;if(l instanceof kd)a=!0;else throw l}if(c!==void 0)return c;if(a)throw new kd("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(t,r,n,i,o){let s=n.rollout_percentage,a=c=>{this.logMsgIfDebug(()=>console.warn(c))};if((n.properties||[]).length>0){for(let c of n.properties){let u=c.type,l=!1;if(l=u==="cohort"?pkc(c,i,this.cohorts,this.debugMode):u==="flag"?await this.evaluateFlagDependency(c,i,o):lkc(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await akc(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await akc(t.key,r,"variant"),i=this.variantLookupTable(t).find(o=>n>=o.valueMin&&n<o.valueMax);if(i)return i.key}variantLookupTable(t){let r=[],n=0,i=0;return((t.filters||{}).multivariate?.variants||[]).forEach(a=>{i=n+a.rollout_percentage/100,r.push({valueMin:n,valueMax:i,key:a.key}),n=i}),r}updateFlagState(t){this.featureFlags=t.flags,this.featureFlagsByKey=t.flags.reduce((r,n)=>(r[n.key]=n,r),{}),this.groupTypeMapping=t.groupTypeMapping,this.cohorts=t.cohorts,this.loadedSuccessfullyOnce=!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(r.flags),!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(){return this.shouldBeginExponentialBackoff?Math.min(uNd,this.pollingInterval*2**this.backOffCount):this.pollingInterval}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),this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());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 $nt(`Your project key or personal API 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.groupTypeMapping={},this.cohorts={};return;case 403:throw this.beginBackoff(),new $nt(`Your personal API 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 personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new $nt(`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={flags:n.flags??[],groupTypeMapping:n.group_type_mapping||{},cohorts:n.cohorts||{}};if(this.updateFlagState(i),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&t)try{await this.cacheProvider.onFlagDefinitionsReceived(i)}catch(o){this.onError?.(new Error(`Failed to store in cache: ${o}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(i.flags);break}default:return}}catch(t){t instanceof $nt&&this.onError?.(t)}}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}}_requestFeatureFlagDefinitions(){let t=`${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`,r=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;n=Upe(()=>{i.abort()},this.timeout),r.signal=i.signal}try{let i=this.fetch;return i(t,r)}finally{clearTimeout(n)}}async stopPoller(t=3e4){if(clearTimeout(this.poller),this.cacheProvider)try{let r=this.cacheProvider.shutdown();r instanceof Promise&&await Promise.race([r,new Promise((n,i)=>setTimeout(()=>i(new Error(`Cache shutdown timeout after ${t}ms`)),t))])}catch(r){this.onError?.(new Error(`Error during cache shutdown: ${r}`))}}};async function akc(e,t,r=""){let n=await skc(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/lNd}function lkc(e,t,r){let n=e.key,i=e.value,o=e.operator||"exact";if(n in t){if(o==="is_not_set")throw new kd("Operator is_not_set is not supported")}else throw new kd(`Property ${n} not found in propertyValues`);let s=t[n];if(s==null&&!pNd.includes(o))return r&&r(`Property ${n} cannot have a value of null/undefined with the ${o} operator`),!1;function a(u,l){return Array.isArray(u)?u.map(p=>String(p).toLowerCase()).includes(String(l).toLowerCase()):String(u).toLowerCase()===String(l).toLowerCase()}function c(u,l,p){if(p==="gt")return u>l;if(p==="gte")return u>=l;if(p==="lt")return u<l;if(p==="lte")return u<=l;throw new Error(`Invalid operator: ${p}`)}switch(o){case"exact":return a(i,s);case"is_not":return!a(i,s);case"is_set":return n in t;case"icontains":return String(s).toLowerCase().includes(String(i).toLowerCase());case"not_icontains":return!String(s).toLowerCase().includes(String(i).toLowerCase());case"regex":return ckc(String(i))&&String(s).match(String(i))!==null;case"not_regex":return ckc(String(i))&&String(s).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof i=="number"?i:null;if(typeof i=="string")try{u=parseFloat(i)}catch{}return u==null||s==null?c(String(s),String(i),o):typeof s=="string"?c(s,String(i),o):c(s,u,o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new kd("Date operations cannot be performed on boolean values");let u=gNd(String(i));if(u==null&&(u=ukc(i)),u==null)throw new kd(`Invalid date: ${i}`);let l=ukc(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return sV(TB(String(s)),TB(String(i)))===0;case"semver_neq":return sV(TB(String(s)),TB(String(i)))!==0;case"semver_gt":return sV(TB(String(s)),TB(String(i)))>0;case"semver_gte":return sV(TB(String(s)),TB(String(i)))>=0;case"semver_lt":return sV(TB(String(s)),TB(String(i)))<0;case"semver_lte":return sV(TB(String(s)),TB(String(i)))<=0;case"semver_tilde":{let u=TB(String(s)),{lower:l,upper:p}=dNd(String(i));return sV(u,l)>=0&&sV(u,p)<0}case"semver_caret":{let u=TB(String(s)),{lower:l,upper:p}=mNd(String(i));return sV(u,l)>=0&&sV(u,p)<0}case"semver_wildcard":{let u=TB(String(s)),{lower:l,upper:p}=hNd(String(i));return sV(u,l)>=0&&sV(u,p)<0}default:throw new kd(`Unknown operator: ${o}`)}}function fNd(e,t){if(!(e in t))throw new BZ(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function pkc(e,t,r,n=!1){let i=String(e.value);fNd(i,r);let o=r[i];return fkc(o,t,r,n)}function fkc(e,t,r,n=!1){if(!e)return!0;let i=e.type,o=e.values;if(!o||o.length===0)return!0;let s=!1;if("values"in o[0]){for(let a of o)try{let c=fkc(a,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof BZ)throw c;if(c instanceof kd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new kd("Can't match cohort without a given cohort property value");return i==="AND"}for(let a of o)try{let c;if(a.type==="cohort")c=pkc(a,t,r,n);else if(a.type==="flag"){n&&console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${a.key||"unknown"}'`);continue}else c=lkc(a,t);let u=a.negation||!1;if(i==="AND"){if(!c&&!u||c&&u)return!1}else if(c&&!u||!c&&u)return!0}catch(c){if(c instanceof BZ)throw c;if(c instanceof kd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new kd("can't match cohort without a given cohort property value");return i==="AND"}function ckc(e){try{return new RegExp(e),!0}catch{return!1}}function TB(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new kd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>{if(c===void 0||c==="")return 0;if(!/^\d+$/.test(c))throw new kd(`Invalid semver: ${e}`);return parseInt(c,10)},o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function sV(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 dNd(e){let t=TB(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function mNd(e){let t=TB(e),[r,n,i]=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 hNd(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new kd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=parseInt(n[0],10);if(isNaN(i))throw new kd(`Invalid wildcard semver: ${e}`);let o,s;if(n.length===1)o=[i,0,0],s=[i+1,0,0];else{let a=parseInt(n[1],10);if(isNaN(a))throw new kd(`Invalid wildcard semver: ${e}`);o=[i,a,0],s=[i,a+1,0]}return{lower:o,upper:s}}function ukc(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 kd(`${e} is in an invalid date format`)}throw new kd(`The date provided ${e} must be a string, number, or date object`)}function gNd(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,r=e.match(t),n=new Date(new Date().toISOString());if(!r)return null;{if(!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}}var G5r=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var ANd=100,dkc=3e4,yNd=5e4,bNd=50,ENd=500,W5r=class extends pzt{constructor(t,r={}){if(super(t,r),this._memoryStorage=new G5r,this.options=r,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof r.featureFlagsPollingInterval=="number"?Math.max(r.featureFlagsPollingInterval,ANd):dkc,typeof r.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(r.waitUntilDebounceMs,0)),typeof r.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(r.waitUntilMaxWaitMs,0)),r.personalApiKey){if(r.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.');r.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new q5r({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:r.personalApiKey,projectApiKey:t,timeout:r.requestTimeout??1e4,host:this.host,fetch:r.fetch,onError:i=>{this._events.emit("error",i)},onLoad:i=>{this._events.emit("localEvaluationFlagsLoaded",i)},customHeaders:this.getCustomHeaders(),cacheProvider:r.flagDefinitionCacheProvider,strictLocalEvaluation:r.strictLocalEvaluation}))}this.errorTracking=new CW(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||yNd}enqueue(t,r,n){super.enqueue(t,r,n),this.scheduleDebouncedFlush()}async flush(){let t=super.flush(),r=this.options.waitUntil;if(r&&!this._waitUntilCycle)try{r(t.catch(()=>{}))}catch{}return t}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??ENd,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??bNd;this._waitUntilCycle.timer=Upe(()=>{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 super.flush()}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)}getLibraryVersion(){return okc}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}capture(t){typeof t=="string"&&this._logger.warn("Called capture() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStateless(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}async captureImmediate(t){return typeof t=="string"&&this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("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.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStatelessImmediate(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}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};super.identifyStateless(t,l,{disableGeoip:n})}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};super.identifyStatelessImmediate(t,l,{disableGeoip:n})}alias(t){super.aliasStateless(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}async aliasImmediate(t){await super.aliasStatelessImmediate(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(t=dkc){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){let o=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&t in this._flagOverrides){let T=this._flagOverrides[t];if(T===void 0)return;let B=this._payloadOverrides?.[t];return{key:t,enabled:T!==!1,variant:typeof T=="string"?T:void 0,payload:B}}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,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f,m=!1,h,A,b,v,x,C;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let T=this.featureFlagsPoller?.featureFlagsByKey[t];if(T)try{let B=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(T,d,{matchValue:i});if(B){m=!0;let R=B.value;v=T.id,C="Evaluated locally",f={key:t,enabled:R!==!1,variant:typeof R=="string"?R:void 0,payload:B.payload??void 0}}}catch(B){if(B instanceof BZ||B instanceof kd)this._logger?.info(`${B.name} when computing flag locally: ${t}: ${B.message}`);else throw B}}if(!m&&!c){let T=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(T===void 0)b=fzt.UNKNOWN_ERROR;else{h=T.requestId,A=T.evaluatedAt;let B=[];T.errorsWhileComputingFlags&&B.push(fzt.ERRORS_WHILE_COMPUTING),T.quotaLimited?.includes("feature_flags")&&B.push(fzt.QUOTA_LIMITED);let R=T.flags[t];if(R===void 0)B.push(fzt.FLAG_MISSING);else{v=R.metadata?.id,x=R.metadata?.version,C=R.reason?.description??R.reason?.code;let O;if(R.metadata?.payload!==void 0)try{O=JSON.parse(R.metadata.payload)}catch{O=R.metadata.payload}f={key:t,enabled:R.enabled,variant:R.variant,payload:O}}B.length>0&&(b=B.join(","))}}if(o){let T=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,B=`${t}_${T}`;if(!(r in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[r].includes(B)){Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(B):this.distinctIdHasSentFlagCalls[r]=[B];let R={$feature_flag:t,$feature_flag_response:T,$feature_flag_id:v,$feature_flag_version:x,$feature_flag_reason:C,locally_evaluated:m,[`$feature/${t}`]:T,$feature_flag_request_id:h,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let O=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();O!==void 0&&(R.$feature_flag_definitions_loaded_at=O)}b&&(R.$feature_flag_error=b),this.capture({distinctId:r,event:"$feature_flag_called",properties:R,groups:s,disableGeoip:a})}}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){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(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.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){let i=await this.getFeatureFlag(t,r,n);if(i!==void 0)return!!i||!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:{}};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,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},h={},A=!0;if(f&&(m=f.response,h=f.payloads,A=f.fallbackToFlags),A&&!c){let b=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...b.flags||{}},h={...h,...b.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(h={...h,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:h}}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){super.groupIdentifyStateless(t,r,n,{disableGeoip:o},i)}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=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(t),this.errorTracking.shutdown();try{return await super._shutdown(t)}finally{r?.()}}async _requestRemoteConfigPayload(t){if(!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=Upe(()=>{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(IFc(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){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={distinct_id:t,...n||{}},s={};if(r)for(let a of Object.keys(r))s[a]={$group_key:r[a],...i?.[a]||{}};return{allPersonProperties:o,allGroupProperties:s}}createFeatureFlagEvaluationContext(t,r,n,i){return{distinctId:t,groups:r||{},personProperties:n||{},groupProperties:i||{},evaluationCache:{}}}captureException(t,r,n,i){if(!CW.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");this.addPendingPromise(CW.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.capture({...s,uuid:i})))}}async captureExceptionImmediate(t,r,n){if(!CW.isPreviouslyCapturedError(t)){let i=new Error("PostHog syntheticException");return this.addPendingPromise(CW.buildEventMessage(t,{syntheticException:i},r,n).then(o=>this.captureImmediate(o)))}}async prepareEventMessage(t){let{distinctId:r,event:n,properties:i,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u}=t,l=this.context?.get(),p=r||l?.distinctId,d={...this.props,...l?.properties||{},...i||{}};p||(p=yve(),d.$process_person_profile=!1),l?.sessionId&&!d.$session_id&&(d.$session_id=l.sessionId);let f=this._runBeforeSend({distinctId:p,event:n,properties:d,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u});if(!f)return Promise.reject(null);let m=await Promise.resolve().then(async()=>{if(s){let h=typeof s=="object"?s:void 0;return await this.getFeatureFlagsForEvent(f.distinctId,o,c,h)}return f.event,{}}).then(h=>{let A={};if(h)for(let[v,x]of Object.entries(h))A[`$feature/${v}`]=x;let b=Object.keys(h||{}).filter(v=>h?.[v]!==!1).sort();return b.length>0&&(A.$active_feature_flags=b),A}).catch(()=>({})).then(h=>({...h,...f.properties||{},$groups:f.groups||o}));return f.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof m.$raw_user_agent=="string"&&gFc(m.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(f.event="$bot_pageview",m.$browser_type="bot"),{distinctId:f.distinctId,event:f.event,properties:m,options:{timestamp:f.timestamp,disableGeoip:f.disableGeoip,uuid:f.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){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)}}return i}};var mkc=require("async_hooks"),$5r=class{constructor(){this.storage=new mkc.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 hkc="posthog-node";function INd(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[XCo.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(m=>({...m,stacktrace:m.stacktrace?{...m.stacktrace,type:"raw",frames:(m.stacktrace.frames||[]).map(h=>({...h,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};return 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 XCo=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=hkc,this.name=hkc,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(INd(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};CW.errorPropertiesBuilder=new Gj.ErrorPropertiesBuilder([new Gj.EventCoercer,new Gj.ErrorCoercer,new Gj.ObjectCoercer,new Gj.StringCoercer,new Gj.PrimitiveCoercer],Gj.createStackParser("node:javascript",Gj.nodeStackLineParser),[pFc(),ekc]);var bve=class extends W5r{getLibraryId(){return"posthog-node"}initializeContext(){return new $5r}};var H5r=class{posthog;constructor({posthogApiKey:t}){this.posthog=new bve(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.5.1",usingAccessToken:!0}})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var dzt=class{async sendEvent(){}async identify(){}async flush(){}};er();var Hnt=require("fs/promises"),gkc=require("os"),Akc=require("path");var vNd="id",CNd=".fern",mzt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new bve(r),this.userId=t==null?void 0:hyo(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.5.1",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{}}})}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 Nf({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=Ze(Jt.of((0,gkc.homedir)()),Re.of(CNd),Re.of(vNd));await lr(t)||(await(0,Hnt.mkdir)((0,Akc.dirname)(t),{recursive:!0}),await(0,Hnt.writeFile)(t,DP())),this.persistedDistinctId=(await(0,Hnt.readFile)(t)).toString()}return this.persistedDistinctId}};var ZCo;async function hzt(){return ZCo==null&&(ZCo=await xNd()),ZCo}async function xNd(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new dzt;let r=await oLr();return r!=null?new mzt({token:r,posthogApiKey:e}):await pZ()!=null?new H5r({posthogApiKey:e}):new mzt({token:void 0,posthogApiKey:e})}catch{return new dzt}}Lt();var gzt=we(require("process"),1);bGe();var Ekc=we(huo(),1),Ikc=we(bkc(),1);function $_(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=s7(e),e.length===0))return 0;e=e.replace((0,Ikc.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(Ekc.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}function K5r(e){let t=0;for(let r of e.split(`
2696
2696
  `))t=Math.max(t,$_(r));return t}var zkc=we(txo(),1);var SNd=/[\p{Lu}]/u,_Nd=/[\p{Ll}]/u,xkc=/^[\p{Lu}](?![\p{Lu}])/gu,_kc=/([\p{Alpha}\p{N}_]|$)/u,rxo=/[_.\- ]+/,TNd=new RegExp("^"+rxo.source),wkc=new RegExp(rxo.source+_kc.source,"gu"),Skc=new RegExp("\\d+"+_kc.source,"gu"),BNd=(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&&SNd.test(u)?(e=e.slice(0,c)+"-"+e.slice(c),i=!1,s=o,o=!0,c++):o&&s&&_Nd.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},ONd=(e,t)=>(xkc.lastIndex=0,e.replace(xkc,r=>t(r))),PNd=(e,t)=>(wkc.lastIndex=0,Skc.lastIndex=0,e.replace(wkc,(r,n)=>t(n)).replace(Skc,r=>t(r)));function nxo(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?rxo.test(e)?"":t.pascalCase?n(e):r(e):(e!==r(e)&&(e=BNd(e,r,n,t.preserveConsecutiveUppercase)),e=e.replace(TNd,""),e=t.preserveConsecutiveUppercase?ONd(e,r):r(e),t.pascalCase&&(e=n(e.charAt(0))+e.slice(1)),PNd(e,n))}var axo=we(Bkc(),1);bGe();var Okc=(e=0)=>t=>`\x1B[${t+e}m`,Pkc=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Dkc=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,U0={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]}},D50=Object.keys(U0.modifier),kNd=Object.keys(U0.color),NNd=Object.keys(U0.bgColor),R50=[...kNd,...NNd];function jNd(){let e=new Map;for(let[t,r]of Object.entries(U0)){for(let[n,i]of Object.entries(r))U0[n]={open:`\x1B[${i[0]}m`,close:`\x1B[${i[1]}m`},r[n]=U0[n],e.set(i[0],i[1]);Object.defineProperty(U0,t,{value:r,enumerable:!1})}return Object.defineProperty(U0,"codes",{value:e,enumerable:!1}),U0.color.close="\x1B[39m",U0.bgColor.close="\x1B[49m",U0.color.ansi=Okc(),U0.color.ansi256=Pkc(),U0.color.ansi16m=Dkc(),U0.bgColor.ansi=Okc(10),U0.bgColor.ansi256=Pkc(10),U0.bgColor.ansi16m=Dkc(10),Object.defineProperties(U0,{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=>U0.rgbToAnsi256(...U0.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)=>U0.ansi256ToAnsi(U0.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>U0.ansi256ToAnsi(U0.hexToAnsi256(t)),enumerable:!1}}),U0}var QNd=jNd(),Rkc=QNd;var J5r=new Set(["\x1B","\x9B"]),MNd=39,oxo="\x07",Nkc="[",LNd="]",jkc="m",sxo=`${LNd}8;;`,Fkc=e=>`${J5r.values().next().value}${Nkc}${e}${jkc}`,kkc=e=>`${J5r.values().next().value}${sxo}${e}${oxo}`,zNd=e=>e.split(" ").map(t=>$_(t)),ixo=(e,t,r)=>{let n=[...t],i=!1,o=!1,s=$_(s7(e[e.length-1]));for(let[a,c]of n.entries()){let u=$_(c);if(s+u<=r?e[e.length-1]+=c:(e.push(c),s=0),J5r.has(c)&&(i=!0,o=n.slice(a+1).join("").startsWith(sxo)),i){o?c===oxo&&(i=!1,o=!1):c===jkc&&(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())},UNd=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!($_(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},VNd=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i,o,s=zNd(e),a=[""];for(let[u,l]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let p=$_(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(""),ixo(a,l,t);continue}if(p+s[u]>t&&p>0&&s[u]>0){if(r.wordWrap===!1&&p<t){ixo(a,l,t);continue}a.push("")}if(p+s[u]>t&&r.wordWrap===!1){ixo(a,l,t);continue}a[a.length-1]+=l}r.trim!==!1&&(a=a.map(u=>UNd(u)));let c=[...a.join(`
2697
2697
  `)];for(let[u,l]of c.entries()){if(n+=l,J5r.has(l)){let{groups:d}=new RegExp(`(?:\\${Nkc}(?<code>\\d+)m|\\${sxo}(?<uri>.*)${oxo})`).exec(c.slice(u).join(""))||{groups:{}};if(d.code!==void 0){let f=Number.parseFloat(d.code);i=f===MNd?void 0:f}else d.uri!==void 0&&(o=d.uri.length===0?void 0:d.uri)}let p=Rkc.codes.get(Number(i));c[u+1]===`
2698
2698
  `?(o&&(n+=kkc("")),i&&p&&(n+=Fkc(p))):l===`
@@ -3245,7 +3245,7 @@ Hint: Values starting with "@" (such as scoped npm packages) must be wrapped in
3245
3245
  `)}var g8t=class{cwd;logger;deleteOriginals;constructor(t){this.cwd=t.cwd,this.logger=t.logger,this.deleteOriginals=t.deleteOriginals??!0}async migrate(){let t=[],r=[],n=await this.findFernDirectory();if(n==null)return{success:!1,warnings:[{type:"conflict",message:"Could not find fern directory",suggestion:"Run this command from a directory containing a 'fern' folder"}],migratedFiles:r};let o=await new h8t({cwd:n}).migrate();if(t.push(...o.warnings),!o.success||o.org==null)return{success:!1,warnings:[...t,{type:"conflict",message:"Failed to migrate fern.config.json - organization is required"}],migratedFiles:r};o.absoluteFilePath!=null&&r.push(o.absoluteFilePath);let s=Ze(n,Re.of(gF)),a=await lr(s,"directory"),c;if(a){let d=await this.migrateMultiApi({fernDir:n,apisDir:s,org:o.org,warnings:t,migratedFiles:r});if(!d.success)return{success:!1,warnings:t,migratedFiles:r};c=d.fernYml}else{let d=await this.migrateSingleApi({fernDir:n,org:o.org,warnings:t,migratedFiles:r});if(!d.success)return{success:!1,warnings:t,migratedFiles:r};c=d.fernYml}let u=await GMo(n);u.docsRef!=null&&(c.docs=u.docsRef);let l=Ze(this.cwd,Re.of(pC)),p=this.serializeFernYml(c);if(await(0,Dyt.writeFile)(l,p,"utf-8"),this.deleteOriginals)for(let d of r)try{await(0,Dyt.rm)(d),this.logger.debug(`Deleted ${d}`)}catch{t.push({type:"info",message:`Could not delete ${d}`})}return this.logger.info(`Created ${l}`),t.push(...await WMo(this.cwd)),{success:!0,warnings:t,migratedFiles:r,outputPath:l}}async migrateSingleApi(t){let{fernDir:r,org:n,warnings:i,migratedFiles:o}=t,a=await new L4e({cwd:r}).migrate();i.push(...a.warnings),a.absoluteFilePath!=null&&o.push(a.absoluteFilePath);let c=await VMo({fernDir:r,generatorsYmlApi:a.rawApi});i.push(...c.warnings);let u={org:n};return c.api!=null&&(u.api=c.api),a.sdks!=null&&(u.sdks=a.sdks),{success:!0,fernYml:u}}async migrateMultiApi(t){let{fernDir:r,apisDir:n,org:i,warnings:o,migratedFiles:s}=t,c=(await(0,Dyt.readdir)(n,{withFileTypes:!0})).filter(A=>A.isDirectory()).map(A=>A.name);if(c.length===0)return o.push({type:"conflict",message:"No API directories found in fern/apis/"}),{success:!1,fernYml:{org:i}};let u={},l={targets:{}},p;for(let A of c){let b=Ze(n,Re.of(A)),x=await new L4e({cwd:b,apiName:A}).migrate();if(o.push(...x.warnings),x.absoluteFilePath!=null&&s.push(x.absoluteFilePath),u[A]=x.rawApi,x.sdks!=null){for(let[C,w]of Object.entries(x.sdks.targets))l.targets[C]=w;x.sdks.autorelease!=null&&p==null&&(p=x.sdks.autorelease)}}let d=await qMo({fernDir:r,apisDir:n,generatorsYmlApis:u});o.push(...d.warnings);let f={org:i,apis:d.apis};Object.keys(l.targets).length>0&&(p!=null&&(l.autorelease=p),f.sdks=l);let h=await new L4e({cwd:r}).detect();return h.found&&h.absoluteFilePath!=null&&(o.push({type:"info",message:"Found generators.yml in fern root alongside apis/ directory",suggestion:"Review the migrated configuration to ensure it's correct"}),s.push(h.absoluteFilePath)),{success:!0,fernYml:f}}async findFernDirectory(){if(this.cwd.split("/").pop()===WA)return this.cwd;let r=Ze(this.cwd,Re.of(WA));if(await lr(r,"directory"))return r}serializeFernYml(t){let r={edition:t.edition,org:t.org};return t.api!=null&&(r.api=t.api),t.apis!=null&&(r.apis=t.apis),t.ai!=null&&(r.ai=t.ai),t.cli!=null&&(r.cli=t.cli),t.docs!=null&&(r.docs=t.docs),t.sdks!=null&&(r.sdks=this.simplifySdks(t.sdks)),Tr.dump(r,{indent:2,lineWidth:120,noRefs:!0,sortKeys:!1,quotingType:'"',forceQuotes:!1})}simplifySdks(t){let r={...t},n={};for(let[i,o]of Object.entries(t.targets)){let s=o.output;if(typeof s=="string"){n[i]=o;continue}if(s.git==null&&s.path!=null){n[i]={...o,output:s.path};continue}n[i]=o}return r.targets=n,r}};var $Mo=class{async handle(t,r){let i=await new g8t({cwd:t.cwd,logger:t.stdout,deleteOriginals:r.delete}).migrate();for(let o of i.warnings){switch(o.type){case"deprecated":t.stdout.warn(`Deprecated: ${o.message}`);break;case"unsupported":t.stdout.warn(`Unsupported: ${o.message}`);break;case"conflict":t.stderr.error(`Error: ${o.message}`);break;case"info":t.stdout.info(o.message);break}o.suggestion!=null&&t.stdout.info(` Suggestion: ${o.suggestion}`)}if(i.success){i.outputPath!=null&&t.stdout.debug(`Created: ${i.outputPath}`);return}throw new j({message:"Migration failed",code:j.Code.ConfigError})}};function HMo(e){let t=new $Mo;_o(e,"migrate","Migrate legacy configuration files to fern.yml",(r,n)=>t.handle(r,n),r=>r.option("delete",{type:"boolean",description:"Keep original files after migration",default:!0}))}function KMo(e){xI(e,"config","Configure, edit, and inspect your settings",[HMo])}var JMo=class{async handle(t,r){let n=await t.loadWorkspaceOrThrow();if(n.docs==null)throw new j({message:`No docs configuration found in fern.yml.
3246
3246
 
3247
3247
  Add a 'docs:' section to your fern.yml to get started.`,code:j.Code.ConfigError});let o=await new OBe({context:t}).check({workspace:n,strict:r.strict}),s=o.hasErrors||r.strict&&o.hasWarnings;if(r.json){let a=this.buildJsonResponse({result:o,hasErrors:s});if(t.stdout.info(JSON.stringify(a,null,2)),s)throw new j({code:j.Code.ValidationError});return}if(o.violations.length>0)for(let a of o.violations){let c=a.severity==="warning"?xe.yellow:xe.red;process.stderr.write(`${c(`${a.displayRelativeFilepath}:${a.line}:${a.column}: ${a.message}`)}
3248
- `)}if(s)throw new j({code:j.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${_n.warning} ${xe.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(xe.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${_n.success} ${xe.green("All checks passed")}`)}buildJsonResponse({result:t,hasErrors:r}){let n={};return t.violations.length>0&&(n.docs=t.violations.map(i=>RZ(i))),{success:!r,results:n}}};function YMo(e){let t=new JMo;_o(e,"check","Validate docs configuration",(r,n)=>t.handle(r,n),r=>r.option("strict",{type:"boolean",description:"Treat warnings as errors",default:!1}).option("json",{type:"boolean",description:"Output results as JSON to stdout",default:!1}))}var deu=we(require("net"),1),meu=we(require("os"),1),WJn=class extends Error{constructor(t){super(`${t} is locked`)}},Ryt={old:new Set,young:new Set},kym=1e3*15,heu=new Set;var A8t,Nym=()=>{let e=meu.default.networkInterfaces(),t=new Set([void 0,"0.0.0.0"]);for(let r of Object.values(e))for(let n of r)t.add(n.address);return t},peu=e=>new Promise((t,r)=>{let n=deu.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),feu=async(e,t)=>{if(e.host||e.port===0)return peu(e);for(let r of t)try{await peu({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},jym=e=>Ryt.old.has(e)||Ryt.young.has(e)||heu.has(e),Qym=function*(e){e&&(yield*e),yield 0};async function PBe(e){let t,r=new Set;if(e&&(e.port&&(t=typeof e.port=="number"?[e.port]:e.port),e.exclude)){let s=e.exclude;if(typeof s[Symbol.iterator]!="function")throw new TypeError("The `exclude` option must be an iterable.");for(let a of s){if(typeof a!="number")throw new TypeError("Each item in the `exclude` option must be a number corresponding to the port you want excluded.");if(!Number.isSafeInteger(a))throw new TypeError(`Number ${a} in the exclude option is not a safe integer and can't be used`)}r=new Set(s)}let{reserve:n,...i}=e??{};A8t===void 0&&(A8t=setTimeout(()=>{A8t=void 0,Ryt.old=Ryt.young,Ryt.young=new Set},kym),A8t.unref&&A8t.unref());let o=Nym();for(let s of Qym(t))try{if(r.has(s))continue;let a=await feu({...i,port:s},o);for(;jym(a);){if(s!==0)throw new WJn(s);a=await feu({...i,port:s},o)}return n?heu.add(a):Ryt.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof WJn))throw a}throw new Error("No available ports found")}var yeu=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,geu="docs.buildwithfern.com",Aeu=62;function z4e(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)),yeu.test(t)}function beu(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function y8t({orgId:e,previewId:t}){let r=beu(t),n=`${e}-preview-${r}.${geu}`;if(n.length<=Aeu)return n;let i=`${e}-preview-`,o=Aeu-i.length;if(o<8)throw new j({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:j.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${geu}`}Lt();tg();er();Uw();var j3o=require("child_process"),Qfu=we(e6o(),1),Q3o=we(DYn(),1),M3o=we(require("fs"),1),Sqt=require("fs/promises"),Mfu=we(require("http"),1),U3o=we(require("path"),1);var Aou=require("events"),jYn=we(require("fs"),1),Y4e=we(require("path"),1);var Ziu=we(require("os"),1),eou=300,QBe=20,V8t=1e7,tou=Ziu.default.platform();var Zxm=tou==="darwin",bLo=tou==="win32",MBe=Zxm||bLo,rou=3e3,nou=2e4,ELo=1250;var Nne;(function(e){e[e.DIR=1]="DIR",e[e.FILE=2]="FILE"})(Nne||(Nne={}));var J4e;(function(e){e.CHANGE="change",e.RENAME="rename"})(J4e||(J4e={}));var q8t;(function(e){e.CHANGE="change",e.ERROR="error"})(q8t||(q8t={}));var Uc;(function(e){e.ADD="add",e.ADD_DIR="addDir",e.CHANGE="change",e.RENAME="rename",e.RENAME_DIR="renameDir",e.UNLINK="unlink",e.UNLINK_DIR="unlinkDir"})(Uc||(Uc={}));var m2;(function(e){e.ALL="all",e.CLOSE="close",e.ERROR="error",e.READY="ready"})(m2||(m2={}));var ewm=(e,t=1,r)=>{t=Math.max(1,t);let n=r?.leading??!1,i=r?.trailing??!0,o=Math.max(r?.maxWait??1/0,t),s,a,c=0,u=0,l=()=>{let C=Date.now(),w=C-c,T=C-u,B=w>=t||T>=o;return[C,B]},p=C=>{if(u=C,!s)return;let w=s;s=void 0,e.apply(void 0,w)},d=()=>{v(0)},f=()=>{a&&(d(),p(Date.now()))},m=C=>{if(u=C,n)return p(C)},h=C=>{if(i&&s)return p(C);s=void 0},A=()=>{a=void 0;let[C,w]=l();return w?h(C):b(C)},b=C=>{let w=C-c,T=C-u,B=t-w,R=o-T,O=Math.min(B,R);return v(O)},v=C=>{a&&clearTimeout(a),!(C<=0)&&(a=setTimeout(A,C))},x=(...C)=>{let[w,T]=l(),B=!!a;if(s=C,c=w,(T||!a)&&v(t),T)return B?p(w):m(w)};return x.cancel=d,x.flush=f,x},RYn=ewm;var xLo=we(require("fs"),1),kYn=we(require("path"),1);var jd=we(require("fs"),1),VB=require("util");var cde=(e,t)=>function(...n){return e.apply(void 0,n).catch(t)},jne=(e,t)=>function(...n){try{return e.apply(void 0,n)}catch(i){return t(i)}};var ILo=we(require("process"),1),iou=ILo.default.getuid?!ILo.default.getuid():!1,oou=1e4,sM=()=>{};var G8t={isChangeErrorOk:e=>{if(!G8t.isNodeError(e))return!1;let{code:t}=e;return t==="ENOSYS"||!iou&&(t==="EINVAL"||t==="EPERM")},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!G8t.isNodeError(e))return!1;let{code:t}=e;return t==="EMFILE"||t==="ENFILE"||t==="EAGAIN"||t==="EBUSY"||t==="EACCESS"||t==="EACCES"||t==="EACCS"||t==="EPERM"},onChangeError:e=>{if(!G8t.isNodeError(e))throw e;if(!G8t.isChangeErrorOk(e))throw e}},AC=G8t;var vLo=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=oou,this.queueActive=new Set,this.queueWaiting=new Set,this.init=()=>{this.intervalId||(this.intervalId=setInterval(this.tick,this.interval))},this.reset=()=>{this.intervalId&&(clearInterval(this.intervalId),delete this.intervalId)},this.add=t=>{this.queueWaiting.add(t),this.queueActive.size<this.limit/2?this.tick():this.init()},this.remove=t=>{this.queueWaiting.delete(t),this.queueActive.delete(t)},this.schedule=()=>new Promise(t=>{let r=()=>this.remove(n),n=()=>t(r);this.add(n)}),this.tick=()=>{if(!(this.queueActive.size>=this.limit)){if(!this.queueWaiting.size)return this.reset();for(let t of this.queueWaiting){if(this.queueActive.size>=this.limit)break;this.queueWaiting.delete(t),this.queueActive.add(t),t()}}}}},sou=new vLo;var ude=(e,t)=>function(n){return function i(...o){return sou.schedule().then(s=>{let a=u=>(s(),u),c=u=>{if(s(),Date.now()>=n)throw u;if(t(u)){let l=Math.round(100*Math.random());return new Promise(d=>setTimeout(d,l)).then(()=>i.apply(void 0,o))}throw u};return e.apply(void 0,o).then(a,c)})}},lde=(e,t)=>function(n){return function i(...o){try{return e.apply(void 0,o)}catch(s){if(Date.now()>n)throw s;if(t(s))return i.apply(void 0,o);throw s}}};var twm={attempt:{chmod:cde((0,VB.promisify)(jd.default.chmod),AC.onChangeError),chown:cde((0,VB.promisify)(jd.default.chown),AC.onChangeError),close:cde((0,VB.promisify)(jd.default.close),sM),fsync:cde((0,VB.promisify)(jd.default.fsync),sM),mkdir:cde((0,VB.promisify)(jd.default.mkdir),sM),realpath:cde((0,VB.promisify)(jd.default.realpath),sM),stat:cde((0,VB.promisify)(jd.default.stat),sM),unlink:cde((0,VB.promisify)(jd.default.unlink),sM),chmodSync:jne(jd.default.chmodSync,AC.onChangeError),chownSync:jne(jd.default.chownSync,AC.onChangeError),closeSync:jne(jd.default.closeSync,sM),existsSync:jne(jd.default.existsSync,sM),fsyncSync:jne(jd.default.fsync,sM),mkdirSync:jne(jd.default.mkdirSync,sM),realpathSync:jne(jd.default.realpathSync,sM),statSync:jne(jd.default.statSync,sM),unlinkSync:jne(jd.default.unlinkSync,sM)},retry:{close:ude((0,VB.promisify)(jd.default.close),AC.isRetriableError),fsync:ude((0,VB.promisify)(jd.default.fsync),AC.isRetriableError),open:ude((0,VB.promisify)(jd.default.open),AC.isRetriableError),readFile:ude((0,VB.promisify)(jd.default.readFile),AC.isRetriableError),rename:ude((0,VB.promisify)(jd.default.rename),AC.isRetriableError),stat:ude((0,VB.promisify)(jd.default.stat),AC.isRetriableError),write:ude((0,VB.promisify)(jd.default.write),AC.isRetriableError),writeFile:ude((0,VB.promisify)(jd.default.writeFile),AC.isRetriableError),closeSync:lde(jd.default.closeSync,AC.isRetriableError),fsyncSync:lde(jd.default.fsyncSync,AC.isRetriableError),openSync:lde(jd.default.openSync,AC.isRetriableError),readFileSync:lde(jd.default.readFileSync,AC.isRetriableError),renameSync:lde(jd.default.renameSync,AC.isRetriableError),statSync:lde(jd.default.statSync,AC.isRetriableError),writeSync:lde(jd.default.writeSync,AC.isRetriableError),writeFileSync:lde(jd.default.writeFileSync,AC.isRetriableError)}},aou=twm;var FYn=we(require("fs"),1),W8t=we(require("path"),1);var CLo=()=>{};var rwm=()=>{let e=CLo,t=CLo,r=!1,n=!1;return{promise:new Promise((c,u)=>{e=l=>(r=!0,c(l)),t=l=>(n=!0,u(l))}),resolve:e,reject:t,isPending:()=>!r&&!n,isResolved:()=>r,isRejected:()=>n}},cou=rwm;var nwm=()=>{let{promise:e,resolve:t,isPending:r}=cou(),n=0,i=()=>{n+=1},o=()=>{n-=1,!n&&t()};return i(),queueMicrotask(o),{promise:e,isPending:r,increment:i,decrement:o}},uou=nwm;var lou={then:e=>{e()}};var pou=e=>Array.isArray(e)?e:[e],fou=e=>typeof e=="function";var iwm=(e,t)=>{let r=t?.followSymlinks??!1,n=t?.depth??1/0,i=t?.limit??1/0,o=t?.ignore??[],s=pou(o).map(ie=>fou(ie)?ie:oe=>ie.test(oe)),a=ie=>s.some(oe=>oe(ie)),c=t?.signal??{aborted:!1},u=t?.onDirents||(()=>{}),l=[],p=new Set,d={},f=[],m=new Set,h={},A=[],b=new Set,v={},x={},C=new Set,w={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{},map:{}},T={directories:l,directoriesNames:p,directoriesNamesToPaths:d,files:f,filesNames:m,filesNamesToPaths:h,symlinks:A,symlinksNames:b,symlinksNamesToPaths:v,map:x},{promise:B,increment:R,decrement:O}=uou(),z=0,J=(ie,oe,Ie,Ce)=>{C.has(oe)||z>=i||(z+=1,ie.directories.push(oe),ie.directoriesNames.add(Ie),l.push(oe),p.add(Ie),d.propertyIsEnumerable(Ie)||(d[Ie]=[]),d[Ie].push(oe),C.add(oe),!(Ce>=n)&&(z>=i||he(oe,Ce+1)))},X=(ie,oe,Ie)=>{C.has(oe)||z>=i||(z+=1,ie.files.push(oe),ie.filesNames.add(Ie),f.push(oe),m.add(Ie),h.propertyIsEnumerable(Ie)||(h[Ie]=[]),h[Ie].push(oe),C.add(oe))},Z=(ie,oe,Ie,Ce)=>{C.has(oe)||z>=i||(z+=1,ie.symlinks.push(oe),ie.symlinksNames.add(Ie),A.push(oe),b.add(Ie),v.propertyIsEnumerable(Ie)||(v[Ie]=[]),v[Ie].push(oe),C.add(oe),r&&(Ce>=n||z>=i||Fe(oe,Ce+1)))},me=(ie,oe,Ie,Ce,ke)=>{c.aborted||a(oe)||(Ce.isDirectory()?J(ie,oe,Ie,ke):Ce.isFile()?X(ie,oe,Ie):Ce.isSymbolicLink()&&Z(ie,oe,Ie,ke))},ge=(ie,oe,Ie,Ce)=>{if(c.aborted)return;let ke=oe===W8t.default.sep?"":W8t.default.sep,Ve=Ie.name,ct=`${oe}${ke}${Ve}`;a(ct)||(Ie.isDirectory()?J(ie,ct,Ve,Ce):Ie.isFile()?X(ie,ct,Ve):Ie.isSymbolicLink()&&Z(ie,ct,Ve,Ce))},ce=(ie,oe,Ie,Ce)=>{for(let ke=0,Ve=Ie.length;ke<Ve;ke++)ge(ie,oe,Ie[ke],Ce)},he=(ie,oe)=>{c.aborted||oe>n||z>=i||(R(),FYn.default.readdir(ie,{withFileTypes:!0},(Ie,Ce)=>{if(Ie||c.aborted||!Ce.length)return O();(u(Ce)||lou).then(()=>{let Ve=x[ie]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};ce(Ve,ie,Ce,oe),O()})}))},Fe=(ie,oe)=>{R(),FYn.default.realpath(ie,(Ie,Ce)=>{if(Ie||c.aborted)return O();FYn.default.stat(Ce,(ke,Ve)=>{if(ke||c.aborted)return O();let ct=W8t.default.basename(Ce),At=x[ie]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};me(At,Ce,ct,Ve,oe),O()})})};return(async(ie,oe=1)=>(ie=W8t.default.normalize(ie),C.add(ie),he(ie,oe),await B,c.aborted?w:T))(e)},dou=iwm;var Qne={lang:{debounce:RYn,attempt:e=>{try{return e()}catch(t){return Qne.lang.castError(t)}},castArray:e=>Qne.lang.isArray(e)?e:[e],castError:e=>Qne.lang.isError(e)?e:Qne.lang.isString(e)?new Error(e):new Error("Unknown error"),defer:e=>setTimeout(e,0),isArray:e=>Array.isArray(e),isError:e=>e instanceof Error,isFunction:e=>typeof e=="function",isNaN:e=>Number.isNaN(e),isNumber:e=>typeof e=="number",isPrimitive:e=>{if(e===null)return!0;let t=typeof e;return t!=="object"&&t!=="function"},isShallowEqual:(e,t)=>{if(e===t)return!0;if(Qne.lang.isNaN(e))return Qne.lang.isNaN(t);if(Qne.lang.isPrimitive(e)||Qne.lang.isPrimitive(t))return e===t;for(let r in e)if(!(r in t))return!1;for(let r in t)if(e[r]!==t[r])return!1;return!0},isSet:e=>e instanceof Set,isString:e=>typeof e=="string",isUndefined:e=>e===void 0,noop:()=>{},uniq:e=>e.length<2?e:Array.from(new Set(e))},fs:{getDepth:e=>Math.max(0,e.split(kYn.default.sep).length-1),getRealPath:(e,t)=>{try{return t?xLo.default.realpathSync.native(e):xLo.default.realpathSync(e)}catch{return}},isSubPath:(e,t)=>t.startsWith(e)&&t[e.length]===kYn.default.sep&&t.length-e.length>kYn.default.sep.length,poll:(e,t=nou)=>aou.retry.stat(t)(e,{bigint:!0}).catch(Qne.lang.noop),readdir:async(e,t,r=1/0,n=1/0,i,o)=>{if(o&&r===1&&e in o){let s=o[e];return[s.directories,s.files]}else{let s=await dou(e,{depth:r,limit:n,ignore:t,signal:i});return[s.directories,s.files]}}}},fp=Qne;var NYn=we(require("path"),1);var wLo=class{constructor(t,r,n){this.base=n,this.watcher=t,this.handler=r.handler,this.fswatcher=r.watcher,this.options=r.options,this.folderPath=r.folderPath,this.filePath=r.filePath,this.handlerBatched=this.base?this.base.onWatcherEvent.bind(this.base):this._makeHandlerBatched(this.options.debounce)}_isSubRoot(t){return this.filePath?t===this.filePath:t===this.folderPath||fp.fs.isSubPath(this.folderPath,t)}_makeHandlerBatched(t=eou){return(()=>{let r=this.watcher._readyWait,n=[],i=new Set,o=async(a,c)=>{let u=this.options.ignoreInitial?[]:a,l=await this.eventsPopulate([...c]),p=this.eventsDeduplicate([...u,...l]);this.onTargetEvents(p)},s=fp.lang.debounce(()=>{this.watcher.isClosed()||(r=o(n,i),n=[],i=new Set)},t);return async(a,c="",u=!1)=>{u?await this.eventsPopulate([c],n,!0):i.add(c),r.then(s)}})()}eventsDeduplicate(t){if(t.length<2)return t;let r={};return t.reduce((n,i)=>{let[o,s]=i,a=r[s];return o===a||o===Uc.CHANGE&&a===Uc.ADD||(r[s]=o,n.push(i)),n},[])}async eventsPopulate(t,r=[],n=!1){return await Promise.all(t.map(async i=>{let o=await this.watcher._poller.update(i,this.options.pollingTimeout);await Promise.all(o.map(async s=>{r.push([s,i]),s===Uc.ADD_DIR?await this.eventsPopulateAddDir(t,i,r,n):s===Uc.UNLINK_DIR&&await this.eventsPopulateUnlinkDir(t,i,r,n)}))})),r}async eventsPopulateAddDir(t,r,n=[],i=!1){if(i)return n;let o=this.options.recursive?this.options.depth??QBe:Math.min(1,this.options.depth??QBe),s=this.options.limit??V8t,[a,c]=await fp.fs.readdir(r,this.options.ignore,o,s,this.watcher._closeSignal),u=[...a,...c];return await Promise.all(u.map(l=>{if(!this.watcher.isIgnored(l,this.options.ignore)&&!t.includes(l))return this.eventsPopulate([l],n,!0)})),n}async eventsPopulateUnlinkDir(t,r,n=[],i=!1){if(i)return n;for(let o of this.watcher._poller.stats.keys())fp.fs.isSubPath(r,o)&&(t.includes(o)||await this.eventsPopulate([o],n,!0));return n}onTargetAdd(t){this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAdd(t,this.options.renameTimeout):this.watcher.event(Uc.ADD,t))}onTargetAddDir(t){t!==this.folderPath&&this.options.recursive&&!MBe&&this.options.native!==!1&&this.watcher.watchDirectory(t,this.options,this.handler,void 0,this.base||this),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAddDir(t,this.options.renameTimeout):this.watcher.event(Uc.ADD_DIR,t))}onTargetChange(t){this._isSubRoot(t)&&this.watcher.event(Uc.CHANGE,t)}onTargetUnlink(t){this.watcher.watchersClose(NYn.default.dirname(t),t,!1),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlink(t,this.options.renameTimeout):this.watcher.event(Uc.UNLINK,t))}onTargetUnlinkDir(t){this.watcher.watchersClose(NYn.default.dirname(t),t,!1),this.watcher.watchersClose(t),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlinkDir(t,this.options.renameTimeout):this.watcher.event(Uc.UNLINK_DIR,t))}onTargetEvent(t){let[r,n]=t;r===Uc.ADD?this.onTargetAdd(n):r===Uc.ADD_DIR?this.onTargetAddDir(n):r===Uc.CHANGE?this.onTargetChange(n):r===Uc.UNLINK?this.onTargetUnlink(n):r===Uc.UNLINK_DIR&&this.onTargetUnlinkDir(n)}onTargetEvents(t){for(let r of t)this.onTargetEvent(r)}onWatcherEvent(t,r,n=!1){return this.handlerBatched(t,r,n)}onWatcherChange(t=J4e.CHANGE,r){if(this.watcher.isClosed())return;let n=NYn.default.resolve(this.folderPath,r||"");this.filePath&&n!==this.folderPath&&n!==this.filePath||this.watcher.isIgnored(n,this.options.ignore)||this.onWatcherEvent(t,n)}onWatcherError(t){bLo&&t.code==="EPERM"?this.onWatcherChange(J4e.CHANGE,""):this.watcher.error(t)}async init(){await this.initWatcherEvents(),await this.initInitialEvents()}async initWatcherEvents(){let t=this.onWatcherChange.bind(this);this.fswatcher.on(q8t.CHANGE,t);let r=this.onWatcherError.bind(this);this.fswatcher.on(q8t.ERROR,r)}async initInitialEvents(){let t=!this.watcher.isReady();if(this.filePath){if(this.watcher._poller.stats.has(this.filePath))return;await this.onWatcherEvent(J4e.CHANGE,this.filePath,t)}else{let r=this.options.recursive&&MBe&&this.options.native!==!1?this.options.depth??QBe:Math.min(1,this.options.depth??QBe),n=this.options.limit??V8t,[i,o]=await fp.fs.readdir(this.folderPath,this.options.ignore,r,n,this.watcher._closeSignal,this.options.readdirMap),s=[this.folderPath,...i,...o];await Promise.all(s.map(a=>{if(!this.watcher._poller.stats.has(a)&&!this.watcher.isIgnored(a,this.options.ignore))return this.onWatcherEvent(J4e.CHANGE,a,t)}))}}},mou=wLo;var h2={interval:100,intervalId:void 0,fns:new Map,init:()=>{h2.intervalId||(h2.intervalId=setInterval(h2.resolve,h2.interval))},reset:()=>{h2.intervalId&&(clearInterval(h2.intervalId),delete h2.intervalId)},add:(e,t)=>{h2.fns.set(e,Date.now()+t),h2.init()},remove:e=>{h2.fns.delete(e)},resolve:()=>{if(!h2.fns.size)return h2.reset();let e=Date.now();for(let[t,r]of h2.fns)r>=e||(h2.remove(t),t())}},$8t=h2;var H8t=class e{constructor(t){this._watcher=t,this.reset()}getLockAdd(t,r=ELo){let{ino:n,targetPath:i,events:o,locks:s}=t,a=()=>{let p=this._watcher._poller.paths.find(n||-1,d=>d!==i);if(p&&p!==i){if(fp.fs.getRealPath(i,!0)===p)return;this._watcher.event(o.rename,p,i)}else this._watcher.event(o.add,i)};if(!n)return a();let c=()=>{s.add.delete(n),$8t.remove(u)},u=()=>{c(),a()};$8t.add(u,r);let l=()=>{let p=s.unlink.get(n);if(!p)return;c();let d=p();i===d?o.change&&this._watcher._poller.stats.has(i)&&this._watcher.event(o.change,i):this._watcher.event(o.rename,d,i)};s.add.set(n,l),l()}getLockUnlink(t,r=ELo){let{ino:n,targetPath:i,events:o,locks:s}=t,a=()=>{this._watcher.event(o.unlink,i)};if(!n)return a();let c=()=>{s.unlink.delete(n),$8t.remove(u)},u=()=>{c(),a()};$8t.add(u,r);let l=()=>(c(),i);s.unlink.set(n,l),s.add.get(n)?.()}getLockTargetAdd(t,r){let n=this._watcher._poller.getIno(t,Uc.ADD,Nne.FILE);return this.getLockAdd({ino:n,targetPath:t,events:e.FILE_EVENTS,locks:this._locksFile},r)}getLockTargetAddDir(t,r){let n=this._watcher._poller.getIno(t,Uc.ADD_DIR,Nne.DIR);return this.getLockAdd({ino:n,targetPath:t,events:e.DIR_EVENTS,locks:this._locksDir},r)}getLockTargetUnlink(t,r){let n=this._watcher._poller.getIno(t,Uc.UNLINK,Nne.FILE);return this.getLockUnlink({ino:n,targetPath:t,events:e.FILE_EVENTS,locks:this._locksFile},r)}getLockTargetUnlinkDir(t,r){let n=this._watcher._poller.getIno(t,Uc.UNLINK_DIR,Nne.DIR);return this.getLockUnlink({ino:n,targetPath:t,events:e.DIR_EVENTS,locks:this._locksDir},r)}reset(){this._locksAdd=new Map,this._locksAddDir=new Map,this._locksUnlink=new Map,this._locksUnlinkDir=new Map,this._locksDir={add:this._locksAddDir,unlink:this._locksUnlinkDir},this._locksFile={add:this._locksAdd,unlink:this._locksUnlink}}};H8t.DIR_EVENTS={add:Uc.ADD_DIR,rename:Uc.RENAME_DIR,unlink:Uc.UNLINK_DIR};H8t.FILE_EVENTS={add:Uc.ADD,change:Uc.CHANGE,rename:Uc.RENAME,unlink:Uc.UNLINK};var hou=H8t;var SLo=class{constructor(){this.map=new Map}clear(){this.map.clear()}delete(t,r){if(fp.lang.isUndefined(r))return this.map.delete(t);if(this.map.has(t)){let n=this.map.get(t);if(fp.lang.isSet(n)){let i=n.delete(r);return n.size||this.map.delete(t),i}else if(n===r)return this.map.delete(t),!0}return!1}find(t,r){if(this.map.has(t)){let n=this.map.get(t);if(fp.lang.isSet(n))return Array.from(n).find(r);if(r(n))return n}}get(t){return this.map.get(t)}has(t,r){if(fp.lang.isUndefined(r))return this.map.has(t);if(this.map.has(t)){let n=this.map.get(t);return fp.lang.isSet(n)?n.has(r):n===r}return!1}set(t,r){if(this.map.has(t)){let n=this.map.get(t);fp.lang.isSet(n)?n.add(r):n!==r&&this.map.set(t,new Set([n,r]))}else this.map.set(t,r);return this}},_Lo=SLo;var TLo=class{constructor(t){this.ino=t.ino<=Number.MAX_SAFE_INTEGER?Number(t.ino):t.ino,this.size=Number(t.size),this.atimeMs=Number(t.atimeMs),this.mtimeMs=Number(t.mtimeMs),this.ctimeMs=Number(t.ctimeMs),this.birthtimeMs=Number(t.birthtimeMs),this._isFile=t.isFile(),this._isDirectory=t.isDirectory(),this._isSymbolicLink=t.isSymbolicLink()}isFile(){return this._isFile}isDirectory(){return this._isDirectory}isSymbolicLink(){return this._isSymbolicLink}},gou=TLo;var BLo=class{constructor(){this.inos={},this.paths=new _Lo,this.stats=new Map}getIno(t,r,n){let i=this.inos[r];if(!i)return;let o=i[t];if(o&&!(n&&o[1]!==n))return o[0]}getStats(t){return this.stats.get(t)}async poll(t,r){let n=await fp.fs.poll(t,r);if(!(!n||!(n.isFile()||n.isDirectory())))return new gou(n)}reset(){this.inos={},this.paths=new _Lo,this.stats=new Map}async update(t,r){let n=this.getStats(t),i=await this.poll(t,r);if(this.updateStats(t,i),!n&&i){if(i.isFile())return this.updateIno(t,Uc.ADD,i),[Uc.ADD];if(i.isDirectory())return this.updateIno(t,Uc.ADD_DIR,i),[Uc.ADD_DIR]}else if(n&&!i){if(n.isFile())return this.updateIno(t,Uc.UNLINK,n),[Uc.UNLINK];if(n.isDirectory())return this.updateIno(t,Uc.UNLINK_DIR,n),[Uc.UNLINK_DIR]}else if(n&&i){if(n.isFile()){if(i.isFile())return n.ino===i.ino&&!n.size&&!i.size?[]:(this.updateIno(t,Uc.CHANGE,i),[Uc.CHANGE]);if(i.isDirectory())return this.updateIno(t,Uc.UNLINK,n),this.updateIno(t,Uc.ADD_DIR,i),[Uc.UNLINK,Uc.ADD_DIR]}else if(n.isDirectory()){if(i.isFile())return this.updateIno(t,Uc.UNLINK_DIR,n),this.updateIno(t,Uc.ADD,i),[Uc.UNLINK_DIR,Uc.ADD];if(i.isDirectory())return n.ino===i.ino?[]:(this.updateIno(t,Uc.UNLINK_DIR,n),this.updateIno(t,Uc.ADD_DIR,i),[Uc.UNLINK_DIR,Uc.ADD_DIR])}}return[]}updateIno(t,r,n){let i=this.inos[r]=this.inos[r]||(this.inos[r]={}),o=n.isFile()?Nne.FILE:Nne.DIR;i[t]=[n.ino,o]}updateStats(t,r){if(r)this.paths.set(r.ino,t),this.stats.set(t,r);else{let n=this.stats.get(t)?.ino||-1;this.paths.delete(n,t),this.stats.delete(t)}}},OLo=BLo;var PLo=class e extends Aou.EventEmitter{constructor(t,r,n){super(),this._closed=!1,this._ready=!1,this._closeAborter=new AbortController,this._closeSignal=this._closeAborter.signal,this.on(m2.CLOSE,()=>this._closeAborter.abort()),this._closeWait=new Promise(i=>this.on(m2.CLOSE,i)),this._readyWait=new Promise(i=>this.on(m2.READY,i)),this._locker=new hou(this),this._roots=new Set,this._poller=new OLo,this._pollers=new Set,this._subwatchers=new Set,this._watchers={},this._watchersLock=Promise.resolve(),this._watchersRestorable={},this.watch(t,r,n)}isClosed(){return this._closed}isIgnored(t,r){return!!r&&(fp.lang.isFunction(r)?!!r(t):r.test(t))}isReady(){return this._ready}close(){return this._locker.reset(),this._poller.reset(),this._roots.clear(),this.watchersClose(),this.isClosed()?!1:(this._closed=!0,this.emit(m2.CLOSE))}error(t){if(this.isClosed())return!1;let r=fp.lang.castError(t);return this.emit(m2.ERROR,r)}event(t,r,n){return this.isClosed()?!1:(this.emit(m2.ALL,t,r,n),this.emit(t,r,n))}ready(){return this.isClosed()||this.isReady()?!1:(this._ready=!0,this.emit(m2.READY))}pollerExists(t,r){for(let n of this._pollers)if(n.targetPath===t&&fp.lang.isShallowEqual(n.options,r))return!0;return!1}subwatcherExists(t,r){for(let n of this._subwatchers)if(n.targetPath===t&&fp.lang.isShallowEqual(n.options,r))return!0;return!1}watchersClose(t,r,n=!0){if(t){let i=this._watchers[t];if(i)for(let o of[...i])r&&o.filePath!==r||this.watcherClose(o);if(n)for(let o in this._watchers)fp.fs.isSubPath(t,o)&&this.watchersClose(o,r,!1)}else for(let i in this._watchers)this.watchersClose(i,r,!1)}watchersLock(t){return this._watchersLock.then(()=>this._watchersLock=new Promise(async r=>{await t(),r()}))}watchersRestore(){delete this._watchersRestoreTimeout;let t=Object.entries(this._watchersRestorable);this._watchersRestorable={};for(let[r,n]of t)this.watchPath(r,n.options,n.handler)}async watcherAdd(t,r){let{folderPath:n}=t;(this._watchers[n]=this._watchers[n]||[]).push(t);let o=new mou(this,t,r);return await o.init(),o}watcherClose(t){t.watcher.close();let r=this._watchers[t.folderPath];if(r){let o=r.indexOf(t);r.splice(o,1),r.length||delete this._watchers[t.folderPath]}let n=t.filePath||t.folderPath;this._roots.has(n)&&(this._watchersRestorable[n]=t,this._watchersRestoreTimeout||(this._watchersRestoreTimeout=fp.lang.defer(()=>this.watchersRestore())))}watcherExists(t,r,n,i){if(this._watchers[t]?.find(a=>a.handler===n&&(!a.filePath||a.filePath===i)&&a.options.ignore===r.ignore&&!!a.options.native==!!r.native&&(!r.recursive||a.options.recursive)))return!0;let s=Y4e.default.dirname(t);for(let a=1;a<1/0;a++){if(this._watchers[s]?.find(l=>(a===1||l.options.recursive&&a<=(l.options.depth??QBe))&&l.handler===n&&(!l.filePath||l.filePath===i)&&l.options.ignore===r.ignore&&!!l.options.native==!!r.native&&(!r.recursive||l.options.recursive&&MBe&&l.options.native!==!1)))return!0;if(!MBe)break;let u=Y4e.default.dirname(t);if(s===u)break;s=u}return!1}async watchDirectories(t,r,n,i,o){if(this.isClosed())return;t=fp.lang.uniq(t).sort();let s;for(let a of t)if(!this.isIgnored(a,r.ignore)&&!this.watcherExists(a,r,n,i))try{let c=!r.recursive||MBe&&r.native!==!1?r:{...r,recursive:!1},l={watcher:jYn.default.watch(a,c),handler:n,options:r,folderPath:a,filePath:i},p=s=await this.watcherAdd(l,o);if(this._roots.has(i||a)){let f={...r,ignoreInitial:!0,recursive:!1},m=Y4e.default.dirname(a),h=a;await this.watchDirectories([m],f,n,h,p)}}catch(c){this.error(c)}return s}async watchDirectory(t,r,n,i,o){if(!this.isClosed()&&!this.isIgnored(t,r.ignore)){if(!r.recursive||MBe&&r.native!==!1)return this.watchersLock(()=>this.watchDirectories([t],r,n,i,o));{r={...r,recursive:!0};let s=r.depth??QBe,a=r.limit??V8t,[c]=await fp.fs.readdir(t,r.ignore,s,a,this._closeSignal,r.readdirMap);return this.watchersLock(async()=>{let u=await this.watchDirectories([t],r,n,i,o);if(c.length){let l=fp.fs.getDepth(t);for(let p of c){let d=fp.fs.getDepth(p),f=Math.max(0,s-(d-l)),m={...r,depth:f};await this.watchDirectories([p],m,n,i,o||u)}}})}}}async watchFileOnce(t,r,n){if(this.isClosed()||(r={...r,ignoreInitial:!1},this.subwatcherExists(t,r)))return;let i={targetPath:t,options:r},o=(u,l)=>{l===t&&(c(),n())},s=new e(o),a=()=>{this._subwatchers.add(i),this.on(m2.CLOSE,c),s.watchFile(t,r,o)},c=()=>{this._subwatchers.delete(i),this.removeListener(m2.CLOSE,c),s.close()};return a()}async watchFile(t,r,n){if(this.isClosed()||this.isIgnored(t,r.ignore))return;r={...r,recursive:!1};let i=Y4e.default.dirname(t);return this.watchDirectory(i,r,n,t)}async watchPollingOnce(t,r,n){if(this.isClosed())return;let i=!1,o=new OLo,s=await this.watchPolling(t,r,async()=>{i||!(await o.update(t,r.pollingTimeout)).length||i||(i=!0,s(),n())})}async watchPolling(t,r,n){if(this.isClosed())return fp.lang.noop;if(this.pollerExists(t,r))return fp.lang.noop;let i={...r,interval:r.pollingInterval??rou},o={targetPath:t,options:r},s=()=>{this._pollers.add(o),this.on(m2.CLOSE,a),jYn.default.watchFile(t,i,n)},a=()=>{this._pollers.delete(o),this.removeListener(m2.CLOSE,a),jYn.default.unwatchFile(t,n)};return fp.lang.attempt(s),()=>fp.lang.attempt(a)}async watchUnknownChild(t,r,n){if(this.isClosed())return;let i=()=>this.watchPath(t,r,n);return this.watchFileOnce(t,r,i)}async watchUnknownTarget(t,r,n){if(this.isClosed())return;let i=()=>this.watchPath(t,r,n);return this.watchPollingOnce(t,r,i)}async watchPaths(t,r,n){if(this.isClosed())return;if(t=fp.lang.uniq(t).sort(),t.every((o,s)=>t.every((a,c)=>c===s||!fp.fs.isSubPath(o,a))))await Promise.all(t.map(o=>this.watchPath(o,r,n)));else for(let o of t)await this.watchPath(o,r,n)}async watchPath(t,r,n){if(this.isClosed()||(t=Y4e.default.resolve(t),this.isIgnored(t,r.ignore)))return;let i=await fp.fs.poll(t,r.pollingTimeout);if(i){if(i.isFile())return this.watchFile(t,r,n);if(i.isDirectory())return this.watchDirectory(t,r,n);this.error(`"${t}" is not supported`)}else{let o=Y4e.default.dirname(t);return(await fp.fs.poll(o,r.pollingTimeout))?.isDirectory()?this.watchUnknownChild(t,r,n):this.watchUnknownTarget(t,r,n)}}async watch(t,r,n=fp.lang.noop){if(fp.lang.isFunction(t))return this.watch([],{},t);if(fp.lang.isUndefined(t))return this.watch([],r,n);if(fp.lang.isFunction(r))return this.watch(t,{},r);if(fp.lang.isUndefined(r))return this.watch(t,{},n);if(this.isClosed())return;this.isReady()&&(r.readdirMap=void 0);let i=fp.lang.castArray(t);i.forEach(o=>this._roots.add(o)),await this.watchPaths(i,r,n),!this.isClosed()&&(n!==fp.lang.noop&&this.on(m2.ALL,n),r.readdirMap=void 0,this.ready())}},QYn=PLo;ZYn();er();var cq=require("fs/promises"),vsu=require("os"),e4o=we(require("path"),1),OSm=".fern",PSm="logs",ZLo=100*1024*1024;function DSm(){return"cli@5.5.0"}var n3e=class{logFilePath=null;initialized=!1;sessionStartTime;consoleLogger;constructor(){this.sessionStartTime=Date.now()}async initialize(t){if(this.initialized)return;this.consoleLogger=t;let r=Ze(Jt.of((0,vsu.homedir)()),Re.of(OSm)),n=Ze(r,Re.of(PSm));await lr(n)||await(0,cq.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=Ze(n,Re.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${e4o.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
3248
+ `)}if(s)throw new j({code:j.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${_n.warning} ${xe.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(xe.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${_n.success} ${xe.green("All checks passed")}`)}buildJsonResponse({result:t,hasErrors:r}){let n={};return t.violations.length>0&&(n.docs=t.violations.map(i=>RZ(i))),{success:!r,results:n}}};function YMo(e){let t=new JMo;_o(e,"check","Validate docs configuration",(r,n)=>t.handle(r,n),r=>r.option("strict",{type:"boolean",description:"Treat warnings as errors",default:!1}).option("json",{type:"boolean",description:"Output results as JSON to stdout",default:!1}))}var deu=we(require("net"),1),meu=we(require("os"),1),WJn=class extends Error{constructor(t){super(`${t} is locked`)}},Ryt={old:new Set,young:new Set},kym=1e3*15,heu=new Set;var A8t,Nym=()=>{let e=meu.default.networkInterfaces(),t=new Set([void 0,"0.0.0.0"]);for(let r of Object.values(e))for(let n of r)t.add(n.address);return t},peu=e=>new Promise((t,r)=>{let n=deu.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),feu=async(e,t)=>{if(e.host||e.port===0)return peu(e);for(let r of t)try{await peu({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},jym=e=>Ryt.old.has(e)||Ryt.young.has(e)||heu.has(e),Qym=function*(e){e&&(yield*e),yield 0};async function PBe(e){let t,r=new Set;if(e&&(e.port&&(t=typeof e.port=="number"?[e.port]:e.port),e.exclude)){let s=e.exclude;if(typeof s[Symbol.iterator]!="function")throw new TypeError("The `exclude` option must be an iterable.");for(let a of s){if(typeof a!="number")throw new TypeError("Each item in the `exclude` option must be a number corresponding to the port you want excluded.");if(!Number.isSafeInteger(a))throw new TypeError(`Number ${a} in the exclude option is not a safe integer and can't be used`)}r=new Set(s)}let{reserve:n,...i}=e??{};A8t===void 0&&(A8t=setTimeout(()=>{A8t=void 0,Ryt.old=Ryt.young,Ryt.young=new Set},kym),A8t.unref&&A8t.unref());let o=Nym();for(let s of Qym(t))try{if(r.has(s))continue;let a=await feu({...i,port:s},o);for(;jym(a);){if(s!==0)throw new WJn(s);a=await feu({...i,port:s},o)}return n?heu.add(a):Ryt.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof WJn))throw a}throw new Error("No available ports found")}var yeu=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,geu="docs.buildwithfern.com",Aeu=62;function z4e(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)),yeu.test(t)}function beu(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function y8t({orgId:e,previewId:t}){let r=beu(t),n=`${e}-preview-${r}.${geu}`;if(n.length<=Aeu)return n;let i=`${e}-preview-`,o=Aeu-i.length;if(o<8)throw new j({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:j.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${geu}`}Lt();tg();er();Uw();var j3o=require("child_process"),Qfu=we(e6o(),1),Q3o=we(DYn(),1),M3o=we(require("fs"),1),Sqt=require("fs/promises"),Mfu=we(require("http"),1),U3o=we(require("path"),1);var Aou=require("events"),jYn=we(require("fs"),1),Y4e=we(require("path"),1);var Ziu=we(require("os"),1),eou=300,QBe=20,V8t=1e7,tou=Ziu.default.platform();var Zxm=tou==="darwin",bLo=tou==="win32",MBe=Zxm||bLo,rou=3e3,nou=2e4,ELo=1250;var Nne;(function(e){e[e.DIR=1]="DIR",e[e.FILE=2]="FILE"})(Nne||(Nne={}));var J4e;(function(e){e.CHANGE="change",e.RENAME="rename"})(J4e||(J4e={}));var q8t;(function(e){e.CHANGE="change",e.ERROR="error"})(q8t||(q8t={}));var Uc;(function(e){e.ADD="add",e.ADD_DIR="addDir",e.CHANGE="change",e.RENAME="rename",e.RENAME_DIR="renameDir",e.UNLINK="unlink",e.UNLINK_DIR="unlinkDir"})(Uc||(Uc={}));var m2;(function(e){e.ALL="all",e.CLOSE="close",e.ERROR="error",e.READY="ready"})(m2||(m2={}));var ewm=(e,t=1,r)=>{t=Math.max(1,t);let n=r?.leading??!1,i=r?.trailing??!0,o=Math.max(r?.maxWait??1/0,t),s,a,c=0,u=0,l=()=>{let C=Date.now(),w=C-c,T=C-u,B=w>=t||T>=o;return[C,B]},p=C=>{if(u=C,!s)return;let w=s;s=void 0,e.apply(void 0,w)},d=()=>{v(0)},f=()=>{a&&(d(),p(Date.now()))},m=C=>{if(u=C,n)return p(C)},h=C=>{if(i&&s)return p(C);s=void 0},A=()=>{a=void 0;let[C,w]=l();return w?h(C):b(C)},b=C=>{let w=C-c,T=C-u,B=t-w,R=o-T,O=Math.min(B,R);return v(O)},v=C=>{a&&clearTimeout(a),!(C<=0)&&(a=setTimeout(A,C))},x=(...C)=>{let[w,T]=l(),B=!!a;if(s=C,c=w,(T||!a)&&v(t),T)return B?p(w):m(w)};return x.cancel=d,x.flush=f,x},RYn=ewm;var xLo=we(require("fs"),1),kYn=we(require("path"),1);var jd=we(require("fs"),1),VB=require("util");var cde=(e,t)=>function(...n){return e.apply(void 0,n).catch(t)},jne=(e,t)=>function(...n){try{return e.apply(void 0,n)}catch(i){return t(i)}};var ILo=we(require("process"),1),iou=ILo.default.getuid?!ILo.default.getuid():!1,oou=1e4,sM=()=>{};var G8t={isChangeErrorOk:e=>{if(!G8t.isNodeError(e))return!1;let{code:t}=e;return t==="ENOSYS"||!iou&&(t==="EINVAL"||t==="EPERM")},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!G8t.isNodeError(e))return!1;let{code:t}=e;return t==="EMFILE"||t==="ENFILE"||t==="EAGAIN"||t==="EBUSY"||t==="EACCESS"||t==="EACCES"||t==="EACCS"||t==="EPERM"},onChangeError:e=>{if(!G8t.isNodeError(e))throw e;if(!G8t.isChangeErrorOk(e))throw e}},AC=G8t;var vLo=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=oou,this.queueActive=new Set,this.queueWaiting=new Set,this.init=()=>{this.intervalId||(this.intervalId=setInterval(this.tick,this.interval))},this.reset=()=>{this.intervalId&&(clearInterval(this.intervalId),delete this.intervalId)},this.add=t=>{this.queueWaiting.add(t),this.queueActive.size<this.limit/2?this.tick():this.init()},this.remove=t=>{this.queueWaiting.delete(t),this.queueActive.delete(t)},this.schedule=()=>new Promise(t=>{let r=()=>this.remove(n),n=()=>t(r);this.add(n)}),this.tick=()=>{if(!(this.queueActive.size>=this.limit)){if(!this.queueWaiting.size)return this.reset();for(let t of this.queueWaiting){if(this.queueActive.size>=this.limit)break;this.queueWaiting.delete(t),this.queueActive.add(t),t()}}}}},sou=new vLo;var ude=(e,t)=>function(n){return function i(...o){return sou.schedule().then(s=>{let a=u=>(s(),u),c=u=>{if(s(),Date.now()>=n)throw u;if(t(u)){let l=Math.round(100*Math.random());return new Promise(d=>setTimeout(d,l)).then(()=>i.apply(void 0,o))}throw u};return e.apply(void 0,o).then(a,c)})}},lde=(e,t)=>function(n){return function i(...o){try{return e.apply(void 0,o)}catch(s){if(Date.now()>n)throw s;if(t(s))return i.apply(void 0,o);throw s}}};var twm={attempt:{chmod:cde((0,VB.promisify)(jd.default.chmod),AC.onChangeError),chown:cde((0,VB.promisify)(jd.default.chown),AC.onChangeError),close:cde((0,VB.promisify)(jd.default.close),sM),fsync:cde((0,VB.promisify)(jd.default.fsync),sM),mkdir:cde((0,VB.promisify)(jd.default.mkdir),sM),realpath:cde((0,VB.promisify)(jd.default.realpath),sM),stat:cde((0,VB.promisify)(jd.default.stat),sM),unlink:cde((0,VB.promisify)(jd.default.unlink),sM),chmodSync:jne(jd.default.chmodSync,AC.onChangeError),chownSync:jne(jd.default.chownSync,AC.onChangeError),closeSync:jne(jd.default.closeSync,sM),existsSync:jne(jd.default.existsSync,sM),fsyncSync:jne(jd.default.fsync,sM),mkdirSync:jne(jd.default.mkdirSync,sM),realpathSync:jne(jd.default.realpathSync,sM),statSync:jne(jd.default.statSync,sM),unlinkSync:jne(jd.default.unlinkSync,sM)},retry:{close:ude((0,VB.promisify)(jd.default.close),AC.isRetriableError),fsync:ude((0,VB.promisify)(jd.default.fsync),AC.isRetriableError),open:ude((0,VB.promisify)(jd.default.open),AC.isRetriableError),readFile:ude((0,VB.promisify)(jd.default.readFile),AC.isRetriableError),rename:ude((0,VB.promisify)(jd.default.rename),AC.isRetriableError),stat:ude((0,VB.promisify)(jd.default.stat),AC.isRetriableError),write:ude((0,VB.promisify)(jd.default.write),AC.isRetriableError),writeFile:ude((0,VB.promisify)(jd.default.writeFile),AC.isRetriableError),closeSync:lde(jd.default.closeSync,AC.isRetriableError),fsyncSync:lde(jd.default.fsyncSync,AC.isRetriableError),openSync:lde(jd.default.openSync,AC.isRetriableError),readFileSync:lde(jd.default.readFileSync,AC.isRetriableError),renameSync:lde(jd.default.renameSync,AC.isRetriableError),statSync:lde(jd.default.statSync,AC.isRetriableError),writeSync:lde(jd.default.writeSync,AC.isRetriableError),writeFileSync:lde(jd.default.writeFileSync,AC.isRetriableError)}},aou=twm;var FYn=we(require("fs"),1),W8t=we(require("path"),1);var CLo=()=>{};var rwm=()=>{let e=CLo,t=CLo,r=!1,n=!1;return{promise:new Promise((c,u)=>{e=l=>(r=!0,c(l)),t=l=>(n=!0,u(l))}),resolve:e,reject:t,isPending:()=>!r&&!n,isResolved:()=>r,isRejected:()=>n}},cou=rwm;var nwm=()=>{let{promise:e,resolve:t,isPending:r}=cou(),n=0,i=()=>{n+=1},o=()=>{n-=1,!n&&t()};return i(),queueMicrotask(o),{promise:e,isPending:r,increment:i,decrement:o}},uou=nwm;var lou={then:e=>{e()}};var pou=e=>Array.isArray(e)?e:[e],fou=e=>typeof e=="function";var iwm=(e,t)=>{let r=t?.followSymlinks??!1,n=t?.depth??1/0,i=t?.limit??1/0,o=t?.ignore??[],s=pou(o).map(ie=>fou(ie)?ie:oe=>ie.test(oe)),a=ie=>s.some(oe=>oe(ie)),c=t?.signal??{aborted:!1},u=t?.onDirents||(()=>{}),l=[],p=new Set,d={},f=[],m=new Set,h={},A=[],b=new Set,v={},x={},C=new Set,w={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{},map:{}},T={directories:l,directoriesNames:p,directoriesNamesToPaths:d,files:f,filesNames:m,filesNamesToPaths:h,symlinks:A,symlinksNames:b,symlinksNamesToPaths:v,map:x},{promise:B,increment:R,decrement:O}=uou(),z=0,J=(ie,oe,Ie,Ce)=>{C.has(oe)||z>=i||(z+=1,ie.directories.push(oe),ie.directoriesNames.add(Ie),l.push(oe),p.add(Ie),d.propertyIsEnumerable(Ie)||(d[Ie]=[]),d[Ie].push(oe),C.add(oe),!(Ce>=n)&&(z>=i||he(oe,Ce+1)))},X=(ie,oe,Ie)=>{C.has(oe)||z>=i||(z+=1,ie.files.push(oe),ie.filesNames.add(Ie),f.push(oe),m.add(Ie),h.propertyIsEnumerable(Ie)||(h[Ie]=[]),h[Ie].push(oe),C.add(oe))},Z=(ie,oe,Ie,Ce)=>{C.has(oe)||z>=i||(z+=1,ie.symlinks.push(oe),ie.symlinksNames.add(Ie),A.push(oe),b.add(Ie),v.propertyIsEnumerable(Ie)||(v[Ie]=[]),v[Ie].push(oe),C.add(oe),r&&(Ce>=n||z>=i||Fe(oe,Ce+1)))},me=(ie,oe,Ie,Ce,ke)=>{c.aborted||a(oe)||(Ce.isDirectory()?J(ie,oe,Ie,ke):Ce.isFile()?X(ie,oe,Ie):Ce.isSymbolicLink()&&Z(ie,oe,Ie,ke))},ge=(ie,oe,Ie,Ce)=>{if(c.aborted)return;let ke=oe===W8t.default.sep?"":W8t.default.sep,Ve=Ie.name,ct=`${oe}${ke}${Ve}`;a(ct)||(Ie.isDirectory()?J(ie,ct,Ve,Ce):Ie.isFile()?X(ie,ct,Ve):Ie.isSymbolicLink()&&Z(ie,ct,Ve,Ce))},ce=(ie,oe,Ie,Ce)=>{for(let ke=0,Ve=Ie.length;ke<Ve;ke++)ge(ie,oe,Ie[ke],Ce)},he=(ie,oe)=>{c.aborted||oe>n||z>=i||(R(),FYn.default.readdir(ie,{withFileTypes:!0},(Ie,Ce)=>{if(Ie||c.aborted||!Ce.length)return O();(u(Ce)||lou).then(()=>{let Ve=x[ie]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};ce(Ve,ie,Ce,oe),O()})}))},Fe=(ie,oe)=>{R(),FYn.default.realpath(ie,(Ie,Ce)=>{if(Ie||c.aborted)return O();FYn.default.stat(Ce,(ke,Ve)=>{if(ke||c.aborted)return O();let ct=W8t.default.basename(Ce),At=x[ie]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};me(At,Ce,ct,Ve,oe),O()})})};return(async(ie,oe=1)=>(ie=W8t.default.normalize(ie),C.add(ie),he(ie,oe),await B,c.aborted?w:T))(e)},dou=iwm;var Qne={lang:{debounce:RYn,attempt:e=>{try{return e()}catch(t){return Qne.lang.castError(t)}},castArray:e=>Qne.lang.isArray(e)?e:[e],castError:e=>Qne.lang.isError(e)?e:Qne.lang.isString(e)?new Error(e):new Error("Unknown error"),defer:e=>setTimeout(e,0),isArray:e=>Array.isArray(e),isError:e=>e instanceof Error,isFunction:e=>typeof e=="function",isNaN:e=>Number.isNaN(e),isNumber:e=>typeof e=="number",isPrimitive:e=>{if(e===null)return!0;let t=typeof e;return t!=="object"&&t!=="function"},isShallowEqual:(e,t)=>{if(e===t)return!0;if(Qne.lang.isNaN(e))return Qne.lang.isNaN(t);if(Qne.lang.isPrimitive(e)||Qne.lang.isPrimitive(t))return e===t;for(let r in e)if(!(r in t))return!1;for(let r in t)if(e[r]!==t[r])return!1;return!0},isSet:e=>e instanceof Set,isString:e=>typeof e=="string",isUndefined:e=>e===void 0,noop:()=>{},uniq:e=>e.length<2?e:Array.from(new Set(e))},fs:{getDepth:e=>Math.max(0,e.split(kYn.default.sep).length-1),getRealPath:(e,t)=>{try{return t?xLo.default.realpathSync.native(e):xLo.default.realpathSync(e)}catch{return}},isSubPath:(e,t)=>t.startsWith(e)&&t[e.length]===kYn.default.sep&&t.length-e.length>kYn.default.sep.length,poll:(e,t=nou)=>aou.retry.stat(t)(e,{bigint:!0}).catch(Qne.lang.noop),readdir:async(e,t,r=1/0,n=1/0,i,o)=>{if(o&&r===1&&e in o){let s=o[e];return[s.directories,s.files]}else{let s=await dou(e,{depth:r,limit:n,ignore:t,signal:i});return[s.directories,s.files]}}}},fp=Qne;var NYn=we(require("path"),1);var wLo=class{constructor(t,r,n){this.base=n,this.watcher=t,this.handler=r.handler,this.fswatcher=r.watcher,this.options=r.options,this.folderPath=r.folderPath,this.filePath=r.filePath,this.handlerBatched=this.base?this.base.onWatcherEvent.bind(this.base):this._makeHandlerBatched(this.options.debounce)}_isSubRoot(t){return this.filePath?t===this.filePath:t===this.folderPath||fp.fs.isSubPath(this.folderPath,t)}_makeHandlerBatched(t=eou){return(()=>{let r=this.watcher._readyWait,n=[],i=new Set,o=async(a,c)=>{let u=this.options.ignoreInitial?[]:a,l=await this.eventsPopulate([...c]),p=this.eventsDeduplicate([...u,...l]);this.onTargetEvents(p)},s=fp.lang.debounce(()=>{this.watcher.isClosed()||(r=o(n,i),n=[],i=new Set)},t);return async(a,c="",u=!1)=>{u?await this.eventsPopulate([c],n,!0):i.add(c),r.then(s)}})()}eventsDeduplicate(t){if(t.length<2)return t;let r={};return t.reduce((n,i)=>{let[o,s]=i,a=r[s];return o===a||o===Uc.CHANGE&&a===Uc.ADD||(r[s]=o,n.push(i)),n},[])}async eventsPopulate(t,r=[],n=!1){return await Promise.all(t.map(async i=>{let o=await this.watcher._poller.update(i,this.options.pollingTimeout);await Promise.all(o.map(async s=>{r.push([s,i]),s===Uc.ADD_DIR?await this.eventsPopulateAddDir(t,i,r,n):s===Uc.UNLINK_DIR&&await this.eventsPopulateUnlinkDir(t,i,r,n)}))})),r}async eventsPopulateAddDir(t,r,n=[],i=!1){if(i)return n;let o=this.options.recursive?this.options.depth??QBe:Math.min(1,this.options.depth??QBe),s=this.options.limit??V8t,[a,c]=await fp.fs.readdir(r,this.options.ignore,o,s,this.watcher._closeSignal),u=[...a,...c];return await Promise.all(u.map(l=>{if(!this.watcher.isIgnored(l,this.options.ignore)&&!t.includes(l))return this.eventsPopulate([l],n,!0)})),n}async eventsPopulateUnlinkDir(t,r,n=[],i=!1){if(i)return n;for(let o of this.watcher._poller.stats.keys())fp.fs.isSubPath(r,o)&&(t.includes(o)||await this.eventsPopulate([o],n,!0));return n}onTargetAdd(t){this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAdd(t,this.options.renameTimeout):this.watcher.event(Uc.ADD,t))}onTargetAddDir(t){t!==this.folderPath&&this.options.recursive&&!MBe&&this.options.native!==!1&&this.watcher.watchDirectory(t,this.options,this.handler,void 0,this.base||this),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAddDir(t,this.options.renameTimeout):this.watcher.event(Uc.ADD_DIR,t))}onTargetChange(t){this._isSubRoot(t)&&this.watcher.event(Uc.CHANGE,t)}onTargetUnlink(t){this.watcher.watchersClose(NYn.default.dirname(t),t,!1),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlink(t,this.options.renameTimeout):this.watcher.event(Uc.UNLINK,t))}onTargetUnlinkDir(t){this.watcher.watchersClose(NYn.default.dirname(t),t,!1),this.watcher.watchersClose(t),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlinkDir(t,this.options.renameTimeout):this.watcher.event(Uc.UNLINK_DIR,t))}onTargetEvent(t){let[r,n]=t;r===Uc.ADD?this.onTargetAdd(n):r===Uc.ADD_DIR?this.onTargetAddDir(n):r===Uc.CHANGE?this.onTargetChange(n):r===Uc.UNLINK?this.onTargetUnlink(n):r===Uc.UNLINK_DIR&&this.onTargetUnlinkDir(n)}onTargetEvents(t){for(let r of t)this.onTargetEvent(r)}onWatcherEvent(t,r,n=!1){return this.handlerBatched(t,r,n)}onWatcherChange(t=J4e.CHANGE,r){if(this.watcher.isClosed())return;let n=NYn.default.resolve(this.folderPath,r||"");this.filePath&&n!==this.folderPath&&n!==this.filePath||this.watcher.isIgnored(n,this.options.ignore)||this.onWatcherEvent(t,n)}onWatcherError(t){bLo&&t.code==="EPERM"?this.onWatcherChange(J4e.CHANGE,""):this.watcher.error(t)}async init(){await this.initWatcherEvents(),await this.initInitialEvents()}async initWatcherEvents(){let t=this.onWatcherChange.bind(this);this.fswatcher.on(q8t.CHANGE,t);let r=this.onWatcherError.bind(this);this.fswatcher.on(q8t.ERROR,r)}async initInitialEvents(){let t=!this.watcher.isReady();if(this.filePath){if(this.watcher._poller.stats.has(this.filePath))return;await this.onWatcherEvent(J4e.CHANGE,this.filePath,t)}else{let r=this.options.recursive&&MBe&&this.options.native!==!1?this.options.depth??QBe:Math.min(1,this.options.depth??QBe),n=this.options.limit??V8t,[i,o]=await fp.fs.readdir(this.folderPath,this.options.ignore,r,n,this.watcher._closeSignal,this.options.readdirMap),s=[this.folderPath,...i,...o];await Promise.all(s.map(a=>{if(!this.watcher._poller.stats.has(a)&&!this.watcher.isIgnored(a,this.options.ignore))return this.onWatcherEvent(J4e.CHANGE,a,t)}))}}},mou=wLo;var h2={interval:100,intervalId:void 0,fns:new Map,init:()=>{h2.intervalId||(h2.intervalId=setInterval(h2.resolve,h2.interval))},reset:()=>{h2.intervalId&&(clearInterval(h2.intervalId),delete h2.intervalId)},add:(e,t)=>{h2.fns.set(e,Date.now()+t),h2.init()},remove:e=>{h2.fns.delete(e)},resolve:()=>{if(!h2.fns.size)return h2.reset();let e=Date.now();for(let[t,r]of h2.fns)r>=e||(h2.remove(t),t())}},$8t=h2;var H8t=class e{constructor(t){this._watcher=t,this.reset()}getLockAdd(t,r=ELo){let{ino:n,targetPath:i,events:o,locks:s}=t,a=()=>{let p=this._watcher._poller.paths.find(n||-1,d=>d!==i);if(p&&p!==i){if(fp.fs.getRealPath(i,!0)===p)return;this._watcher.event(o.rename,p,i)}else this._watcher.event(o.add,i)};if(!n)return a();let c=()=>{s.add.delete(n),$8t.remove(u)},u=()=>{c(),a()};$8t.add(u,r);let l=()=>{let p=s.unlink.get(n);if(!p)return;c();let d=p();i===d?o.change&&this._watcher._poller.stats.has(i)&&this._watcher.event(o.change,i):this._watcher.event(o.rename,d,i)};s.add.set(n,l),l()}getLockUnlink(t,r=ELo){let{ino:n,targetPath:i,events:o,locks:s}=t,a=()=>{this._watcher.event(o.unlink,i)};if(!n)return a();let c=()=>{s.unlink.delete(n),$8t.remove(u)},u=()=>{c(),a()};$8t.add(u,r);let l=()=>(c(),i);s.unlink.set(n,l),s.add.get(n)?.()}getLockTargetAdd(t,r){let n=this._watcher._poller.getIno(t,Uc.ADD,Nne.FILE);return this.getLockAdd({ino:n,targetPath:t,events:e.FILE_EVENTS,locks:this._locksFile},r)}getLockTargetAddDir(t,r){let n=this._watcher._poller.getIno(t,Uc.ADD_DIR,Nne.DIR);return this.getLockAdd({ino:n,targetPath:t,events:e.DIR_EVENTS,locks:this._locksDir},r)}getLockTargetUnlink(t,r){let n=this._watcher._poller.getIno(t,Uc.UNLINK,Nne.FILE);return this.getLockUnlink({ino:n,targetPath:t,events:e.FILE_EVENTS,locks:this._locksFile},r)}getLockTargetUnlinkDir(t,r){let n=this._watcher._poller.getIno(t,Uc.UNLINK_DIR,Nne.DIR);return this.getLockUnlink({ino:n,targetPath:t,events:e.DIR_EVENTS,locks:this._locksDir},r)}reset(){this._locksAdd=new Map,this._locksAddDir=new Map,this._locksUnlink=new Map,this._locksUnlinkDir=new Map,this._locksDir={add:this._locksAddDir,unlink:this._locksUnlinkDir},this._locksFile={add:this._locksAdd,unlink:this._locksUnlink}}};H8t.DIR_EVENTS={add:Uc.ADD_DIR,rename:Uc.RENAME_DIR,unlink:Uc.UNLINK_DIR};H8t.FILE_EVENTS={add:Uc.ADD,change:Uc.CHANGE,rename:Uc.RENAME,unlink:Uc.UNLINK};var hou=H8t;var SLo=class{constructor(){this.map=new Map}clear(){this.map.clear()}delete(t,r){if(fp.lang.isUndefined(r))return this.map.delete(t);if(this.map.has(t)){let n=this.map.get(t);if(fp.lang.isSet(n)){let i=n.delete(r);return n.size||this.map.delete(t),i}else if(n===r)return this.map.delete(t),!0}return!1}find(t,r){if(this.map.has(t)){let n=this.map.get(t);if(fp.lang.isSet(n))return Array.from(n).find(r);if(r(n))return n}}get(t){return this.map.get(t)}has(t,r){if(fp.lang.isUndefined(r))return this.map.has(t);if(this.map.has(t)){let n=this.map.get(t);return fp.lang.isSet(n)?n.has(r):n===r}return!1}set(t,r){if(this.map.has(t)){let n=this.map.get(t);fp.lang.isSet(n)?n.add(r):n!==r&&this.map.set(t,new Set([n,r]))}else this.map.set(t,r);return this}},_Lo=SLo;var TLo=class{constructor(t){this.ino=t.ino<=Number.MAX_SAFE_INTEGER?Number(t.ino):t.ino,this.size=Number(t.size),this.atimeMs=Number(t.atimeMs),this.mtimeMs=Number(t.mtimeMs),this.ctimeMs=Number(t.ctimeMs),this.birthtimeMs=Number(t.birthtimeMs),this._isFile=t.isFile(),this._isDirectory=t.isDirectory(),this._isSymbolicLink=t.isSymbolicLink()}isFile(){return this._isFile}isDirectory(){return this._isDirectory}isSymbolicLink(){return this._isSymbolicLink}},gou=TLo;var BLo=class{constructor(){this.inos={},this.paths=new _Lo,this.stats=new Map}getIno(t,r,n){let i=this.inos[r];if(!i)return;let o=i[t];if(o&&!(n&&o[1]!==n))return o[0]}getStats(t){return this.stats.get(t)}async poll(t,r){let n=await fp.fs.poll(t,r);if(!(!n||!(n.isFile()||n.isDirectory())))return new gou(n)}reset(){this.inos={},this.paths=new _Lo,this.stats=new Map}async update(t,r){let n=this.getStats(t),i=await this.poll(t,r);if(this.updateStats(t,i),!n&&i){if(i.isFile())return this.updateIno(t,Uc.ADD,i),[Uc.ADD];if(i.isDirectory())return this.updateIno(t,Uc.ADD_DIR,i),[Uc.ADD_DIR]}else if(n&&!i){if(n.isFile())return this.updateIno(t,Uc.UNLINK,n),[Uc.UNLINK];if(n.isDirectory())return this.updateIno(t,Uc.UNLINK_DIR,n),[Uc.UNLINK_DIR]}else if(n&&i){if(n.isFile()){if(i.isFile())return n.ino===i.ino&&!n.size&&!i.size?[]:(this.updateIno(t,Uc.CHANGE,i),[Uc.CHANGE]);if(i.isDirectory())return this.updateIno(t,Uc.UNLINK,n),this.updateIno(t,Uc.ADD_DIR,i),[Uc.UNLINK,Uc.ADD_DIR]}else if(n.isDirectory()){if(i.isFile())return this.updateIno(t,Uc.UNLINK_DIR,n),this.updateIno(t,Uc.ADD,i),[Uc.UNLINK_DIR,Uc.ADD];if(i.isDirectory())return n.ino===i.ino?[]:(this.updateIno(t,Uc.UNLINK_DIR,n),this.updateIno(t,Uc.ADD_DIR,i),[Uc.UNLINK_DIR,Uc.ADD_DIR])}}return[]}updateIno(t,r,n){let i=this.inos[r]=this.inos[r]||(this.inos[r]={}),o=n.isFile()?Nne.FILE:Nne.DIR;i[t]=[n.ino,o]}updateStats(t,r){if(r)this.paths.set(r.ino,t),this.stats.set(t,r);else{let n=this.stats.get(t)?.ino||-1;this.paths.delete(n,t),this.stats.delete(t)}}},OLo=BLo;var PLo=class e extends Aou.EventEmitter{constructor(t,r,n){super(),this._closed=!1,this._ready=!1,this._closeAborter=new AbortController,this._closeSignal=this._closeAborter.signal,this.on(m2.CLOSE,()=>this._closeAborter.abort()),this._closeWait=new Promise(i=>this.on(m2.CLOSE,i)),this._readyWait=new Promise(i=>this.on(m2.READY,i)),this._locker=new hou(this),this._roots=new Set,this._poller=new OLo,this._pollers=new Set,this._subwatchers=new Set,this._watchers={},this._watchersLock=Promise.resolve(),this._watchersRestorable={},this.watch(t,r,n)}isClosed(){return this._closed}isIgnored(t,r){return!!r&&(fp.lang.isFunction(r)?!!r(t):r.test(t))}isReady(){return this._ready}close(){return this._locker.reset(),this._poller.reset(),this._roots.clear(),this.watchersClose(),this.isClosed()?!1:(this._closed=!0,this.emit(m2.CLOSE))}error(t){if(this.isClosed())return!1;let r=fp.lang.castError(t);return this.emit(m2.ERROR,r)}event(t,r,n){return this.isClosed()?!1:(this.emit(m2.ALL,t,r,n),this.emit(t,r,n))}ready(){return this.isClosed()||this.isReady()?!1:(this._ready=!0,this.emit(m2.READY))}pollerExists(t,r){for(let n of this._pollers)if(n.targetPath===t&&fp.lang.isShallowEqual(n.options,r))return!0;return!1}subwatcherExists(t,r){for(let n of this._subwatchers)if(n.targetPath===t&&fp.lang.isShallowEqual(n.options,r))return!0;return!1}watchersClose(t,r,n=!0){if(t){let i=this._watchers[t];if(i)for(let o of[...i])r&&o.filePath!==r||this.watcherClose(o);if(n)for(let o in this._watchers)fp.fs.isSubPath(t,o)&&this.watchersClose(o,r,!1)}else for(let i in this._watchers)this.watchersClose(i,r,!1)}watchersLock(t){return this._watchersLock.then(()=>this._watchersLock=new Promise(async r=>{await t(),r()}))}watchersRestore(){delete this._watchersRestoreTimeout;let t=Object.entries(this._watchersRestorable);this._watchersRestorable={};for(let[r,n]of t)this.watchPath(r,n.options,n.handler)}async watcherAdd(t,r){let{folderPath:n}=t;(this._watchers[n]=this._watchers[n]||[]).push(t);let o=new mou(this,t,r);return await o.init(),o}watcherClose(t){t.watcher.close();let r=this._watchers[t.folderPath];if(r){let o=r.indexOf(t);r.splice(o,1),r.length||delete this._watchers[t.folderPath]}let n=t.filePath||t.folderPath;this._roots.has(n)&&(this._watchersRestorable[n]=t,this._watchersRestoreTimeout||(this._watchersRestoreTimeout=fp.lang.defer(()=>this.watchersRestore())))}watcherExists(t,r,n,i){if(this._watchers[t]?.find(a=>a.handler===n&&(!a.filePath||a.filePath===i)&&a.options.ignore===r.ignore&&!!a.options.native==!!r.native&&(!r.recursive||a.options.recursive)))return!0;let s=Y4e.default.dirname(t);for(let a=1;a<1/0;a++){if(this._watchers[s]?.find(l=>(a===1||l.options.recursive&&a<=(l.options.depth??QBe))&&l.handler===n&&(!l.filePath||l.filePath===i)&&l.options.ignore===r.ignore&&!!l.options.native==!!r.native&&(!r.recursive||l.options.recursive&&MBe&&l.options.native!==!1)))return!0;if(!MBe)break;let u=Y4e.default.dirname(t);if(s===u)break;s=u}return!1}async watchDirectories(t,r,n,i,o){if(this.isClosed())return;t=fp.lang.uniq(t).sort();let s;for(let a of t)if(!this.isIgnored(a,r.ignore)&&!this.watcherExists(a,r,n,i))try{let c=!r.recursive||MBe&&r.native!==!1?r:{...r,recursive:!1},l={watcher:jYn.default.watch(a,c),handler:n,options:r,folderPath:a,filePath:i},p=s=await this.watcherAdd(l,o);if(this._roots.has(i||a)){let f={...r,ignoreInitial:!0,recursive:!1},m=Y4e.default.dirname(a),h=a;await this.watchDirectories([m],f,n,h,p)}}catch(c){this.error(c)}return s}async watchDirectory(t,r,n,i,o){if(!this.isClosed()&&!this.isIgnored(t,r.ignore)){if(!r.recursive||MBe&&r.native!==!1)return this.watchersLock(()=>this.watchDirectories([t],r,n,i,o));{r={...r,recursive:!0};let s=r.depth??QBe,a=r.limit??V8t,[c]=await fp.fs.readdir(t,r.ignore,s,a,this._closeSignal,r.readdirMap);return this.watchersLock(async()=>{let u=await this.watchDirectories([t],r,n,i,o);if(c.length){let l=fp.fs.getDepth(t);for(let p of c){let d=fp.fs.getDepth(p),f=Math.max(0,s-(d-l)),m={...r,depth:f};await this.watchDirectories([p],m,n,i,o||u)}}})}}}async watchFileOnce(t,r,n){if(this.isClosed()||(r={...r,ignoreInitial:!1},this.subwatcherExists(t,r)))return;let i={targetPath:t,options:r},o=(u,l)=>{l===t&&(c(),n())},s=new e(o),a=()=>{this._subwatchers.add(i),this.on(m2.CLOSE,c),s.watchFile(t,r,o)},c=()=>{this._subwatchers.delete(i),this.removeListener(m2.CLOSE,c),s.close()};return a()}async watchFile(t,r,n){if(this.isClosed()||this.isIgnored(t,r.ignore))return;r={...r,recursive:!1};let i=Y4e.default.dirname(t);return this.watchDirectory(i,r,n,t)}async watchPollingOnce(t,r,n){if(this.isClosed())return;let i=!1,o=new OLo,s=await this.watchPolling(t,r,async()=>{i||!(await o.update(t,r.pollingTimeout)).length||i||(i=!0,s(),n())})}async watchPolling(t,r,n){if(this.isClosed())return fp.lang.noop;if(this.pollerExists(t,r))return fp.lang.noop;let i={...r,interval:r.pollingInterval??rou},o={targetPath:t,options:r},s=()=>{this._pollers.add(o),this.on(m2.CLOSE,a),jYn.default.watchFile(t,i,n)},a=()=>{this._pollers.delete(o),this.removeListener(m2.CLOSE,a),jYn.default.unwatchFile(t,n)};return fp.lang.attempt(s),()=>fp.lang.attempt(a)}async watchUnknownChild(t,r,n){if(this.isClosed())return;let i=()=>this.watchPath(t,r,n);return this.watchFileOnce(t,r,i)}async watchUnknownTarget(t,r,n){if(this.isClosed())return;let i=()=>this.watchPath(t,r,n);return this.watchPollingOnce(t,r,i)}async watchPaths(t,r,n){if(this.isClosed())return;if(t=fp.lang.uniq(t).sort(),t.every((o,s)=>t.every((a,c)=>c===s||!fp.fs.isSubPath(o,a))))await Promise.all(t.map(o=>this.watchPath(o,r,n)));else for(let o of t)await this.watchPath(o,r,n)}async watchPath(t,r,n){if(this.isClosed()||(t=Y4e.default.resolve(t),this.isIgnored(t,r.ignore)))return;let i=await fp.fs.poll(t,r.pollingTimeout);if(i){if(i.isFile())return this.watchFile(t,r,n);if(i.isDirectory())return this.watchDirectory(t,r,n);this.error(`"${t}" is not supported`)}else{let o=Y4e.default.dirname(t);return(await fp.fs.poll(o,r.pollingTimeout))?.isDirectory()?this.watchUnknownChild(t,r,n):this.watchUnknownTarget(t,r,n)}}async watch(t,r,n=fp.lang.noop){if(fp.lang.isFunction(t))return this.watch([],{},t);if(fp.lang.isUndefined(t))return this.watch([],r,n);if(fp.lang.isFunction(r))return this.watch(t,{},r);if(fp.lang.isUndefined(r))return this.watch(t,{},n);if(this.isClosed())return;this.isReady()&&(r.readdirMap=void 0);let i=fp.lang.castArray(t);i.forEach(o=>this._roots.add(o)),await this.watchPaths(i,r,n),!this.isClosed()&&(n!==fp.lang.noop&&this.on(m2.ALL,n),r.readdirMap=void 0,this.ready())}},QYn=PLo;ZYn();er();var cq=require("fs/promises"),vsu=require("os"),e4o=we(require("path"),1),OSm=".fern",PSm="logs",ZLo=100*1024*1024;function DSm(){return"cli@5.5.1"}var n3e=class{logFilePath=null;initialized=!1;sessionStartTime;consoleLogger;constructor(){this.sessionStartTime=Date.now()}async initialize(t){if(this.initialized)return;this.consoleLogger=t;let r=Ze(Jt.of((0,vsu.homedir)()),Re.of(OSm)),n=Ze(r,Re.of(PSm));await lr(n)||await(0,cq.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=Ze(n,Re.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${e4o.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
3249
3249
  `);await(0,cq.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)+`
3250
3250
  `;try{await(0,cq.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:DSm(),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,cq.readdir)(t)).filter(c=>c.endsWith(".log")),i=[];for(let c of n){let u=e4o.default.join(t,c);try{let l=await(0,cq.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=ZLo/1024/1024;if(o<=ZLo){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<=ZLo)break;if(!(this.logFilePath!=null&&c.fullPath===this.logFilePath))try{await(0,cq.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 eXn={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function Csu(e){let t=RSm();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:eXn});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",...eXn}})}catch{return new Response(JSON.stringify(i()),{headers:{"Content-Type":"application/json",...eXn}})}let d=/^\/_local\/(.*)/.exec(p.pathname);return u.method==="GET"&&d!=null?new Response(t.file(`/${d[1]}`),{headers:eXn}):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 n3e.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 RSm(){return globalThis.Bun}er();Uw();var wfu=require("child_process"),dZn=we(u4o(),1),Sfu=we(v3o(),1),A2=require("fs"),aM=require("fs/promises"),_fu=require("os"),C$=we(require("path"),1),Tfu=we(yw(),1),Bfu=we(xfu(),1),f3e=process.platform==="win32",fZn=xe.cyan("[docs]:"),uOm="etag",lOm=23,R3o=e=>e.padEnd(lOm," "),pOm="preview",fOm="app-preview",dOm="bundle",mOm=".next",hOm="standalone",gOm=".fern",AOm="packages/fern-docs/bundle/.next/server/instrumentation.js",yOm='Cannot find matching keyid: {"signatures":';function bOm(e){try{let r=(0,wfu.execSync)('reg query "HKLM\\SYSTEM\\CurrentControlSet\\Control\\FileSystem" /v LongPathsEnabled',{encoding:"utf-8",timeout:5e3}).match(/LongPathsEnabled\s+REG_DWORD\s+0x(\d+)/i);if(r!=null&&r[1]==="1")return}catch(t){e.debug(`Registry query for LongPathsEnabled failed: ${t}`)}throw new j({message:`Windows long path support is not enabled. The docs bundle contains deeply nested .pnpm paths that exceed the 260-character MAX_PATH limit.
3251
3251
 
@@ -3438,7 +3438,7 @@ Please ensure you have membership at https://dashboard.buildwithfern.com, and as
3438
3438
 
3439
3439
  Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`:r}function DRm(e,t,r){return t!=null&&t.includes("Invalid authorization token")?`Your authentication token is invalid or expired. Please run '${r}' to re-authenticate.`:`You are not authorized to publish docs under organization '${e}'. Please run '${r}' to ensure you are logged in with the correct account.
3440
3440
 
3441
- Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function RRm(e){if(e==null)return{code:void 0,message:void 0};let t=e.body;if(t!=null&&typeof t=="object"){let n=typeof t.code=="string"?t.code:void 0,i=typeof t.message=="string"?t.message:void 0;return{code:n,message:i}}return{code:void 0,message:typeof t=="string"&&t.length>0?t:typeof e.errorMessage=="string"?e.errorMessage:typeof e.message=="string"?e.message:void 0}}function FRm(e){try{return new URL(s2(e)).pathname}catch{return}}async function kRm({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await NRm({fdr:e,workspace:t,snippetsConfig:i,context:n});if(Object.keys(o).length===0){n.logger.debug("[SDK Dynamic IR] No snippet configs found, skipping S3 check");return}try{let a=(await e.api.register.checkSdkDynamicIrExists({orgId:fn.OrgId(r),apiId:"",irVersions:[]})).existingDynamicIrs??{};if(Object.keys(a).length===0){n.logger.debug("[SDK Dynamic IR] No existing SDK dynamic IRs found in S3");return}let c={};for(let[u,l]of Object.entries(a??{}))try{n.logger.debug(`Downloading existing SDK dynamic IR for ${u}...`);let p=await fetch(l.downloadUrl);if(p.ok){let d=await p.json();c[u]={dynamicIR:d},n.logger.debug(`Successfully downloaded SDK dynamic IR for ${u}`)}else n.logger.warn(`Failed to download SDK dynamic IR for ${u}: ${p.status}`)}catch(p){n.logger.warn(`Error downloading SDK dynamic IR for ${u}: ${p}`)}return Object.keys(c).length>0?c:void 0}catch(s){n.logger.debug(`Error checking for existing SDK dynamic IRs: ${s}`);return}}function wzo(e){return e.replace(/^https:\/\//,"")}async function NRm({fdr:e,workspace:t,snippetsConfig:r,context:n}){let i={},o=[{language:"typescript",snippetName:r.typescriptSdk?.package??void 0,explicitVersion:r.typescriptSdk?.version??void 0},{language:"python",snippetName:r.pythonSdk?.package??void 0,explicitVersion:r.pythonSdk?.version??void 0},{language:"java",snippetName:r.javaSdk?.coordinate??void 0,explicitVersion:r.javaSdk?.version??void 0},{language:"go",snippetName:r.goSdk?.githubRepo&&wzo(r.goSdk?.githubRepo),explicitVersion:r.goSdk?.version??void 0},{language:"csharp",snippetName:r.csharpSdk?.package??void 0,explicitVersion:r.csharpSdk?.version??void 0},{language:"ruby",snippetName:r.rubySdk?.gem??void 0,explicitVersion:r.rubySdk?.version??void 0},{language:"php",snippetName:r.phpSdk?.package??void 0,explicitVersion:r.phpSdk?.version??void 0},{language:"swift",snippetName:r.swiftSdk?.package??void 0,explicitVersion:r.swiftSdk?.version??void 0},{language:"rust",snippetName:r.rustSdk?.package??void 0,explicitVersion:r.rustSdk?.version??void 0}];for(let s of o){if(!s.snippetName)continue;let a=s.explicitVersion??void 0;a||(a=(await jRm({fdr:e,workspace:t,language:s.language,snippetName:s.snippetName,context:n}))?.version),i[s.language]={packageName:s.snippetName,version:a},a||n.logger.debug(`[SDK Dynamic IR] ${s.language}: no version specified, will use latest`)}return i}async function jRm({fdr:e,workspace:t,language:r,snippetName:n,context:i}){let o;switch(r){case"csharp":o="Csharp";break;case"go":o="Go";break;case"java":o="Java";break;case"python":o="Python";break;case"ruby":o="Ruby";break;case"typescript":o="TypeScript";break;case"php":o="Php";break;case"swift":o="Swift";break;default:return}let s,a,c;if(t.generatorsConfiguration?.groups){let u=[];for(let l of t.generatorsConfiguration.groups)for(let p of l.generators)if(p.language===r){let d=jn.getPackageName({generatorInvocation:p});d&&u.push(d),!a&&d&&(a=d,c=p.name,p.outputMode.type==="githubV2"&&(s=`${p.outputMode.githubV2.owner}/${p.outputMode.githubV2.repo}`))}}if(!a){i.logger.debug(`[SDK Dynamic IR] ${r}: no generator found with a package name`);return}try{let u=await e.sdks.computeSemanticVersion({githubRepository:s,language:o,package:a});return i.logger.debug(`[SDK Dynamic IR] ${r}: computed version ${u.version} for package "${a}"`),{version:u.version,generatorPackage:a}}catch(u){i.logger.debug(`[SDK Dynamic IR] ${r}: error computing version: ${u}`);return}}async function QRm({workspace:e,organization:t,context:r,snippetsConfig:n,skipLanguages:i=new Set}){let o={};if(!e)return;let s={typescript:n.typescriptSdk?.package,python:n.pythonSdk?.package,java:n.javaSdk?.coordinate,go:n.goSdk?.githubRepo&&wzo(n.goSdk?.githubRepo),csharp:n.csharpSdk?.package,ruby:n.rubySdk?.gem,php:n.phpSdk?.package,swift:n.swiftSdk?.package,rust:n.rustSdk?.package};if(e.generatorsConfiguration?.groups)for(let a of e.generatorsConfiguration.groups)for(let c of a.generators){let u=g3e({apiName:e.workspaceName??"",organization:t,generatorInvocation:c}),l="";if(u?.outputConfig.type==="publish")switch(u.outputConfig.value.type){case"npm":case"nuget":case"pypi":case"rubygems":l=u.outputConfig.value.packageName;break;case"maven":l=u.outputConfig.value.coordinate;break;case"go":l=u.outputConfig.value.repoUrl;break;case"swift":l=u.outputConfig.value.repoUrl;break;case"crates":l=u.outputConfig.value.packageName;break}if(c.language==="php"&&c.config&&typeof c.config=="object"&&"packageName"in c.config&&(l=c.config.packageName??""),c.language==="go"&&l&&(l=wzo(l)),!!c.language){if(i.has(c.language)){r.logger.debug(`Skipping dynamic IR generation for ${c.language} (using existing SDK dynamic IR)`);continue}if(c.language&&s[c.language]===l){let p=Wg({workspace:e,generationLanguage:c.language,keywords:void 0,smartCasing:c.smartCasing,exampleGeneration:{disabled:!0,skipAutogenerationIfManualExamplesExist:!0,skipErrorAutogenerationIfManualErrorExamplesExist:!0},audiences:{type:"all"},readme:void 0,packageName:l,version:void 0,context:r,sourceResolver:new Mh(r,e),dynamicGeneratorConfig:u}),d=$Qe({ir:p,disableExamples:!0,smartCasing:c.smartCasing,generationLanguage:c.language,generatorConfig:u});d?o[c.language]={dynamicIR:d}:r.logger.debug(`Failed to create dynamic IR for ${c.language}`)}}}for(let[a,c]of Object.entries(s))a&&c&&!Object.keys(o).includes(a)&&!i.has(a)&&(r.logger.warn(),r.logger.warn(`Failed to upload ${a} SDK snippets because of unknown package \`${c}\`.`),r.logger.warn(`Please make sure your ${e.workspaceName?`${e.workspaceName}/`:""}generators.yml has a generator that publishes a ${c} package.`),r.logger.warn());if(Object.keys(o).length>0)return o}async function MRm({dynamicIRs:e,dynamicIRUploadUrls:t,context:r,apiId:n}){if(Object.keys(t).length>0)for(let[i,o]of Object.entries(t)){let s=e[i]?.dynamicIR;if(s){let a=JSON.stringify(s);(await fetch(o.uploadUrl,{method:"PUT",body:a,headers:{"Content-Type":"application/octet-stream","Content-Length":Buffer.byteLength(a,"utf8").toString()}})).ok?r.logger.debug(`Uploaded dynamic IR for ${n}:${i}`):r.logger.warn(`Failed to upload dynamic IR for ${n}:${i}`)}else r.logger.warn(`Could not find matching dynamic IR to upload for ${n}:${i}`)}}async function LRm({docsDefinition:e,isPreview:t,context:r}){e.config.aiChatConfig==null||t||r.logger.warn(xe.yellow("Enabling Ask Fern from docs.yml is deprecated. Please enable it from the Fern dashboard instead."))}function zRm(e,t){if(e)return{enabled:!0,model:process.env.FERN_AI_MODEL||"gpt-4o-mini",maxRetries:parseInt(process.env.FERN_AI_MAX_RETRIES||"3"),requestTimeoutMs:parseInt(process.env.FERN_AI_TIMEOUT_MS||"25000"),styleInstructions:t}}function Cmu(e){let t=e,r=t?.content;return{errorType:t?.error,statusCode:t?.statusCode??r?.statusCode,reason:r?.reason,errorMessage:r?.errorMessage??r?.message,body:r?.body,cause:r?.cause,rawError:e}}var Rqt=[60*1e3,300*1e3,300*1e3];async function Fqt({organization:e,apiWorkspaces:t,ossWorkspaces:r,docsWorkspace:n,context:i,token:o,instanceUrl:s,preview:a,previewId:c,disableTemplates:u,skipUpload:l,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m}){let h=a&&!n.config.settings?.substituteEnvVars;n.config=Ey(n.config,{onError:C=>i.failAndThrow(void 0,C,{code:j.Code.EnvironmentError})},{substituteAsEmpty:h});let A=n.config.instances;if(A.length===0){i.failAndThrow("No instances specified in docs.yml! Cannot register docs.",void 0,{code:j.Code.ConfigError});return}if(A.length>1&&s==null){i.failAndThrow(`More than one docs instances. Please specify one (e.g. --instance ${A[0]?.url})`,void 0,{code:j.Code.ConfigError});return}let b=A.find(C=>C.url===s)??A[0];if(b==null){i.failAndThrow(`No docs instance with url ${s}. Failed to register.`,void 0,{code:j.Code.ConfigError});return}let v=[];b.customDomain!=null&&(typeof b.customDomain=="string"?v.push(b.customDomain):Array.isArray(b.customDomain)&&v.push(...b.customDomain)),b.multiSource===!0&&URm(b.url,v,i),i.logger.info(`Starting docs publishing for ${a?"preview":"production"}: ${b.url}`),i.logger.debug(`Organization: ${e}, Preview: ${a}, APIs: ${t.length}, OSS: ${r.length}`);let x;return await i.runInteractiveTask({name:b.url},async()=>{let C=performance.now(),w=()=>Emu({docsWorkspace:n,customDomains:v,domain:b.url,token:o,organization:e,context:i,apiWorkspaces:t,ossWorkspaces:r,preview:a,previewId:c,editThisPage:b.editThisPage,disableTemplates:u,skipUpload:l,withAiExamples:n.config.aiExamples?.enabled??n.config.experimental?.aiExamples??!0,excludeApis:n.config.experimental?.excludeApis??!1,targetAudiences:b.audiences?Array.isArray(b.audiences)?b.audiences:[b.audiences]:void 0,docsUrl:b.url,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m,multiSource:b.multiSource??!1});for(let B=0;;B++)try{x=await w();break}catch(R){if(!(R instanceof Sbt)||B>=Rqt.length){if(R instanceof Sbt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:j.Code.NetworkError});throw R}let O=Rqt[B]??Rqt[Rqt.length-1]??6e4,z=O/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${z} minute${z===1?"":"s"} (attempt ${B+1}/${Rqt.length})...`),await new Promise(J=>setTimeout(J,O))}let T=performance.now()-C;i.logger.debug(`Docs publishing completed in ${T.toFixed(0)}ms`)}),x}function xmu(e){try{let t=e.startsWith("https://")||e.startsWith("http://")?e:`https://${e}`;return new URL(t).pathname}catch{return"/"}}function URm(e,t,r){let n=xmu(e);for(let i of t){let o=xmu(i);o!=="/"&&n!==o&&r.failAndThrow(`When multi-source is enabled, the url and custom-domain must share the same basepath. Instance url '${e}' has basepath '${n}' but custom-domain '${i}' has basepath '${o}'.`,void 0,{code:j.Code.ConfigError})}}var aei=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 Qh({context:this.context,task:this.task});try{let s=await Fqt({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.5.0",loginCommand:"fern auth login"});return o.getResult()===Gf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:ei(s)}}}};Lt();var _bt=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(`
3441
+ Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function RRm(e){if(e==null)return{code:void 0,message:void 0};let t=e.body;if(t!=null&&typeof t=="object"){let n=typeof t.code=="string"?t.code:void 0,i=typeof t.message=="string"?t.message:void 0;return{code:n,message:i}}return{code:void 0,message:typeof t=="string"&&t.length>0?t:typeof e.errorMessage=="string"?e.errorMessage:typeof e.message=="string"?e.message:void 0}}function FRm(e){try{return new URL(s2(e)).pathname}catch{return}}async function kRm({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await NRm({fdr:e,workspace:t,snippetsConfig:i,context:n});if(Object.keys(o).length===0){n.logger.debug("[SDK Dynamic IR] No snippet configs found, skipping S3 check");return}try{let a=(await e.api.register.checkSdkDynamicIrExists({orgId:fn.OrgId(r),apiId:"",irVersions:[]})).existingDynamicIrs??{};if(Object.keys(a).length===0){n.logger.debug("[SDK Dynamic IR] No existing SDK dynamic IRs found in S3");return}let c={};for(let[u,l]of Object.entries(a??{}))try{n.logger.debug(`Downloading existing SDK dynamic IR for ${u}...`);let p=await fetch(l.downloadUrl);if(p.ok){let d=await p.json();c[u]={dynamicIR:d},n.logger.debug(`Successfully downloaded SDK dynamic IR for ${u}`)}else n.logger.warn(`Failed to download SDK dynamic IR for ${u}: ${p.status}`)}catch(p){n.logger.warn(`Error downloading SDK dynamic IR for ${u}: ${p}`)}return Object.keys(c).length>0?c:void 0}catch(s){n.logger.debug(`Error checking for existing SDK dynamic IRs: ${s}`);return}}function wzo(e){return e.replace(/^https:\/\//,"")}async function NRm({fdr:e,workspace:t,snippetsConfig:r,context:n}){let i={},o=[{language:"typescript",snippetName:r.typescriptSdk?.package??void 0,explicitVersion:r.typescriptSdk?.version??void 0},{language:"python",snippetName:r.pythonSdk?.package??void 0,explicitVersion:r.pythonSdk?.version??void 0},{language:"java",snippetName:r.javaSdk?.coordinate??void 0,explicitVersion:r.javaSdk?.version??void 0},{language:"go",snippetName:r.goSdk?.githubRepo&&wzo(r.goSdk?.githubRepo),explicitVersion:r.goSdk?.version??void 0},{language:"csharp",snippetName:r.csharpSdk?.package??void 0,explicitVersion:r.csharpSdk?.version??void 0},{language:"ruby",snippetName:r.rubySdk?.gem??void 0,explicitVersion:r.rubySdk?.version??void 0},{language:"php",snippetName:r.phpSdk?.package??void 0,explicitVersion:r.phpSdk?.version??void 0},{language:"swift",snippetName:r.swiftSdk?.package??void 0,explicitVersion:r.swiftSdk?.version??void 0},{language:"rust",snippetName:r.rustSdk?.package??void 0,explicitVersion:r.rustSdk?.version??void 0}];for(let s of o){if(!s.snippetName)continue;let a=s.explicitVersion??void 0;a||(a=(await jRm({fdr:e,workspace:t,language:s.language,snippetName:s.snippetName,context:n}))?.version),i[s.language]={packageName:s.snippetName,version:a},a||n.logger.debug(`[SDK Dynamic IR] ${s.language}: no version specified, will use latest`)}return i}async function jRm({fdr:e,workspace:t,language:r,snippetName:n,context:i}){let o;switch(r){case"csharp":o="Csharp";break;case"go":o="Go";break;case"java":o="Java";break;case"python":o="Python";break;case"ruby":o="Ruby";break;case"typescript":o="TypeScript";break;case"php":o="Php";break;case"swift":o="Swift";break;default:return}let s,a,c;if(t.generatorsConfiguration?.groups){let u=[];for(let l of t.generatorsConfiguration.groups)for(let p of l.generators)if(p.language===r){let d=jn.getPackageName({generatorInvocation:p});d&&u.push(d),!a&&d&&(a=d,c=p.name,p.outputMode.type==="githubV2"&&(s=`${p.outputMode.githubV2.owner}/${p.outputMode.githubV2.repo}`))}}if(!a){i.logger.debug(`[SDK Dynamic IR] ${r}: no generator found with a package name`);return}try{let u=await e.sdks.computeSemanticVersion({githubRepository:s,language:o,package:a});return i.logger.debug(`[SDK Dynamic IR] ${r}: computed version ${u.version} for package "${a}"`),{version:u.version,generatorPackage:a}}catch(u){i.logger.debug(`[SDK Dynamic IR] ${r}: error computing version: ${u}`);return}}async function QRm({workspace:e,organization:t,context:r,snippetsConfig:n,skipLanguages:i=new Set}){let o={};if(!e)return;let s={typescript:n.typescriptSdk?.package,python:n.pythonSdk?.package,java:n.javaSdk?.coordinate,go:n.goSdk?.githubRepo&&wzo(n.goSdk?.githubRepo),csharp:n.csharpSdk?.package,ruby:n.rubySdk?.gem,php:n.phpSdk?.package,swift:n.swiftSdk?.package,rust:n.rustSdk?.package};if(e.generatorsConfiguration?.groups)for(let a of e.generatorsConfiguration.groups)for(let c of a.generators){let u=g3e({apiName:e.workspaceName??"",organization:t,generatorInvocation:c}),l="";if(u?.outputConfig.type==="publish")switch(u.outputConfig.value.type){case"npm":case"nuget":case"pypi":case"rubygems":l=u.outputConfig.value.packageName;break;case"maven":l=u.outputConfig.value.coordinate;break;case"go":l=u.outputConfig.value.repoUrl;break;case"swift":l=u.outputConfig.value.repoUrl;break;case"crates":l=u.outputConfig.value.packageName;break}if(c.language==="php"&&c.config&&typeof c.config=="object"&&"packageName"in c.config&&(l=c.config.packageName??""),c.language==="go"&&l&&(l=wzo(l)),!!c.language){if(i.has(c.language)){r.logger.debug(`Skipping dynamic IR generation for ${c.language} (using existing SDK dynamic IR)`);continue}if(c.language&&s[c.language]===l){let p=Wg({workspace:e,generationLanguage:c.language,keywords:void 0,smartCasing:c.smartCasing,exampleGeneration:{disabled:!0,skipAutogenerationIfManualExamplesExist:!0,skipErrorAutogenerationIfManualErrorExamplesExist:!0},audiences:{type:"all"},readme:void 0,packageName:l,version:void 0,context:r,sourceResolver:new Mh(r,e),dynamicGeneratorConfig:u}),d=$Qe({ir:p,disableExamples:!0,smartCasing:c.smartCasing,generationLanguage:c.language,generatorConfig:u});d?o[c.language]={dynamicIR:d}:r.logger.debug(`Failed to create dynamic IR for ${c.language}`)}}}for(let[a,c]of Object.entries(s))a&&c&&!Object.keys(o).includes(a)&&!i.has(a)&&(r.logger.warn(),r.logger.warn(`Failed to upload ${a} SDK snippets because of unknown package \`${c}\`.`),r.logger.warn(`Please make sure your ${e.workspaceName?`${e.workspaceName}/`:""}generators.yml has a generator that publishes a ${c} package.`),r.logger.warn());if(Object.keys(o).length>0)return o}async function MRm({dynamicIRs:e,dynamicIRUploadUrls:t,context:r,apiId:n}){if(Object.keys(t).length>0)for(let[i,o]of Object.entries(t)){let s=e[i]?.dynamicIR;if(s){let a=JSON.stringify(s);(await fetch(o.uploadUrl,{method:"PUT",body:a,headers:{"Content-Type":"application/octet-stream","Content-Length":Buffer.byteLength(a,"utf8").toString()}})).ok?r.logger.debug(`Uploaded dynamic IR for ${n}:${i}`):r.logger.warn(`Failed to upload dynamic IR for ${n}:${i}`)}else r.logger.warn(`Could not find matching dynamic IR to upload for ${n}:${i}`)}}async function LRm({docsDefinition:e,isPreview:t,context:r}){e.config.aiChatConfig==null||t||r.logger.warn(xe.yellow("Enabling Ask Fern from docs.yml is deprecated. Please enable it from the Fern dashboard instead."))}function zRm(e,t){if(e)return{enabled:!0,model:process.env.FERN_AI_MODEL||"gpt-4o-mini",maxRetries:parseInt(process.env.FERN_AI_MAX_RETRIES||"3"),requestTimeoutMs:parseInt(process.env.FERN_AI_TIMEOUT_MS||"25000"),styleInstructions:t}}function Cmu(e){let t=e,r=t?.content;return{errorType:t?.error,statusCode:t?.statusCode??r?.statusCode,reason:r?.reason,errorMessage:r?.errorMessage??r?.message,body:r?.body,cause:r?.cause,rawError:e}}var Rqt=[60*1e3,300*1e3,300*1e3];async function Fqt({organization:e,apiWorkspaces:t,ossWorkspaces:r,docsWorkspace:n,context:i,token:o,instanceUrl:s,preview:a,previewId:c,disableTemplates:u,skipUpload:l,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m}){let h=a&&!n.config.settings?.substituteEnvVars;n.config=Ey(n.config,{onError:C=>i.failAndThrow(void 0,C,{code:j.Code.EnvironmentError})},{substituteAsEmpty:h});let A=n.config.instances;if(A.length===0){i.failAndThrow("No instances specified in docs.yml! Cannot register docs.",void 0,{code:j.Code.ConfigError});return}if(A.length>1&&s==null){i.failAndThrow(`More than one docs instances. Please specify one (e.g. --instance ${A[0]?.url})`,void 0,{code:j.Code.ConfigError});return}let b=A.find(C=>C.url===s)??A[0];if(b==null){i.failAndThrow(`No docs instance with url ${s}. Failed to register.`,void 0,{code:j.Code.ConfigError});return}let v=[];b.customDomain!=null&&(typeof b.customDomain=="string"?v.push(b.customDomain):Array.isArray(b.customDomain)&&v.push(...b.customDomain)),b.multiSource===!0&&URm(b.url,v,i),i.logger.info(`Starting docs publishing for ${a?"preview":"production"}: ${b.url}`),i.logger.debug(`Organization: ${e}, Preview: ${a}, APIs: ${t.length}, OSS: ${r.length}`);let x;return await i.runInteractiveTask({name:b.url},async()=>{let C=performance.now(),w=()=>Emu({docsWorkspace:n,customDomains:v,domain:b.url,token:o,organization:e,context:i,apiWorkspaces:t,ossWorkspaces:r,preview:a,previewId:c,editThisPage:b.editThisPage,disableTemplates:u,skipUpload:l,withAiExamples:n.config.aiExamples?.enabled??n.config.experimental?.aiExamples??!0,excludeApis:n.config.experimental?.excludeApis??!1,targetAudiences:b.audiences?Array.isArray(b.audiences)?b.audiences:[b.audiences]:void 0,docsUrl:b.url,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m,multiSource:b.multiSource??!1});for(let B=0;;B++)try{x=await w();break}catch(R){if(!(R instanceof Sbt)||B>=Rqt.length){if(R instanceof Sbt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:j.Code.NetworkError});throw R}let O=Rqt[B]??Rqt[Rqt.length-1]??6e4,z=O/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${z} minute${z===1?"":"s"} (attempt ${B+1}/${Rqt.length})...`),await new Promise(J=>setTimeout(J,O))}let T=performance.now()-C;i.logger.debug(`Docs publishing completed in ${T.toFixed(0)}ms`)}),x}function xmu(e){try{let t=e.startsWith("https://")||e.startsWith("http://")?e:`https://${e}`;return new URL(t).pathname}catch{return"/"}}function URm(e,t,r){let n=xmu(e);for(let i of t){let o=xmu(i);o!=="/"&&n!==o&&r.failAndThrow(`When multi-source is enabled, the url and custom-domain must share the same basepath. Instance url '${e}' has basepath '${n}' but custom-domain '${i}' has basepath '${o}'.`,void 0,{code:j.Code.ConfigError})}}var aei=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 Qh({context:this.context,task:this.task});try{let s=await Fqt({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.5.1",loginCommand:"fern auth login"});return o.getResult()===Gf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:ei(s)}}}};Lt();var _bt=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(`
3442
3442
  `),this.stream.write(`${xe.cyan("\u25C6")} ${xe.bold(t.title)}
3443
3443
  `),t.subtitle!=null&&this.stream.write(` ${xe.dim(t.subtitle)}
3444
3444
  `),this.stream.write(`
@@ -4114,7 +4114,7 @@ For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides
4114
4114
  Run ${xe.cyan("fern generator upgrade")} to upgrade your generators.`),i.length>2&&(r+=`
4115
4115
  Run ${xe.cyan("fern generator upgrade --list")} to see the full list of generator upgrades available.`),Knt(r,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"})}async function Wms({generatorUpgradeInfo:e,header:t,limit:r,includeBoxen:n=!0}){if(!O9u(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+=`
4116
4116
  ${await oWh(a.generatorName)} (${a.apiName!=null?"API: "+a.apiName+", ":""}Group: ${a.generatorGroup}) `+xe.dim(a.currentVersion)+xe.reset(" \u2192 ")+xe.green(a.latestVersion);return i+=`
4117
- `,n?Knt(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function oWh(e){let r=await new B9u.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new j({message:`Generator ${e} not found`,code:j.Code.ConfigError});return r.body.displayName}async function sWh({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await D9u({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=dQe(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await BP({generatorName:d,cliVersion:e.environment.packageVersion,currentGeneratorVersion:l.version,channel:i,includeMajor:o,context:p});f!=null&&(a.versions[u][l.name]={previousVersion:l.version,latestVersion:f})},generatorFilter:r,groupFilter:n}),a}let s={type:"multiApi",versions:{}};return await D9u({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(a,c,u,l)=>{if(a==null)return;s.versions[a]==null&&(s.versions[a]={}),s.versions[a][c]==null&&(s.versions[a][c]={});let p=dQe(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await BP({generatorName:p,cliVersion:e.environment.packageVersion,currentGeneratorVersion:u.version,channel:i,includeMajor:o,context:l});d!=null&&(s.versions[a][c][u.name]={previousVersion:u.version,latestVersion:d})},generatorFilter:r,groupFilter:n}),s}async function D9u({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 CL({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?FE(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 R9u(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;try{c=vj(a.latestVersion,a.previousVersion)}catch{throw new j({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:j.Code.ConfigError})}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 vmi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await sWh({cliContext:t,project:e,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o});if(a.type==="multiApi")for(let[c,u]of Object.entries(a.versions))s.push(...R9u(u,c,t.logger));else s.push(...R9u(a.versions,void 0,t.logger))}return s}async function Kme({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await HOt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new j({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:j.Code.NetworkError})}}var F9u=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Cmi=class e{environment;sentryClient;posthogManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Zn.Info;isLocal;stdoutRedirector=new Imi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await hzt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new IMt(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 Emi({release:`cli@${this.environment.packageVersion}`})}getPackageName(){return"fern-api"}getPackageVersion(){return"5.5.0"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${xe.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new bu}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof bu)&&(nMt({message:t,error:r,logger:this.logger}),bmi(this,r,{...n,message:t}))}enableJsonMode(){this.jsonMode||(this.jsonMode=!0,this.stdoutRedirector.redirect())}get isJsonMode(){return this.jsonMode}writeJsonToStdout(t){this.stdoutRedirector.restore(),process.stdout.write(JSON.stringify(t,null,2)+`
4117
+ `,n?Knt(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function oWh(e){let r=await new B9u.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new j({message:`Generator ${e} not found`,code:j.Code.ConfigError});return r.body.displayName}async function sWh({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await D9u({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=dQe(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await BP({generatorName:d,cliVersion:e.environment.packageVersion,currentGeneratorVersion:l.version,channel:i,includeMajor:o,context:p});f!=null&&(a.versions[u][l.name]={previousVersion:l.version,latestVersion:f})},generatorFilter:r,groupFilter:n}),a}let s={type:"multiApi",versions:{}};return await D9u({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(a,c,u,l)=>{if(a==null)return;s.versions[a]==null&&(s.versions[a]={}),s.versions[a][c]==null&&(s.versions[a][c]={});let p=dQe(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await BP({generatorName:p,cliVersion:e.environment.packageVersion,currentGeneratorVersion:u.version,channel:i,includeMajor:o,context:l});d!=null&&(s.versions[a][c][u.name]={previousVersion:u.version,latestVersion:d})},generatorFilter:r,groupFilter:n}),s}async function D9u({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 CL({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?FE(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 R9u(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;try{c=vj(a.latestVersion,a.previousVersion)}catch{throw new j({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:j.Code.ConfigError})}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 vmi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await sWh({cliContext:t,project:e,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o});if(a.type==="multiApi")for(let[c,u]of Object.entries(a.versions))s.push(...R9u(u,c,t.logger));else s.push(...R9u(a.versions,void 0,t.logger))}return s}async function Kme({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await HOt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new j({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:j.Code.NetworkError})}}var F9u=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Cmi=class e{environment;sentryClient;posthogManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Zn.Info;isLocal;stdoutRedirector=new Imi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await hzt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new IMt(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 Emi({release:`cli@${this.environment.packageVersion}`})}getPackageName(){return"fern-api"}getPackageVersion(){return"5.5.1"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${xe.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new bu}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof bu)&&(nMt({message:t,error:r,logger:this.logger}),bmi(this,r,{...n,message:t}))}enableJsonMode(){this.jsonMode||(this.jsonMode=!0,this.stdoutRedirector.redirect())}get isJsonMode(){return this.jsonMode}writeJsonToStdout(t){this.stdoutRedirector.restore(),process.stdout.write(JSON.stringify(t,null,2)+`
4118
4118
  `),this.jsonMode&&this.stdoutRedirector.redirect()}async exit({code:t}={}){!this._suppressUpgradeMessage&&!this.isLocal&&await this.nudgeUpgradeIfAvailable(),this.ttyAwareLogger.finish();try{await this.posthogManager.flush()}catch{}await this.sentryClient.flush(),this.exitProgram({code:t})}async nudgeUpgradeIfAvailable(){try{let t=await Promise.race([this.isUpgradeAvailable(),new Promise((n,i)=>setTimeout(()=>i("Request timed out"),300))]),r=await P9u({cliEnvironment:this.environment,upgradeInfo:t});r!=null&&(r.endsWith(`
4119
4119
  `)||(r+=`
4120
4120
  `),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=d_i(t.map(n=>n.type==="docs"?"docs":n.workspaceName??"api"),n=>n.length);r!=null&&(this.longestWorkspaceName=r)}project;registerProject(t){this.project=t}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 THt(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){throw n.failWithoutThrowing(void 0,o),new bu}finally{n.finish()}return i}instrumentPostHogEvent(t){this.isLocal||this.posthogManager.sendEvent(t)}captureException(t,r){this.sentryClient.captureException(t,r)}logger=PS((t,...r)=>this.log(t,...r));stderr=PS((t,...r)=>this.logStderr(t,...r));constructTaskInitForWorkspace(t){let r=t.type==="docs"?"docs":t.workspaceName??"api",n=k9u(r),i=1+(this.longestWorkspaceName!=null?k9u(this.longestWorkspaceName):n).length,o=n.padEnd(i),s=F9u[this.numTasks++%F9u.length],a=xe.hex(s)(o);return{...this.constructTaskInit(),logPrefix:a,title:xe.hex(s).bold(r)}}constructTaskInit(){return{logImmediately:t=>this.logImmediately(t),takeOverTerminal:t=>this.ttyAwareLogger.takeOverTerminal(t),onResult:t=>{t===Gf.Failure&&(this.didSucceed=!1)},instrumentPostHogEvent:t=>{this.instrumentPostHogEvent(t)},shouldBufferLogs:!1,captureException:(t,r)=>{this.sentryClient.captureException(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=>OS.indexOf(i.level)>=OS.indexOf(this.logLevel));this.ttyAwareLogger.log(n,{includeDebugInfo:this.logLevel===Zn.Debug,stderr:r||this.jsonMode})}_suppressUpgradeMessage=!1;suppressUpgradeMessage(){this._suppressUpgradeMessage=!0}_isUpgradeAvailable;async isUpgradeAvailable({includePreReleases:t=!1}={}){if(this._isUpgradeAvailable==null){this.logger.debug(`Checking if ${this.environment.packageName} upgrade is available...`);let r=await Kme({cliEnvironment:this.environment,includePreReleases:t}),n=vj(r,this.environment.packageVersion);this.logger.debug(`Latest version: ${r}. `+(n?"Upgrade available.":"No upgrade available."));let i={isUpgradeAvailable:n,latestVersion:r},o=await vmi({project:this.project,cliContext:this});this._isUpgradeAvailable={cliUpgradeInfo:i,generatorUpgradeInfo:o}}return this._isUpgradeAvailable}async confirmPrompt(t,r=!1){try{return await qms({message:t,choices:[{name:"No",value:!1},{name:"Yes",value:!0}],default:r,theme:{prefix:xe.yellow("?"),style:{answer:i=>xe.cyan(i),message:i=>xe.bold(i),highlight:i=>xe.cyan(i)}}})}catch(n){throw n?.name==="ExitPromptError"?(this.logger.info(`
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "5.5.0",
2
+ "version": "5.5.1",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",