fern-api 5.37.1 → 5.37.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.cjs +6 -6
- package/package.json +1 -1
package/cli.cjs
CHANGED
|
@@ -3222,7 +3222,7 @@ ${kjc.default.cursorShow}`)}releaseCursor(){this.extraLinesUnderPrompt>0&&Fwo(th
|
|
|
3222
3222
|
`+nze.default.red(">> ")+t),this.screen.render(r,n)}getMaskedValue(t){return this.status==="answered"?this.opt.mask?nze.default.cyan(Vjc(t,this.opt.mask)):nze.default.italic(nze.default.dim("[hidden]")):this.opt.mask?Vjc(t,this.opt.mask):nze.default.italic(nze.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 z7r=we(cS(),1);var _Qc=we(mxo(),1),M7r=require("child_process"),Rot=require("fs"),Q7r=we(require("path"),1),VQc=we(require("os"),1),qQc=require("crypto"),Zxo=we(zQc(),1);var k7r=class extends Error{originalError;constructor(t){super(`Failed to create temporary file. ${t.message}`),this.originalError=t}};var L_t=class extends Error{originalError;constructor(t){super(`Failed to launch editor. ${t.message}`),this.originalError=t}};var N7r=class extends Error{originalError;constructor(t){super(`Failed to read temporary file. ${t.message}`),this.originalError=t}};var j7r=class extends Error{originalError;constructor(t){super(`Failed to remove temporary file. ${t.message}`),this.originalError=t}};function L7r(e="",t,r){let n=new $xo(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 UQc(e){return e?e.replace(/[^a-zA-Z0-9_.-]/g,"_"):""}function wUd(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 $xo=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=wUd(t).map(i=>i.replace("\\ "," ")),n=r.shift();this.editor={args:r,bin:n}}createTemporaryFile(){try{let t=this.fileOptions.dir??VQc.default.tmpdir(),r=(0,qQc.randomUUID)(),n=UQc(this.fileOptions.prefix),i=UQc(this.fileOptions.postfix),o=`${n}${r}${i}`,s=Q7r.default.resolve(t,o),a=Q7r.default.resolve(t)+Q7r.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,Rot.writeFileSync)(this.tempFile,this.text,c)}catch(t){throw new k7r(t)}}readTemporaryFile(){try{let t=(0,Rot.readFileSync)(this.tempFile);if(t.length===0)this.text="";else{let r=(0,_Qc.detect)(t)??"utf8";Zxo.default.encodingExists(r)||(r="utf8"),this.text=Zxo.default.decode(t,r)}}catch(t){throw new N7r(t)}}removeTemporaryFile(){try{(0,Rot.unlinkSync)(this.tempFile)}catch(t){throw new j7r(t)}}launchEditor(){try{let t=(0,M7r.spawnSync)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"});this.lastExitStatus=t.status??0}catch(t){throw new L_t(t)}}launchEditorAsync(t){try{(0,M7r.spawn)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"}).on("exit",n=>{this.lastExitStatus=n,setImmediate(t)})}catch(r){throw new L_t(r)}}};var GQc=we(hz(),1);var z_t=class extends uS{_run(t){this.done=t,this.editorResult=new GQc.Subject;let r=GO(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"?z7r.default.dim("Received"):z7r.default.dim("Press <enter> to launch your preferred editor."),t&&(r=z7r.default.red(">> ")+t),this.screen.render(n,r)}startExternalEditor(){this.rl.pause(),L7r(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 YQc=require("stream");var KQc=we(require("readline"),1),JQc=we(HQc(),1),aze=class{constructor(t){this.rl||=KQc.default.createInterface(SUd(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 SUd(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 JQc.default;return r.pipe(e.output||process.stdout),{terminal:!0,...e,input:t,output:r}}var U_t=class extends aze{constructor(t={}){super(t),this.log=new YQc.Writable({write:(r,n,i)=>{this.writeLog(r),i()}}),this.bottomBar=t.bottomBar||"",this.render()}render(){return this.write(this.bottomBar),this}clean(){return w_t(this.rl,this.bottomBar.split(`
|
|
3223
3223
|
`).length),this}updateBottomBar(t){return w_t(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+`
|
|
3224
3224
|
`}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&&c7r(this.rl,t.length+this.rl.line.length),this.rl.output.write(t)}};var Gd=we(hz(),1),$Qc=we(t_t(),1);var U7r=we(hz(),1),XQc=we(t_t(),1),_7r=function(e,t,r){return typeof e[t]!="function"?(0,U7r.of)(e):(0,U7r.from)((0,XQc.default)(e[t])(r).then(n=>(e[t]=n,e)))};var ZQc={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}},Fot=class extends aze{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,Gd.from)(t):(0,Gd.isObservable)(t)?n=t:Object.values(t).every(i=>typeof i=="object"&&!Array.isArray(i)&&i!=null)?n=(0,Gd.from)(Object.entries(t).map(([i,o])=>({name:i,...o}))):n=(0,Gd.from)([t]),this.process=n.pipe((0,Gd.concatMap)(this.processQuestion.bind(this)),(0,Gd.publish)()),this.process.connect(),this.process.pipe((0,Gd.reduce)((i,o)=>(ZQc.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,Gd.defer)(()=>(0,Gd.of)(t).pipe((0,Gd.concatMap)(this.setDefaultType.bind(this)),(0,Gd.concatMap)(this.filterIfRunnable.bind(this)),(0,Gd.concatMap)(()=>_7r(t,"message",this.answers)),(0,Gd.concatMap)(()=>_7r(t,"default",this.answers)),(0,Gd.concatMap)(()=>_7r(t,"choices",this.answers)),(0,Gd.concatMap)(this.fetchAnswer.bind(this))))}fetchAnswer(t){let r=this.prompts[t.type];return this.activePrompt=new r(t,this.rl,this.answers),(0,Gd.defer)(()=>(0,Gd.from)(this.activePrompt.run().then(n=>({name:t.name,answer:n}))))}setDefaultType(t){return this.prompts[t.type]||(t.type="input"),(0,Gd.defer)(()=>(0,Gd.of)(t))}filterIfRunnable(t){if(t.askAnswered!==!0&&ZQc.get(this.answers,t.name)!==void 0)return Gd.EMPTY;if(t.when===!1)return Gd.EMPTY;if(typeof t.when!="function")return(0,Gd.of)(t);let{answers:r}=this;return(0,Gd.defer)(()=>(0,Gd.from)((0,$Qc.default)(t.when)(r).then(n=>{if(n)return t})).pipe((0,Gd.filter)(n=>n!=null)))}};function e6c(e){let t=function(r,n){let i;try{i=new Fot(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",S_t),this.registerPrompt("input",rze),this.registerPrompt("number",T_t),this.registerPrompt("confirm",B_t),this.registerPrompt("rawlist",O_t),this.registerPrompt("expand",P_t),this.registerPrompt("checkbox",D_t),this.registerPrompt("password",R_t),this.registerPrompt("editor",z_t)},t.restoreDefaultPrompts(),t}var tSo=e6c();function BUd(e,t){tSo.registerPrompt(e,t)}function OUd(){tSo.restoreDefaultPrompts()}var PUd={prompt:tSo,ui:{BottomBar:U_t,Prompt:Fot},createPromptModule:e6c,registerPrompt:BUd,restoreDefaultPrompts:OUd,Separator:s6},tp=PUd;var kot=require("path");function r6c(){let e=DUd();return async t=>{for(let r of t)r.module=e(r.filename);return t}}function DUd(e=process.argv[1]?(0,kot.dirname)(process.argv[1]):process.cwd(),t=kot.sep==="\\"){let r=t?t6c(e):e;return n=>{if(!n)return;let i=t?t6c(n):n,{dir:o,base:s,ext:a}=kot.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 t6c(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var rSo=e=>{if("flags"in e){let t=n6c(e.flags),r=i6c(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([i,o])=>[i,nSo(o)])),n=Object.fromEntries(Object.entries(t).map(([i,o])=>[i,RUd(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function RUd(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 n6c=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,__t(r)]).filter(([,t])=>t!==void 0)),i6c=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?nSo(n):void 0]}))};var __t=e=>e===void 0?void 0:e.variant??e.enabled,nSo=e=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};function o6c(){return"CompressionStream"in globalThis}async function V7r(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 q7r="0123456789abcdef",G7r=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+=q7r.charAt(this.bytes[r]>>>4),t+=q7r.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+=q7r.charAt(this.bytes[r]>>>4),t+=q7r.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}},iSo=class{constructor(t){this.timestamp=0,this.counter=0,this.random=t??FUd()}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 G7r.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,G7r.ofInner(t)}},FUd=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),s6c,uCe=()=>kUd().toString(),kUd=()=>(s6c||(s6c=new iSo)).generate();var c6=(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 NUd=["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"],a6c=function(e,t=[]){if(!e)return!1;let r=e.toLowerCase();return NUd.concat(t).some(n=>{let i=n.toLowerCase();return r.indexOf(i)!==-1})};var QUd=Array.isArray,c6c=Object.prototype,LZ0=c6c.hasOwnProperty,oSo=c6c.toString,sSo=QUd||function(e){return oSo.call(e)==="[object Array]"};var aSo=e=>e===Object(e)&&!sSo(e);var V_t=e=>e===void 0,q_t=e=>oSo.call(e)=="[object String]",u6c=e=>q_t(e)&&e.trim().length===0;var l6c=e=>oSo.call(e)=="[object Number]"&&e===e;var cSo=e=>e instanceof Error;function W7r(e){return e===null||typeof e!="object"}function cze(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function p6c(e){return cze(e,"ErrorEvent")}function Not(e){return typeof Event<"u"&&MUd(e,Event)}function f6c(e){return cze(e,"Object")}function MUd(e,t){try{return e instanceof t}catch{return!1}}function G_t(e,t,r,n,i){return t>r&&(n.warn("min cannot be greater than max."),t=r),l6c(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),G_t(i||r,t,r,n))}var LUd=864e5,H7r=class{constructor(t){this._buckets={},this._onBucketRateLimited=t._onBucketRateLimited,this._bucketSize=G_t(t.bucketSize,0,100,t._logger),this._refillRate=G_t(t.refillRate,0,this._bucketSize,t._logger),this._refillInterval=G_t(t.refillInterval,0,LUd,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 K7r=class{add(t){let r=uCe();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 zUd(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var d6c=(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=>d6c(`${e} ${o}`,t,r)}},UUd=e=>e();function m6c(e,t=UUd){return d6c(e,t,zUd())}var Qot="Mobile",Y7r="iOS",jot="Android",h6c="Tablet",XZ0=jot+" "+h6c;var _Ud="Apple",ZZ0=_Ud+" Watch",g6c="Safari",X7r="BlackBerry",A6c="Samsung",VUd=A6c+"Browser",qUd=A6c+" Internet",Z7r="Chrome",GUd=Z7r+" OS",WUd=Z7r+" "+Y7r,y6c="Internet Explorer",HUd=y6c+" "+Qot,lSo="Opera",$Z0=lSo+" Mini",b6c="Edge",KUd="Microsoft "+b6c,pSo="Firefox",JUd=pSo+" "+Y7r,fSo="Nintendo",dSo="PlayStation",J7r="Xbox",YUd=jot+" "+Qot,XUd=Qot+" "+g6c,W_t="Windows",ZUd=W_t+" Phone";var E6c="Generic",e$0=E6c+" "+Qot.toLowerCase(),t$0=E6c+" "+h6c.toLowerCase(),$Ud="Konqueror",Bk="(\\d+(\\.\\d+)?)",uSo=new RegExp("Version/"+Bk),r$0=new RegExp(J7r,"i"),n$0=new RegExp(dSo+" \\w+","i"),i$0=new RegExp(fSo+" \\w+","i"),e_d=new RegExp(X7r+"|PlayBook|BB10","i"),t_d={"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 o$0={[HUd]:[new RegExp("rv:"+Bk)],[KUd]:[new RegExp(b6c+"?\\/"+Bk)],[Z7r]:[new RegExp("("+Z7r+"|CrMo)\\/"+Bk)],[WUd]:[new RegExp("CriOS\\/"+Bk)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+Bk)],[g6c]:[uSo],[XUd]:[uSo],[lSo]:[new RegExp("("+lSo+"|OPR)\\/"+Bk)],[pSo]:[new RegExp(pSo+"\\/"+Bk)],[JUd]:[new RegExp("FxiOS\\/"+Bk)],[$Ud]:[new RegExp("Konqueror[:/]?"+Bk,"i")],[X7r]:[new RegExp(X7r+" "+Bk),uSo],[YUd]:[new RegExp("android\\s"+Bk,"i")],[qUd]:[new RegExp(VUd+"\\/"+Bk)],[y6c]:[new RegExp("(rv:|MSIE )"+Bk)],Mozilla:[new RegExp("rv:"+Bk)]};var s$0=[[new RegExp(J7r+"; "+J7r+" (.*?)[);]","i"),e=>[J7r,e&&e[1]||""]],[new RegExp(fSo,"i"),[fSo,""]],[new RegExp(dSo,"i"),[dSo,""]],[e_d,[X7r,""]],[new RegExp(W_t,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[ZUd,""];if(new RegExp(Qot).test(t)&&!/IEMobile\b/.test(t))return[W_t+" "+Qot,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let n=r[1],i=t_d[n]||"";return/arm/i.test(t)&&(i="RT"),[W_t,i]}return[W_t,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,e=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[Y7r,t.join(".")]}return[Y7r,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,e=>{let t="";return e&&e.length>=3&&(t=V_t(e[2])?e[3]:e[2]),["watchOS",t]}],[new RegExp("("+jot+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+jot+")","i"),e=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[jot,t.join(".")]}return[jot,""]}],[/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/,[GUd,""]],[/Linux|debian/i,["Linux",""]]];var v6c="utf8";function I6c(e,t){if(!e||typeof e!="string"||r_d(e))throw new Error(t)}function r_d(e){return e.trim().length===0}function C6c(e){return e?.replace(/\/+$/,"")}async function w6c(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 $7r(){return new Date().toISOString()}function Bfe(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}var x6c=e=>e instanceof Error;function mSo(e){return Promise.all(e.map(t=>(t??Promise.resolve()).then(r=>({status:"fulfilled",value:r}),r=>({status:"rejected",reason:r}))))}var eqr=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 uze=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()}},Mot=class extends Error{constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};async function S6c(e){if(e instanceof uze){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 hSo(e){return typeof e=="object"&&(e instanceof uze||e instanceof Mot)}function T6c(e){return typeof e=="object"&&e instanceof uze&&e.status===413}var H_t=class{constructor(t,r={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new K7r,this._events=new eqr,this._isInitialized=!1,I6c(t,"You must pass your PostHog project's api key."),this.apiKey=t,this.host=C6c(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:hSo},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=m6c("[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=!o6c()||(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(c6.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(c6.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(c6.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:rSo(p)})).catch(p=>(this._events.emit("error",p),{success:!1,error:this.categorizeRequestError(p)}))}categorizeRequestError(t){if(t instanceof uze)return{type:"api_error",statusCode:t.status};if(t instanceof Mot){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=__t(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(c6.Props)),this._props||{}}set props(t){this._props=t}async register(t){this.wrap(()=>{this.props={...this.props,...t},this.setPersistedProperty(c6.Props,this.props)})}async unregister(t){this.wrap(()=>{delete this.props[t],this.setPersistedProperty(c6.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(c6.Queue)||[];o.length>=this.maxQueueSize&&(o.shift(),this._logger.info("Queue is full, the oldest event is dropped.")),o.push({message:i}),this.setPersistedProperty(c6.Queue,o),this._events.emit(t,i),o.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=Bfe(()=>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:$7r()};this.historicalMigration&&(o.historical_migration=!0);let s=JSON.stringify(o),a=`${this.host}/batch/`,c=this.disableCompression?null:await V7r(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:$7r(),uuid:n?.uuid?n.uuid:uCe()};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 S6c(t)})}async flush(){let t=mSo([this.flushPromise]).then(()=>this._flush());return this.flushPromise=t,this.addPendingPromise(t),mSo([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(c6.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(c6.Queue)||[]).slice(i.length);this.setPersistedProperty(c6.Queue,m),t=m,await this.flushStorage()},a={api_key:this.apiKey,batch:o,sent_at:$7r()};this.historicalMigration&&(a.historical_migration=!0);let c=JSON.stringify(a),u=`${this.host}/batch/`,l=this.disableCompression?null:await V7r(c,this.isDebug),p={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...l!==null&&{"Content-Encoding":"gzip"}},body:l||c},d={retryCheck:f=>T6c(f)?!1:hSo(f)};try{await this.fetchWithRetry(u,p,d)}catch(f){if(T6c(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 Mot||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,v6c)}catch{o instanceof Blob?s=o.size:s=new TextEncoder().encode(o).length}return await w6c(async()=>{let a=new AbortController,c=i??this.requestTimeout,u=Bfe(()=>a.abort(),c),l=null;try{l=await this.fetch(t,{signal:a.signal,...r})}catch(d){throw new Mot(d)}finally{clearTimeout(u)}if(!(r.mode==="no-cors")&&(l.status<200||l.status>=400))throw new uze(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(c6.Queue)||[]).length===0||(await this.flush(),r)););}catch(o){if(!hSo(o))throw o;await S6c(o)}},i;try{return await Promise.race([new Promise((o,s)=>{i=Bfe(()=>{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 u6={};re(u6,{DOMExceptionCoercer:()=>bSo,ErrorCoercer:()=>ESo,ErrorEventCoercer:()=>vSo,ErrorPropertiesBuilder:()=>gSo,EventCoercer:()=>wSo,ObjectCoercer:()=>CSo,PrimitiveCoercer:()=>xSo,PromiseRejectionEventCoercer:()=>SSo,ReduceableCache:()=>TSo,StringCoercer:()=>ISo,chromeStackLineParser:()=>ASo,createDefaultStackParser:()=>A_d,createStackParser:()=>M6c,geckoStackLineParser:()=>ySo,nodeStackLineParser:()=>k6c,opera10StackLineParser:()=>D6c,opera11StackLineParser:()=>R6c,reverseAndStripFrames:()=>Q6c,winjsStackLineParser:()=>P6c});var tqr,B6c,rqr;function O6c(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);return rqr&&r.length===B6c||(B6c=r.length,rqr=r.reduce((n,i)=>{tqr||(tqr={});let o=tqr[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,tqr[i]=[u,l];break}}}return n},{})),rqr}var i_d=4,gSo=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&&sSo(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:O6c(this.stackParser),skipFirstLines:t.skipFirstLines??1}}buildCoercingContext(t,r,n=0){let i=(s,a)=>{if(a<=i_d){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 HO="?";function pee(e,t,r,n,i){let o={platform:e,filename:t,function:r==="<anonymous>"?HO:r,in_app:!0};return V_t(n)||(o.lineno=n),V_t(i)||(o.colno=i),o}var nqr=(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]:HO,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var o_d=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,s_d=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,a_d=/\((\S*)(?::(\d+))(?::(\d+))\)/,ASo=(e,t)=>{let r=o_d.exec(e);if(r){let[,i,o,s]=r;return pee(t,i,HO,+o,+s)}let n=s_d.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let a=a_d.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}let[o,s]=nqr(n[1]||HO,n[2]);return pee(t,s,o,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var c_d=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,u_d=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,ySo=(e,t)=>{let r=c_d.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let s=u_d.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]||HO;return[o,i]=nqr(o,i),pee(t,i,o,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var l_d=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,P6c=(e,t)=>{let r=l_d.exec(e);return r?pee(t,r[2],r[1]||HO,+r[3],r[4]?+r[4]:void 0):void 0};var p_d=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,D6c=(e,t)=>{let r=p_d.exec(e);return r?pee(t,r[2],r[3]||HO,+r[1]):void 0},f_d=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,R6c=(e,t)=>{let r=f_d.exec(e);return r?pee(t,r[5],r[3]||r[4]||HO,+r[1],+r[2]):void 0};var d_d=/^\s*[-]{4,}$/,m_d=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,k6c=(e,t)=>{let r=e.match(m_d);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||HO,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:F6c(r[3]),colno:F6c(r[4]),in_app:h_d(c||"",u),platform:t}}if(e.match(d_d))return{filename:e,platform:t}};function h_d(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 F6c(e){return parseInt(e||"",10)||void 0}var N6c=/\(error: (.*)\)/,j6c=50;function Q6c(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,j6c).map(r=>({...r,filename:r.filename||g_d(t).filename,function:r.function||HO}))}function g_d(e){return e[e.length-1]||{}}function A_d(){return M6c("web:javascript",ASo,ySo)}function M6c(e,...t){return(r,n=0)=>{let i=[],o=r.split(`
|
|
3225
|
-
`);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=N6c.test(a)?a.replace(N6c,"$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>=j6c)break}}return Q6c(i)}}var bSo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=q_t(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 cze(t,"DOMException")}isDOMError(t){return cze(t,"DOMError")}};var ESo=class{match(t){return cSo(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 vSo=class{constructor(){}match(t){return p6c(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 y_d=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,ISo=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(y_d);return i&&(r=i[1],n=i[2]),[r,n]}};var L6c=["fatal","error","warning","log","info","debug"];function iqr(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 CSo=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 Not(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=iqr(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return q_t(t)&&!u6c(t)&&L6c.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(x6c(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var wSo=class{match(t){return Not(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${iqr(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var xSo=class{match(t){return W7r(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var SSo=class{match(t){return cze(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!Not(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 W7r(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 TSo=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 _6c=require("fs"),V6c=require("readline"),oqr=new u6.ReduceableCache(25),q6c=new u6.ReduceableCache(20),BSo=7,b_d=1e3,E_d=1e4;async function G6c(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"||w_d(s)||x_d(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(q6c.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=T_d(o);if(s.every(c=>S_d(i,c)))continue;let a=B_d(oqr,i,{});n.push(v_d(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&I_d(e,oqr),oqr.reduce(),e}function v_d(e,t,r){return new Promise(n=>{let i=(0,_6c.createReadStream)(e),o=(0,V6c.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(){q6c.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]=O_d(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 I_d(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;C_d(r.lineno,r,n)}}function C_d(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=W6c(e);i<e;i++){let o=r[i];if(o===void 0)return void z6c(t);t.pre_context.push(o)}if(r[e]===void 0)return void z6c(t);t.context_line=r[e];let n=H6c(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 z6c(e){delete e.pre_context,delete e.context_line,delete e.post_context}function w_d(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function x_d(e){return e.lineno!==void 0&&e.lineno>E_d||e.colno!==void 0&&e.colno>b_d}function S_d(e,t){let r=oqr.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 T_d(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=U6c(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+BSo:(i.push(n),n=U6c(o)),t++}return i}function U6c(e){return[W6c(e),H6c(e)]}function W6c(e){return Math.max(1,e-BSo)}function H6c(e){return e+BSo}function B_d(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function O_d(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 P_d(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 K6c(e,t){globalThis.process?.on("uncaughtException",P_d(e,t))}function J6c(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var D_d=2e3,uH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new H7r({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return aSo(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()&&(K6c(this.onException.bind(this),this.onFatalError.bind(this)),J6c(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(D_d),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var Y6c="5.29.1";var K_t={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};async function X6c(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 R_d=6e4,F_d=1152921504606847e3,k_d=["is_not"],Lot=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},Wd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},fee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},sqr=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 fee||u instanceof Wd?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 fee||u instanceof Wd?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 Wd("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 Wd("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 Wd(`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 Wd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Wd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Wd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Wd(`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 Wd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new Wd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Wd(`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 fee)throw l;if(l instanceof Wd)a=!0;else throw l}if(c!==void 0)return c;if(a)throw new Wd("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"?rMc(c,i,this.cohorts,this.debugMode):u==="flag"?await this.evaluateFlagDependency(c,i,o):tMc(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await Z6c(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await Z6c(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(R_d,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 Lot(`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 Lot(`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 Lot(`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 Lot&&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=Bfe(()=>{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 Z6c(e,t,r=""){let n=await X6c(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/F_d}function tMc(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 Wd("Operator is_not_set is not supported")}else throw new Wd(`Property ${n} not found in propertyValues`);let s=t[n];if(s==null&&!k_d.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 $6c(String(i))&&String(s).match(String(i))!==null;case"not_regex":return $6c(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 Wd("Date operations cannot be performed on boolean values");let u=L_d(String(i));if(u==null&&(u=eMc(i)),u==null)throw new Wd(`Invalid date: ${i}`);let l=eMc(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return zV(KO(String(s)),KO(String(i)))===0;case"semver_neq":return zV(KO(String(s)),KO(String(i)))!==0;case"semver_gt":return zV(KO(String(s)),KO(String(i)))>0;case"semver_gte":return zV(KO(String(s)),KO(String(i)))>=0;case"semver_lt":return zV(KO(String(s)),KO(String(i)))<0;case"semver_lte":return zV(KO(String(s)),KO(String(i)))<=0;case"semver_tilde":{let u=KO(String(s)),{lower:l,upper:p}=j_d(String(i));return zV(u,l)>=0&&zV(u,p)<0}case"semver_caret":{let u=KO(String(s)),{lower:l,upper:p}=Q_d(String(i));return zV(u,l)>=0&&zV(u,p)<0}case"semver_wildcard":{let u=KO(String(s)),{lower:l,upper:p}=M_d(String(i));return zV(u,l)>=0&&zV(u,p)<0}default:throw new Wd(`Unknown operator: ${o}`)}}function N_d(e,t){if(!(e in t))throw new fee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function rMc(e,t,r,n=!1){let i=String(e.value);N_d(i,r);let o=r[i];return nMc(o,t,r,n)}function nMc(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=nMc(a,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof fee)throw c;if(c instanceof Wd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Wd("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=rMc(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=tMc(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 fee)throw c;if(c instanceof Wd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Wd("can't match cohort without a given cohort property value");return i==="AND"}function $6c(e){try{return new RegExp(e),!0}catch{return!1}}function KO(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new Wd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>{if(c===void 0||c==="")return 0;if(!/^\d+$/.test(c))throw new Wd(`Invalid semver: ${e}`);return parseInt(c,10)},o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function zV(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 j_d(e){let t=KO(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function Q_d(e){let t=KO(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 M_d(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new Wd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=parseInt(n[0],10);if(isNaN(i))throw new Wd(`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 Wd(`Invalid wildcard semver: ${e}`);o=[i,a,0],s=[i,a+1,0]}return{lower:o,upper:s}}function eMc(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 Wd(`${e} is in an invalid date format`)}throw new Wd(`The date provided ${e} must be a string, number, or date object`)}function L_d(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 aqr=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var z_d=100,iMc=3e4,U_d=5e4,__d=50,V_d=500,cqr=class extends H_t{constructor(t,r={}){if(super(t,r),this._memoryStorage=new aqr,this.options=r,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof r.featureFlagsPollingInterval=="number"?Math.max(r.featureFlagsPollingInterval,z_d):iMc,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 sqr({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 uH(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||U_d}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??V_d,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??__d;this._waitUntilCycle.timer=Bfe(()=>{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 Y6c}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=iMc){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 B=this._flagOverrides[t];if(B===void 0)return;let O=this._payloadOverrides?.[t];return{key:t,enabled:B!==!1,variant:typeof B=="string"?B:void 0,payload:O}}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,y,I,w,C;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let B=this.featureFlagsPoller?.featureFlagsByKey[t];if(B)try{let O=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(B,d,{matchValue:i});if(O){m=!0;let F=O.value;I=B.id,C="Evaluated locally",f={key:t,enabled:F!==!1,variant:typeof F=="string"?F:void 0,payload:O.payload??void 0}}}catch(O){if(O instanceof fee||O instanceof Wd)this._logger?.info(`${O.name} when computing flag locally: ${t}: ${O.message}`);else throw O}}if(!m&&!c){let B=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(B===void 0)y=K_t.UNKNOWN_ERROR;else{h=B.requestId,A=B.evaluatedAt;let O=[];B.errorsWhileComputingFlags&&O.push(K_t.ERRORS_WHILE_COMPUTING),B.quotaLimited?.includes("feature_flags")&&O.push(K_t.QUOTA_LIMITED);let F=B.flags[t];if(F===void 0)O.push(K_t.FLAG_MISSING);else{I=F.metadata?.id,w=F.metadata?.version,C=F.reason?.description??F.reason?.code;let P;if(F.metadata?.payload!==void 0)try{P=JSON.parse(F.metadata.payload)}catch{P=F.metadata.payload}f={key:t,enabled:F.enabled,variant:F.variant,payload:P}}O.length>0&&(y=O.join(","))}}if(o){let B=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,O=`${t}_${B}`;if(!(r in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[r].includes(O)){Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(O):this.distinctIdHasSentFlagCalls[r]=[O];let F={$feature_flag:t,$feature_flag_response:B,$feature_flag_id:I,$feature_flag_version:w,$feature_flag_reason:C,locally_evaluated:m,[`$feature/${t}`]:B,$feature_flag_request_id:h,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let P=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();P!==void 0&&(F.$feature_flag_definitions_loaded_at=P)}y&&(F.$feature_flag_error=y),this.capture({distinctId:r,event:"$feature_flag_called",properties:F,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 y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...y.flags||{}},h={...h,...y.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=Bfe(()=>{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(f6c(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(!uH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");this.addPendingPromise(uH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.capture({...s,uuid:i})))}}async captureExceptionImmediate(t,r,n){if(!uH.isPreviouslyCapturedError(t)){let i=new Error("PostHog syntheticException");return this.addPendingPromise(uH.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=uCe(),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[I,w]of Object.entries(h))A[`$feature/${I}`]=w;let y=Object.keys(h||{}).filter(I=>h?.[I]!==!1).sort();return y.length>0&&(A.$active_feature_flags=y),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"&&a6c(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 oMc=require("async_hooks"),uqr=class{constructor(){this.storage=new oMc.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 sMc="posthog-node";function q_d(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[OSo.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 OSo=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=sMc,this.name=sMc,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(q_d(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};uH.errorPropertiesBuilder=new u6.ErrorPropertiesBuilder([new u6.EventCoercer,new u6.ErrorCoercer,new u6.ObjectCoercer,new u6.StringCoercer,new u6.PrimitiveCoercer],u6.createStackParser("node:javascript",u6.nodeStackLineParser),[r6c(),G6c]);var lCe=class extends cqr{getLibraryId(){return"posthog-node"}initializeContext(){return new uqr}};var lqr=class{posthog;constructor({posthogApiKey:t}){this.posthog=new lCe(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.37.1",usingAccessToken:!0,...Jae()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var J_t=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};tr();var zot=require("fs/promises"),aMc=require("os"),cMc=require("path");var G_d="id",W_d=".fern",Y_t=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new lCe(r),this.userId=t==null?void 0:Z0o(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.37.1",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...Jae()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}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 Gf({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=KQ(),r=$e(Ht.of((0,aMc.homedir)()),ke.of(W_d),ke.of(G_d));try{await or(r)?this.persistedDistinctId=(await(0,zot.readFile)(r)).toString():(await(0,zot.mkdir)((0,cMc.dirname)(r),{recursive:!0}),await(0,zot.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var PSo;async function X_t(){return PSo==null&&(PSo=await H_d()),PSo}async function H_d(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new J_t;let r=await iit();return r!=null?new Y_t({token:r,posthogApiKey:e}):await wV()!=null?new lqr({posthogApiKey:e}):new Y_t({token:void 0,posthogApiKey:e})}catch{return new J_t}}jt();Ut();var Z_t=we(require("process"),1);i9e();var pMc=we(ado(),1),fMc=we(lMc(),1);function cT(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=WG(e),e.length===0))return 0;e=e.replace((0,fMc.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(pMc.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}function pqr(e){let t=0;for(let r of e.split(`
|
|
3225
|
+
`);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=N6c.test(a)?a.replace(N6c,"$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>=j6c)break}}return Q6c(i)}}var bSo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=q_t(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 cze(t,"DOMException")}isDOMError(t){return cze(t,"DOMError")}};var ESo=class{match(t){return cSo(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 vSo=class{constructor(){}match(t){return p6c(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 y_d=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,ISo=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(y_d);return i&&(r=i[1],n=i[2]),[r,n]}};var L6c=["fatal","error","warning","log","info","debug"];function iqr(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 CSo=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 Not(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=iqr(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return q_t(t)&&!u6c(t)&&L6c.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(x6c(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var wSo=class{match(t){return Not(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${iqr(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var xSo=class{match(t){return W7r(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var SSo=class{match(t){return cze(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!Not(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 W7r(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 TSo=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 _6c=require("fs"),V6c=require("readline"),oqr=new u6.ReduceableCache(25),q6c=new u6.ReduceableCache(20),BSo=7,b_d=1e3,E_d=1e4;async function G6c(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"||w_d(s)||x_d(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(q6c.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=T_d(o);if(s.every(c=>S_d(i,c)))continue;let a=B_d(oqr,i,{});n.push(v_d(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&I_d(e,oqr),oqr.reduce(),e}function v_d(e,t,r){return new Promise(n=>{let i=(0,_6c.createReadStream)(e),o=(0,V6c.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(){q6c.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]=O_d(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 I_d(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;C_d(r.lineno,r,n)}}function C_d(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=W6c(e);i<e;i++){let o=r[i];if(o===void 0)return void z6c(t);t.pre_context.push(o)}if(r[e]===void 0)return void z6c(t);t.context_line=r[e];let n=H6c(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 z6c(e){delete e.pre_context,delete e.context_line,delete e.post_context}function w_d(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function x_d(e){return e.lineno!==void 0&&e.lineno>E_d||e.colno!==void 0&&e.colno>b_d}function S_d(e,t){let r=oqr.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 T_d(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=U6c(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+BSo:(i.push(n),n=U6c(o)),t++}return i}function U6c(e){return[W6c(e),H6c(e)]}function W6c(e){return Math.max(1,e-BSo)}function H6c(e){return e+BSo}function B_d(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function O_d(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 P_d(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 K6c(e,t){globalThis.process?.on("uncaughtException",P_d(e,t))}function J6c(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var D_d=2e3,uH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new H7r({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return aSo(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()&&(K6c(this.onException.bind(this),this.onFatalError.bind(this)),J6c(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(D_d),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var Y6c="5.29.1";var K_t={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};async function X6c(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 R_d=6e4,F_d=1152921504606847e3,k_d=["is_not"],Lot=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},Wd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},fee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},sqr=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 fee||u instanceof Wd?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 fee||u instanceof Wd?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 Wd("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 Wd("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 Wd(`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 Wd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Wd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Wd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Wd(`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 Wd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new Wd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Wd(`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 fee)throw l;if(l instanceof Wd)a=!0;else throw l}if(c!==void 0)return c;if(a)throw new Wd("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"?rMc(c,i,this.cohorts,this.debugMode):u==="flag"?await this.evaluateFlagDependency(c,i,o):tMc(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await Z6c(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await Z6c(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(R_d,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 Lot(`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 Lot(`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 Lot(`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 Lot&&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=Bfe(()=>{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 Z6c(e,t,r=""){let n=await X6c(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/F_d}function tMc(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 Wd("Operator is_not_set is not supported")}else throw new Wd(`Property ${n} not found in propertyValues`);let s=t[n];if(s==null&&!k_d.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 $6c(String(i))&&String(s).match(String(i))!==null;case"not_regex":return $6c(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 Wd("Date operations cannot be performed on boolean values");let u=L_d(String(i));if(u==null&&(u=eMc(i)),u==null)throw new Wd(`Invalid date: ${i}`);let l=eMc(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return zV(KO(String(s)),KO(String(i)))===0;case"semver_neq":return zV(KO(String(s)),KO(String(i)))!==0;case"semver_gt":return zV(KO(String(s)),KO(String(i)))>0;case"semver_gte":return zV(KO(String(s)),KO(String(i)))>=0;case"semver_lt":return zV(KO(String(s)),KO(String(i)))<0;case"semver_lte":return zV(KO(String(s)),KO(String(i)))<=0;case"semver_tilde":{let u=KO(String(s)),{lower:l,upper:p}=j_d(String(i));return zV(u,l)>=0&&zV(u,p)<0}case"semver_caret":{let u=KO(String(s)),{lower:l,upper:p}=Q_d(String(i));return zV(u,l)>=0&&zV(u,p)<0}case"semver_wildcard":{let u=KO(String(s)),{lower:l,upper:p}=M_d(String(i));return zV(u,l)>=0&&zV(u,p)<0}default:throw new Wd(`Unknown operator: ${o}`)}}function N_d(e,t){if(!(e in t))throw new fee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function rMc(e,t,r,n=!1){let i=String(e.value);N_d(i,r);let o=r[i];return nMc(o,t,r,n)}function nMc(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=nMc(a,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof fee)throw c;if(c instanceof Wd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Wd("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=rMc(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=tMc(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 fee)throw c;if(c instanceof Wd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Wd("can't match cohort without a given cohort property value");return i==="AND"}function $6c(e){try{return new RegExp(e),!0}catch{return!1}}function KO(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new Wd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>{if(c===void 0||c==="")return 0;if(!/^\d+$/.test(c))throw new Wd(`Invalid semver: ${e}`);return parseInt(c,10)},o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function zV(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 j_d(e){let t=KO(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function Q_d(e){let t=KO(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 M_d(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new Wd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=parseInt(n[0],10);if(isNaN(i))throw new Wd(`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 Wd(`Invalid wildcard semver: ${e}`);o=[i,a,0],s=[i,a+1,0]}return{lower:o,upper:s}}function eMc(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 Wd(`${e} is in an invalid date format`)}throw new Wd(`The date provided ${e} must be a string, number, or date object`)}function L_d(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 aqr=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var z_d=100,iMc=3e4,U_d=5e4,__d=50,V_d=500,cqr=class extends H_t{constructor(t,r={}){if(super(t,r),this._memoryStorage=new aqr,this.options=r,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof r.featureFlagsPollingInterval=="number"?Math.max(r.featureFlagsPollingInterval,z_d):iMc,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 sqr({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 uH(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||U_d}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??V_d,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??__d;this._waitUntilCycle.timer=Bfe(()=>{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 Y6c}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=iMc){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 B=this._flagOverrides[t];if(B===void 0)return;let O=this._payloadOverrides?.[t];return{key:t,enabled:B!==!1,variant:typeof B=="string"?B:void 0,payload:O}}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,y,I,w,C;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let B=this.featureFlagsPoller?.featureFlagsByKey[t];if(B)try{let O=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(B,d,{matchValue:i});if(O){m=!0;let F=O.value;I=B.id,C="Evaluated locally",f={key:t,enabled:F!==!1,variant:typeof F=="string"?F:void 0,payload:O.payload??void 0}}}catch(O){if(O instanceof fee||O instanceof Wd)this._logger?.info(`${O.name} when computing flag locally: ${t}: ${O.message}`);else throw O}}if(!m&&!c){let B=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(B===void 0)y=K_t.UNKNOWN_ERROR;else{h=B.requestId,A=B.evaluatedAt;let O=[];B.errorsWhileComputingFlags&&O.push(K_t.ERRORS_WHILE_COMPUTING),B.quotaLimited?.includes("feature_flags")&&O.push(K_t.QUOTA_LIMITED);let F=B.flags[t];if(F===void 0)O.push(K_t.FLAG_MISSING);else{I=F.metadata?.id,w=F.metadata?.version,C=F.reason?.description??F.reason?.code;let P;if(F.metadata?.payload!==void 0)try{P=JSON.parse(F.metadata.payload)}catch{P=F.metadata.payload}f={key:t,enabled:F.enabled,variant:F.variant,payload:P}}O.length>0&&(y=O.join(","))}}if(o){let B=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,O=`${t}_${B}`;if(!(r in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[r].includes(O)){Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(O):this.distinctIdHasSentFlagCalls[r]=[O];let F={$feature_flag:t,$feature_flag_response:B,$feature_flag_id:I,$feature_flag_version:w,$feature_flag_reason:C,locally_evaluated:m,[`$feature/${t}`]:B,$feature_flag_request_id:h,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let P=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();P!==void 0&&(F.$feature_flag_definitions_loaded_at=P)}y&&(F.$feature_flag_error=y),this.capture({distinctId:r,event:"$feature_flag_called",properties:F,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 y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...y.flags||{}},h={...h,...y.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=Bfe(()=>{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(f6c(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(!uH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");this.addPendingPromise(uH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.capture({...s,uuid:i})))}}async captureExceptionImmediate(t,r,n){if(!uH.isPreviouslyCapturedError(t)){let i=new Error("PostHog syntheticException");return this.addPendingPromise(uH.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=uCe(),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[I,w]of Object.entries(h))A[`$feature/${I}`]=w;let y=Object.keys(h||{}).filter(I=>h?.[I]!==!1).sort();return y.length>0&&(A.$active_feature_flags=y),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"&&a6c(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 oMc=require("async_hooks"),uqr=class{constructor(){this.storage=new oMc.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 sMc="posthog-node";function q_d(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[OSo.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 OSo=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=sMc,this.name=sMc,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(q_d(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};uH.errorPropertiesBuilder=new u6.ErrorPropertiesBuilder([new u6.EventCoercer,new u6.ErrorCoercer,new u6.ObjectCoercer,new u6.StringCoercer,new u6.PrimitiveCoercer],u6.createStackParser("node:javascript",u6.nodeStackLineParser),[r6c(),G6c]);var lCe=class extends cqr{getLibraryId(){return"posthog-node"}initializeContext(){return new uqr}};var lqr=class{posthog;constructor({posthogApiKey:t}){this.posthog=new lCe(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.37.2",usingAccessToken:!0,...Jae()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var J_t=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};tr();var zot=require("fs/promises"),aMc=require("os"),cMc=require("path");var G_d="id",W_d=".fern",Y_t=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new lCe(r),this.userId=t==null?void 0:Z0o(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.37.2",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...Jae()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}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 Gf({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=KQ(),r=$e(Ht.of((0,aMc.homedir)()),ke.of(W_d),ke.of(G_d));try{await or(r)?this.persistedDistinctId=(await(0,zot.readFile)(r)).toString():(await(0,zot.mkdir)((0,cMc.dirname)(r),{recursive:!0}),await(0,zot.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var PSo;async function X_t(){return PSo==null&&(PSo=await H_d()),PSo}async function H_d(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new J_t;let r=await iit();return r!=null?new Y_t({token:r,posthogApiKey:e}):await wV()!=null?new lqr({posthogApiKey:e}):new Y_t({token:void 0,posthogApiKey:e})}catch{return new J_t}}jt();Ut();var Z_t=we(require("process"),1);i9e();var pMc=we(ado(),1),fMc=we(lMc(),1);function cT(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=WG(e),e.length===0))return 0;e=e.replace((0,fMc.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(pMc.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}function pqr(e){let t=0;for(let r of e.split(`
|
|
3226
3226
|
`))t=Math.max(t,cT(r));return t}var RMc=we(RSo(),1);var J_d=/[\p{Lu}]/u,Y_d=/[\p{Ll}]/u,hMc=/^[\p{Lu}](?![\p{Lu}])/gu,yMc=/([\p{Alpha}\p{N}_]|$)/u,FSo=/[_.\- ]+/,X_d=new RegExp("^"+FSo.source),gMc=new RegExp(FSo.source+yMc.source,"gu"),AMc=new RegExp("\\d+"+yMc.source,"gu"),Z_d=(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&&J_d.test(u)?(e=e.slice(0,c)+"-"+e.slice(c),i=!1,s=o,o=!0,c++):o&&s&&Y_d.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},$_d=(e,t)=>(hMc.lastIndex=0,e.replace(hMc,r=>t(r))),eVd=(e,t)=>(gMc.lastIndex=0,AMc.lastIndex=0,e.replace(gMc,(r,n)=>t(n)).replace(AMc,r=>t(r)));function kSo(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?FSo.test(e)?"":t.pascalCase?n(e):r(e):(e!==r(e)&&(e=Z_d(e,r,n,t.preserveConsecutiveUppercase)),e=e.replace(X_d,""),e=t.preserveConsecutiveUppercase?$_d(e,r):r(e),t.pascalCase&&(e=n(e.charAt(0))+e.slice(1)),eVd(e,n))}var MSo=we(EMc(),1);i9e();var vMc=(e=0)=>t=>`\x1B[${t+e}m`,IMc=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,CMc=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,nE={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]}},grE=Object.keys(nE.modifier),iVd=Object.keys(nE.color),oVd=Object.keys(nE.bgColor),ArE=[...iVd,...oVd];function sVd(){let e=new Map;for(let[t,r]of Object.entries(nE)){for(let[n,i]of Object.entries(r))nE[n]={open:`\x1B[${i[0]}m`,close:`\x1B[${i[1]}m`},r[n]=nE[n],e.set(i[0],i[1]);Object.defineProperty(nE,t,{value:r,enumerable:!1})}return Object.defineProperty(nE,"codes",{value:e,enumerable:!1}),nE.color.close="\x1B[39m",nE.bgColor.close="\x1B[49m",nE.color.ansi=vMc(),nE.color.ansi256=IMc(),nE.color.ansi16m=CMc(),nE.bgColor.ansi=vMc(10),nE.bgColor.ansi256=IMc(10),nE.bgColor.ansi16m=CMc(10),Object.defineProperties(nE,{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=>nE.rgbToAnsi256(...nE.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)=>nE.ansi256ToAnsi(nE.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>nE.ansi256ToAnsi(nE.hexToAnsi256(t)),enumerable:!1}}),nE}var aVd=sVd(),wMc=aVd;var fqr=new Set(["\x1B","\x9B"]),cVd=39,jSo="\x07",TMc="[",uVd="]",BMc="m",QSo=`${uVd}8;;`,xMc=e=>`${fqr.values().next().value}${TMc}${e}${BMc}`,SMc=e=>`${fqr.values().next().value}${QSo}${e}${jSo}`,lVd=e=>e.split(" ").map(t=>cT(t)),NSo=(e,t,r)=>{let n=[...t],i=!1,o=!1,s=cT(WG(e[e.length-1]));for(let[a,c]of n.entries()){let u=cT(c);if(s+u<=r?e[e.length-1]+=c:(e.push(c),s=0),fqr.has(c)&&(i=!0,o=n.slice(a+1).join("").startsWith(QSo)),i){o?c===jSo&&(i=!1,o=!1):c===BMc&&(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())},pVd=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(cT(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},fVd=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i,o,s=lVd(e),a=[""];for(let[u,l]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let p=cT(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(""),NSo(a,l,t);continue}if(p+s[u]>t&&p>0&&s[u]>0){if(r.wordWrap===!1&&p<t){NSo(a,l,t);continue}a.push("")}if(p+s[u]>t&&r.wordWrap===!1){NSo(a,l,t);continue}a[a.length-1]+=l}r.trim!==!1&&(a=a.map(u=>pVd(u)));let c=[...a.join(`
|
|
3227
3227
|
`)];for(let[u,l]of c.entries()){if(n+=l,fqr.has(l)){let{groups:d}=new RegExp(`(?:\\${TMc}(?<code>\\d+)m|\\${QSo}(?<uri>.*)${jSo})`).exec(c.slice(u).join(""))||{groups:{}};if(d.code!==void 0){let f=Number.parseFloat(d.code);i=f===cVd?void 0:f}else d.uri!==void 0&&(o=d.uri.length===0?void 0:d.uri)}let p=wMc.codes.get(Number(i));c[u+1]===`
|
|
3228
3228
|
`?(o&&(n+=SMc("")),i&&p&&(n+=xMc(p))):l===`
|
|
@@ -3810,7 +3810,7 @@ Hint: Values starting with "@" (such as scoped npm packages) must be wrapped in
|
|
|
3810
3810
|
Add a 'docs:' section to your fern.yml to get started.`,code:k.Code.ConfigError});let o=await new NPe({context:t}).check({workspace:n,strict:r.strict}),s=new Set(o.mdxParseErrors.map(p=>p.displayRelativeFilepath)),a=new Set(o.mdxParseErrors.map(p=>p.rawMessage)),c=o.violations.filter(p=>!(s.size>0&&oDm(p,s,a))),u=o.hasErrors||r.strict&&o.hasWarnings;if(r.json){let p=this.buildJsonResponse({result:o,filteredViolations:c,hasErrors:u});if(t.stdout.info(JSON.stringify(p,null,2)),u)throw new k({code:k.Code.ValidationError});return}if(c.length>0)for(let p of c){let d=p.severity==="warning"?Ae.yellow:Ae.red;process.stderr.write(`${d(`${p.displayRelativeFilepath}:${p.line}:${p.column}: ${p.message}`)}
|
|
3811
3811
|
`)}let l=0;if(o.mdxParseErrors.length>0){for(let p of o.mdxParseErrors)t.stderr.info(`
|
|
3812
3812
|
${p.toString()}
|
|
3813
|
-
`);r.fix?l+=await Aei(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!eXn()&&await yei(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new V0t({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new k({code:k.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${Mr.warning} ${Ae.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(Ae.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${Mr.success} ${Ae.green("All checks passed")}`)}buildJsonResponse({result:t,filteredViolations:r,hasErrors:n}){let i={};return(r.length>0||t.mdxParseErrors.length>0)&&(i.docs=[...r.map(o=>Aee(o)),...t.mdxParseErrors.map(o=>({severity:"error",rule:o.code.code,filepath:o.displayRelativeFilepath,...o.line!=null?{line:o.line}:{},...o.column!=null?{column:o.column}:{},message:`[${o.code.code}] ${o.code.title}: ${o.rawMessage}`}))]),{success:!n,results:i}}};function oDm(e,t,r){if(!/failed to parse|failed to initialize/i.test(e.message))return!1;for(let n of r)if(n.length>0&&e.message.includes(n))return!0;for(let n of t){if(e.message.includes(n))return!0;let i=n.split("/").filter(Boolean);for(let o=i.length;o>=2;o--){let s=i.slice(i.length-o).join("/");if(e.message.includes(s))return!0}if(i.length===1){let o=i[0];if(o!=null&&e.message.includes(o))return!0}}return!1}function I_o(e){let t=new v_o;mi(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}).option("fix",{type:"boolean",description:"Automatically fix issues that have a known resolution",default:!1}))}Gb();Ut();var Epu=we(require("net"),1),vpu=we(require("os"),1),vei=class extends Error{constructor(t){super(`${t} is locked`)}},H0t={old:new Set,young:new Set},sDm=1e3*15,Ipu=new Set;var zqt,aDm=()=>{let e=vpu.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},ypu=e=>new Promise((t,r)=>{let n=Epu.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),bpu=async(e,t)=>{if(e.host||e.port===0)return ypu(e);for(let r of t)try{await ypu({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},cDm=e=>H0t.old.has(e)||H0t.young.has(e)||Ipu.has(e),uDm=function*(e){e&&(yield*e),yield 0};async function QPe(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??{};zqt===void 0&&(zqt=setTimeout(()=>{zqt=void 0,H0t.old=H0t.young,H0t.young=new Set},sDm),zqt.unref&&zqt.unref());let o=aDm();for(let s of uDm(t))try{if(r.has(s))continue;let a=await bpu({...i,port:s},o);for(;cDm(a);){if(s!==0)throw new vei(s);a=await bpu({...i,port:s},o)}return n?Ipu.add(a):H0t.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof vei))throw a}throw new Error("No available ports found")}Ut();var xpu=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,Cpu="docs.buildwithfern.com",wpu=62;function AUe(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)),xpu.test(t)}function Spu(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function Uqt({orgId:e,previewId:t}){let r=Spu(t),n=`${e}-preview-${r}.${Cpu}`;if(n.length<=wpu)return n;let i=`${e}-preview-`,o=wpu-i.length;if(o<8)throw new k({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:k.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${Cpu}`}jt();ag();tr();iS();Ut();var c7o=require("child_process"),GIu=we(x_o(),1),u7o=we(ati(),1),l7o=we(require("fs"),1),VUe=require("fs/promises"),WIu=we(require("http"),1),d7o=we(require("path"),1);var wgu=require("events"),fti=we(require("fs"),1),TUe=we(require("path"),1);var sgu=we(require("os"),1),agu=300,qPe=20,fGt=1e7,cgu=sgu.default.platform();var wQm=cgu==="darwin",qVo=cgu==="win32",GPe=wQm||qVo,ugu=3e3,lgu=2e4,GVo=1250;var bie;(function(e){e[e.DIR=1]="DIR",e[e.FILE=2]="FILE"})(bie||(bie={}));var SUe;(function(e){e.CHANGE="change",e.RENAME="rename"})(SUe||(SUe={}));var dGt;(function(e){e.CHANGE="change",e.ERROR="error"})(dGt||(dGt={}));var Wc;(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"})(Wc||(Wc={}));var FN;(function(e){e.ALL="all",e.CLOSE="close",e.ERROR="error",e.READY="ready"})(FN||(FN={}));var xQm=(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(),x=C-c,B=C-u,O=x>=t||B>=o;return[C,O]},p=C=>{if(u=C,!s)return;let x=s;s=void 0,e.apply(void 0,x)},d=()=>{I(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,x]=l();return x?h(C):y(C)},y=C=>{let x=C-c,B=C-u,O=t-x,F=o-B,P=Math.min(O,F);return I(P)},I=C=>{a&&clearTimeout(a),!(C<=0)&&(a=setTimeout(A,C))},w=(...C)=>{let[x,B]=l(),O=!!a;if(s=C,c=x,(B||!a)&&I(t),B)return O?p(x):m(x)};return w.cancel=d,w.flush=f,w},cti=xQm;var JVo=we(require("fs"),1),lti=we(require("path"),1);var Jd=we(require("fs"),1),pP=require("util");var $de=(e,t)=>function(...n){return e.apply(void 0,n).catch(t)},Eie=(e,t)=>function(...n){try{return e.apply(void 0,n)}catch(i){return t(i)}};var WVo=we(require("process"),1),pgu=WVo.default.getuid?!WVo.default.getuid():!1,fgu=1e4,BM=()=>{};var mGt={isChangeErrorOk:e=>{if(!mGt.isNodeError(e))return!1;let{code:t}=e;return t==="ENOSYS"||!pgu&&(t==="EINVAL"||t==="EPERM")},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!mGt.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(!mGt.isNodeError(e))throw e;if(!mGt.isChangeErrorOk(e))throw e}},DC=mGt;var HVo=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=fgu,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()}}}}},dgu=new HVo;var eme=(e,t)=>function(n){return function i(...o){return dgu.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)})}},tme=(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 SQm={attempt:{chmod:$de((0,pP.promisify)(Jd.default.chmod),DC.onChangeError),chown:$de((0,pP.promisify)(Jd.default.chown),DC.onChangeError),close:$de((0,pP.promisify)(Jd.default.close),BM),fsync:$de((0,pP.promisify)(Jd.default.fsync),BM),mkdir:$de((0,pP.promisify)(Jd.default.mkdir),BM),realpath:$de((0,pP.promisify)(Jd.default.realpath),BM),stat:$de((0,pP.promisify)(Jd.default.stat),BM),unlink:$de((0,pP.promisify)(Jd.default.unlink),BM),chmodSync:Eie(Jd.default.chmodSync,DC.onChangeError),chownSync:Eie(Jd.default.chownSync,DC.onChangeError),closeSync:Eie(Jd.default.closeSync,BM),existsSync:Eie(Jd.default.existsSync,BM),fsyncSync:Eie(Jd.default.fsync,BM),mkdirSync:Eie(Jd.default.mkdirSync,BM),realpathSync:Eie(Jd.default.realpathSync,BM),statSync:Eie(Jd.default.statSync,BM),unlinkSync:Eie(Jd.default.unlinkSync,BM)},retry:{close:eme((0,pP.promisify)(Jd.default.close),DC.isRetriableError),fsync:eme((0,pP.promisify)(Jd.default.fsync),DC.isRetriableError),open:eme((0,pP.promisify)(Jd.default.open),DC.isRetriableError),readFile:eme((0,pP.promisify)(Jd.default.readFile),DC.isRetriableError),rename:eme((0,pP.promisify)(Jd.default.rename),DC.isRetriableError),stat:eme((0,pP.promisify)(Jd.default.stat),DC.isRetriableError),write:eme((0,pP.promisify)(Jd.default.write),DC.isRetriableError),writeFile:eme((0,pP.promisify)(Jd.default.writeFile),DC.isRetriableError),closeSync:tme(Jd.default.closeSync,DC.isRetriableError),fsyncSync:tme(Jd.default.fsyncSync,DC.isRetriableError),openSync:tme(Jd.default.openSync,DC.isRetriableError),readFileSync:tme(Jd.default.readFileSync,DC.isRetriableError),renameSync:tme(Jd.default.renameSync,DC.isRetriableError),statSync:tme(Jd.default.statSync,DC.isRetriableError),writeSync:tme(Jd.default.writeSync,DC.isRetriableError),writeFileSync:tme(Jd.default.writeFileSync,DC.isRetriableError)}},mgu=SQm;var uti=we(require("fs"),1),hGt=we(require("path"),1);var KVo=()=>{};var TQm=()=>{let e=KVo,t=KVo,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}},hgu=TQm;var BQm=()=>{let{promise:e,resolve:t,isPending:r}=hgu(),n=0,i=()=>{n+=1},o=()=>{n-=1,!n&&t()};return i(),queueMicrotask(o),{promise:e,isPending:r,increment:i,decrement:o}},ggu=BQm;var Agu={then:e=>{e()}};var ygu=e=>Array.isArray(e)?e:[e],bgu=e=>typeof e=="function";var OQm=(e,t)=>{let r=t?.followSymlinks??!1,n=t?.depth??1/0,i=t?.limit??1/0,o=t?.ignore??[],s=ygu(o).map(oe=>bgu(oe)?oe:ae=>oe.test(ae)),a=oe=>s.some(ae=>ae(oe)),c=t?.signal??{aborted:!1},u=t?.onDirents||(()=>{}),l=[],p=new Set,d={},f=[],m=new Set,h={},A=[],y=new Set,I={},w={},C=new Set,x={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{},map:{}},B={directories:l,directoriesNames:p,directoriesNamesToPaths:d,files:f,filesNames:m,filesNamesToPaths:h,symlinks:A,symlinksNames:y,symlinksNamesToPaths:I,map:w},{promise:O,increment:F,decrement:P}=ggu(),U=0,X=(oe,ae,Se,ve)=>{C.has(ae)||U>=i||(U+=1,oe.directories.push(ae),oe.directoriesNames.add(Se),l.push(ae),p.add(Se),d.propertyIsEnumerable(Se)||(d[Se]=[]),d[Se].push(ae),C.add(ae),!(ve>=n)&&(U>=i||fe(ae,ve+1)))},$=(oe,ae,Se)=>{C.has(ae)||U>=i||(U+=1,oe.files.push(ae),oe.filesNames.add(Se),f.push(ae),m.add(Se),h.propertyIsEnumerable(Se)||(h[Se]=[]),h[Se].push(ae),C.add(ae))},ne=(oe,ae,Se,ve)=>{C.has(ae)||U>=i||(U+=1,oe.symlinks.push(ae),oe.symlinksNames.add(Se),A.push(ae),y.add(Se),I.propertyIsEnumerable(Se)||(I[Se]=[]),I[Se].push(ae),C.add(ae),r&&(ve>=n||U>=i||Le(ae,ve+1)))},le=(oe,ae,Se,ve,Qe)=>{c.aborted||a(ae)||(ve.isDirectory()?X(oe,ae,Se,Qe):ve.isFile()?$(oe,ae,Se):ve.isSymbolicLink()&&ne(oe,ae,Se,Qe))},ge=(oe,ae,Se,ve)=>{if(c.aborted)return;let Qe=ae===hGt.default.sep?"":hGt.default.sep,qe=Se.name,ut=`${ae}${Qe}${qe}`;a(ut)||(Se.isDirectory()?X(oe,ut,qe,ve):Se.isFile()?$(oe,ut,qe):Se.isSymbolicLink()&&ne(oe,ut,qe,ve))},me=(oe,ae,Se,ve)=>{for(let Qe=0,qe=Se.length;Qe<qe;Qe++)ge(oe,ae,Se[Qe],ve)},fe=(oe,ae)=>{c.aborted||ae>n||U>=i||(F(),uti.default.readdir(oe,{withFileTypes:!0},(Se,ve)=>{if(Se||c.aborted||!ve.length)return P();(u(ve)||Agu).then(()=>{let qe=w[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};me(qe,oe,ve,ae),P()})}))},Le=(oe,ae)=>{F(),uti.default.realpath(oe,(Se,ve)=>{if(Se||c.aborted)return P();uti.default.stat(ve,(Qe,qe)=>{if(Qe||c.aborted)return P();let ut=hGt.default.basename(ve),bt=w[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};le(bt,ve,ut,qe,ae),P()})})};return(async(oe,ae=1)=>(oe=hGt.default.normalize(oe),C.add(oe),fe(oe,ae),await O,c.aborted?x:B))(e)},Egu=OQm;var vie={lang:{debounce:cti,attempt:e=>{try{return e()}catch(t){return vie.lang.castError(t)}},castArray:e=>vie.lang.isArray(e)?e:[e],castError:e=>vie.lang.isError(e)?e:vie.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(vie.lang.isNaN(e))return vie.lang.isNaN(t);if(vie.lang.isPrimitive(e)||vie.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(lti.default.sep).length-1),getRealPath:(e,t)=>{try{return t?JVo.default.realpathSync.native(e):JVo.default.realpathSync(e)}catch{return}},isSubPath:(e,t)=>t.startsWith(e)&&t[e.length]===lti.default.sep&&t.length-e.length>lti.default.sep.length,poll:(e,t=lgu)=>mgu.retry.stat(t)(e,{bigint:!0}).catch(vie.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 Egu(e,{depth:r,limit:n,ignore:t,signal:i});return[s.directories,s.files]}}}},bp=vie;var pti=we(require("path"),1);var YVo=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||bp.fs.isSubPath(this.folderPath,t)}_makeHandlerBatched(t=agu){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=bp.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===Wc.CHANGE&&a===Wc.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===Wc.ADD_DIR?await this.eventsPopulateAddDir(t,i,r,n):s===Wc.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??qPe:Math.min(1,this.options.depth??qPe),s=this.options.limit??fGt,[a,c]=await bp.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())bp.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(Wc.ADD,t))}onTargetAddDir(t){t!==this.folderPath&&this.options.recursive&&!GPe&&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(Wc.ADD_DIR,t))}onTargetChange(t){this._isSubRoot(t)&&this.watcher.event(Wc.CHANGE,t)}onTargetUnlink(t){this.watcher.watchersClose(pti.default.dirname(t),t,!1),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlink(t,this.options.renameTimeout):this.watcher.event(Wc.UNLINK,t))}onTargetUnlinkDir(t){this.watcher.watchersClose(pti.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(Wc.UNLINK_DIR,t))}onTargetEvent(t){let[r,n]=t;r===Wc.ADD?this.onTargetAdd(n):r===Wc.ADD_DIR?this.onTargetAddDir(n):r===Wc.CHANGE?this.onTargetChange(n):r===Wc.UNLINK?this.onTargetUnlink(n):r===Wc.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=SUe.CHANGE,r){if(this.watcher.isClosed())return;let n=pti.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){qVo&&t.code==="EPERM"?this.onWatcherChange(SUe.CHANGE,""):this.watcher.error(t)}async init(){await this.initWatcherEvents(),await this.initInitialEvents()}async initWatcherEvents(){let t=this.onWatcherChange.bind(this);this.fswatcher.on(dGt.CHANGE,t);let r=this.onWatcherError.bind(this);this.fswatcher.on(dGt.ERROR,r)}async initInitialEvents(){let t=!this.watcher.isReady();if(this.filePath){if(this.watcher._poller.stats.has(this.filePath))return;await this.onWatcherEvent(SUe.CHANGE,this.filePath,t)}else{let r=this.options.recursive&&GPe&&this.options.native!==!1?this.options.depth??qPe:Math.min(1,this.options.depth??qPe),n=this.options.limit??fGt,[i,o]=await bp.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(SUe.CHANGE,a,t)}))}}},vgu=YVo;var kN={interval:100,intervalId:void 0,fns:new Map,init:()=>{kN.intervalId||(kN.intervalId=setInterval(kN.resolve,kN.interval))},reset:()=>{kN.intervalId&&(clearInterval(kN.intervalId),delete kN.intervalId)},add:(e,t)=>{kN.fns.set(e,Date.now()+t),kN.init()},remove:e=>{kN.fns.delete(e)},resolve:()=>{if(!kN.fns.size)return kN.reset();let e=Date.now();for(let[t,r]of kN.fns)r>=e||(kN.remove(t),t())}},gGt=kN;var AGt=class e{constructor(t){this._watcher=t,this.reset()}getLockAdd(t,r=GVo){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(bp.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),gGt.remove(u)},u=()=>{c(),a()};gGt.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=GVo){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),gGt.remove(u)},u=()=>{c(),a()};gGt.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,Wc.ADD,bie.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,Wc.ADD_DIR,bie.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,Wc.UNLINK,bie.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,Wc.UNLINK_DIR,bie.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}}};AGt.DIR_EVENTS={add:Wc.ADD_DIR,rename:Wc.RENAME_DIR,unlink:Wc.UNLINK_DIR};AGt.FILE_EVENTS={add:Wc.ADD,change:Wc.CHANGE,rename:Wc.RENAME,unlink:Wc.UNLINK};var Igu=AGt;var XVo=class{constructor(){this.map=new Map}clear(){this.map.clear()}delete(t,r){if(bp.lang.isUndefined(r))return this.map.delete(t);if(this.map.has(t)){let n=this.map.get(t);if(bp.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(bp.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(bp.lang.isUndefined(r))return this.map.has(t);if(this.map.has(t)){let n=this.map.get(t);return bp.lang.isSet(n)?n.has(r):n===r}return!1}set(t,r){if(this.map.has(t)){let n=this.map.get(t);bp.lang.isSet(n)?n.add(r):n!==r&&this.map.set(t,new Set([n,r]))}else this.map.set(t,r);return this}},ZVo=XVo;var $Vo=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}},Cgu=$Vo;var e5o=class{constructor(){this.inos={},this.paths=new ZVo,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 bp.fs.poll(t,r);if(!(!n||!(n.isFile()||n.isDirectory())))return new Cgu(n)}reset(){this.inos={},this.paths=new ZVo,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,Wc.ADD,i),[Wc.ADD];if(i.isDirectory())return this.updateIno(t,Wc.ADD_DIR,i),[Wc.ADD_DIR]}else if(n&&!i){if(n.isFile())return this.updateIno(t,Wc.UNLINK,n),[Wc.UNLINK];if(n.isDirectory())return this.updateIno(t,Wc.UNLINK_DIR,n),[Wc.UNLINK_DIR]}else if(n&&i){if(n.isFile()){if(i.isFile())return n.ino===i.ino&&!n.size&&!i.size?[]:(this.updateIno(t,Wc.CHANGE,i),[Wc.CHANGE]);if(i.isDirectory())return this.updateIno(t,Wc.UNLINK,n),this.updateIno(t,Wc.ADD_DIR,i),[Wc.UNLINK,Wc.ADD_DIR]}else if(n.isDirectory()){if(i.isFile())return this.updateIno(t,Wc.UNLINK_DIR,n),this.updateIno(t,Wc.ADD,i),[Wc.UNLINK_DIR,Wc.ADD];if(i.isDirectory())return n.ino===i.ino?[]:(this.updateIno(t,Wc.UNLINK_DIR,n),this.updateIno(t,Wc.ADD_DIR,i),[Wc.UNLINK_DIR,Wc.ADD_DIR])}}return[]}updateIno(t,r,n){let i=this.inos[r]=this.inos[r]||(this.inos[r]={}),o=n.isFile()?bie.FILE:bie.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)}}},t5o=e5o;var r5o=class e extends wgu.EventEmitter{constructor(t,r,n){super(),this._closed=!1,this._ready=!1,this._closeAborter=new AbortController,this._closeSignal=this._closeAborter.signal,this.on(FN.CLOSE,()=>this._closeAborter.abort()),this._closeWait=new Promise(i=>this.on(FN.CLOSE,i)),this._readyWait=new Promise(i=>this.on(FN.READY,i)),this._locker=new Igu(this),this._roots=new Set,this._poller=new t5o,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&&(bp.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(FN.CLOSE))}error(t){if(this.isClosed())return!1;let r=bp.lang.castError(t);return this.emit(FN.ERROR,r)}event(t,r,n){return this.isClosed()?!1:(this.emit(FN.ALL,t,r,n),this.emit(t,r,n))}ready(){return this.isClosed()||this.isReady()?!1:(this._ready=!0,this.emit(FN.READY))}pollerExists(t,r){for(let n of this._pollers)if(n.targetPath===t&&bp.lang.isShallowEqual(n.options,r))return!0;return!1}subwatcherExists(t,r){for(let n of this._subwatchers)if(n.targetPath===t&&bp.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)bp.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 vgu(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=bp.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=TUe.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??qPe))&&l.handler===n&&(!l.filePath||l.filePath===i)&&l.options.ignore===r.ignore&&!!l.options.native==!!r.native&&(!r.recursive||l.options.recursive&&GPe&&l.options.native!==!1)))return!0;if(!GPe)break;let u=TUe.default.dirname(t);if(s===u)break;s=u}return!1}async watchDirectories(t,r,n,i,o){if(this.isClosed())return;t=bp.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||GPe&&r.native!==!1?r:{...r,recursive:!1},l={watcher:fti.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=TUe.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||GPe&&r.native!==!1)return this.watchersLock(()=>this.watchDirectories([t],r,n,i,o));{r={...r,recursive:!0};let s=r.depth??qPe,a=r.limit??fGt,[c]=await bp.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=bp.fs.getDepth(t);for(let p of c){let d=bp.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(FN.CLOSE,c),s.watchFile(t,r,o)},c=()=>{this._subwatchers.delete(i),this.removeListener(FN.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=TUe.default.dirname(t);return this.watchDirectory(i,r,n,t)}async watchPollingOnce(t,r,n){if(this.isClosed())return;let i=!1,o=new t5o,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 bp.lang.noop;if(this.pollerExists(t,r))return bp.lang.noop;let i={...r,interval:r.pollingInterval??ugu},o={targetPath:t,options:r},s=()=>{this._pollers.add(o),this.on(FN.CLOSE,a),fti.default.watchFile(t,i,n)},a=()=>{this._pollers.delete(o),this.removeListener(FN.CLOSE,a),fti.default.unwatchFile(t,n)};return bp.lang.attempt(s),()=>bp.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=bp.lang.uniq(t).sort(),t.every((o,s)=>t.every((a,c)=>c===s||!bp.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=TUe.default.resolve(t),this.isIgnored(t,r.ignore)))return;let i=await bp.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=TUe.default.dirname(t);return(await bp.fs.poll(o,r.pollingTimeout))?.isDirectory()?this.watchUnknownChild(t,r,n):this.watchUnknownTarget(t,r,n)}}async watch(t,r,n=bp.lang.noop){if(bp.lang.isFunction(t))return this.watch([],{},t);if(bp.lang.isUndefined(t))return this.watch([],r,n);if(bp.lang.isFunction(r))return this.watch(t,{},r);if(bp.lang.isUndefined(r))return this.watch(t,{},n);if(this.isClosed())return;this.isReady()&&(r.readdirMap=void 0);let i=bp.lang.castArray(t);i.forEach(o=>this._roots.add(o)),await this.watchPaths(i,r,n),!this.isClosed()&&(n!==bp.lang.noop&&this.on(FN.ALL,n),r.readdirMap=void 0,this.ready())}},dti=r5o;Bti();tr();var G7=require("fs/promises"),OAu=require("os"),x5o=we(require("path"),1),rMm=".fern",nMm="logs",w5o=100*1024*1024;function iMm(){return"cli@5.37.1"}var FUe=class{logFilePath=null;initialized=!1;sessionStartTime;consoleLogger;constructor(){this.sessionStartTime=Date.now()}async initialize(t,r){if(this.initialized)return;this.consoleLogger=t;let n=r??$e($e(Ht.of((0,OAu.homedir)()),ke.of(rMm)),ke.of(nMm));await or(n)||await(0,G7.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=$e(n,ke.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${x5o.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
|
|
3813
|
+
`);r.fix?l+=await Aei(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!eXn()&&await yei(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new V0t({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new k({code:k.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${Mr.warning} ${Ae.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(Ae.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${Mr.success} ${Ae.green("All checks passed")}`)}buildJsonResponse({result:t,filteredViolations:r,hasErrors:n}){let i={};return(r.length>0||t.mdxParseErrors.length>0)&&(i.docs=[...r.map(o=>Aee(o)),...t.mdxParseErrors.map(o=>({severity:"error",rule:o.code.code,filepath:o.displayRelativeFilepath,...o.line!=null?{line:o.line}:{},...o.column!=null?{column:o.column}:{},message:`[${o.code.code}] ${o.code.title}: ${o.rawMessage}`}))]),{success:!n,results:i}}};function oDm(e,t,r){if(!/failed to parse|failed to initialize/i.test(e.message))return!1;for(let n of r)if(n.length>0&&e.message.includes(n))return!0;for(let n of t){if(e.message.includes(n))return!0;let i=n.split("/").filter(Boolean);for(let o=i.length;o>=2;o--){let s=i.slice(i.length-o).join("/");if(e.message.includes(s))return!0}if(i.length===1){let o=i[0];if(o!=null&&e.message.includes(o))return!0}}return!1}function I_o(e){let t=new v_o;mi(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}).option("fix",{type:"boolean",description:"Automatically fix issues that have a known resolution",default:!1}))}Gb();Ut();var Epu=we(require("net"),1),vpu=we(require("os"),1),vei=class extends Error{constructor(t){super(`${t} is locked`)}},H0t={old:new Set,young:new Set},sDm=1e3*15,Ipu=new Set;var zqt,aDm=()=>{let e=vpu.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},ypu=e=>new Promise((t,r)=>{let n=Epu.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),bpu=async(e,t)=>{if(e.host||e.port===0)return ypu(e);for(let r of t)try{await ypu({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},cDm=e=>H0t.old.has(e)||H0t.young.has(e)||Ipu.has(e),uDm=function*(e){e&&(yield*e),yield 0};async function QPe(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??{};zqt===void 0&&(zqt=setTimeout(()=>{zqt=void 0,H0t.old=H0t.young,H0t.young=new Set},sDm),zqt.unref&&zqt.unref());let o=aDm();for(let s of uDm(t))try{if(r.has(s))continue;let a=await bpu({...i,port:s},o);for(;cDm(a);){if(s!==0)throw new vei(s);a=await bpu({...i,port:s},o)}return n?Ipu.add(a):H0t.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof vei))throw a}throw new Error("No available ports found")}Ut();var xpu=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,Cpu="docs.buildwithfern.com",wpu=62;function AUe(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)),xpu.test(t)}function Spu(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function Uqt({orgId:e,previewId:t}){let r=Spu(t),n=`${e}-preview-${r}.${Cpu}`;if(n.length<=wpu)return n;let i=`${e}-preview-`,o=wpu-i.length;if(o<8)throw new k({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:k.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${Cpu}`}jt();ag();tr();iS();Ut();var c7o=require("child_process"),GIu=we(x_o(),1),u7o=we(ati(),1),l7o=we(require("fs"),1),VUe=require("fs/promises"),WIu=we(require("http"),1),d7o=we(require("path"),1);var wgu=require("events"),fti=we(require("fs"),1),TUe=we(require("path"),1);var sgu=we(require("os"),1),agu=300,qPe=20,fGt=1e7,cgu=sgu.default.platform();var wQm=cgu==="darwin",qVo=cgu==="win32",GPe=wQm||qVo,ugu=3e3,lgu=2e4,GVo=1250;var bie;(function(e){e[e.DIR=1]="DIR",e[e.FILE=2]="FILE"})(bie||(bie={}));var SUe;(function(e){e.CHANGE="change",e.RENAME="rename"})(SUe||(SUe={}));var dGt;(function(e){e.CHANGE="change",e.ERROR="error"})(dGt||(dGt={}));var Wc;(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"})(Wc||(Wc={}));var FN;(function(e){e.ALL="all",e.CLOSE="close",e.ERROR="error",e.READY="ready"})(FN||(FN={}));var xQm=(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(),x=C-c,B=C-u,O=x>=t||B>=o;return[C,O]},p=C=>{if(u=C,!s)return;let x=s;s=void 0,e.apply(void 0,x)},d=()=>{I(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,x]=l();return x?h(C):y(C)},y=C=>{let x=C-c,B=C-u,O=t-x,F=o-B,P=Math.min(O,F);return I(P)},I=C=>{a&&clearTimeout(a),!(C<=0)&&(a=setTimeout(A,C))},w=(...C)=>{let[x,B]=l(),O=!!a;if(s=C,c=x,(B||!a)&&I(t),B)return O?p(x):m(x)};return w.cancel=d,w.flush=f,w},cti=xQm;var JVo=we(require("fs"),1),lti=we(require("path"),1);var Jd=we(require("fs"),1),pP=require("util");var $de=(e,t)=>function(...n){return e.apply(void 0,n).catch(t)},Eie=(e,t)=>function(...n){try{return e.apply(void 0,n)}catch(i){return t(i)}};var WVo=we(require("process"),1),pgu=WVo.default.getuid?!WVo.default.getuid():!1,fgu=1e4,BM=()=>{};var mGt={isChangeErrorOk:e=>{if(!mGt.isNodeError(e))return!1;let{code:t}=e;return t==="ENOSYS"||!pgu&&(t==="EINVAL"||t==="EPERM")},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!mGt.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(!mGt.isNodeError(e))throw e;if(!mGt.isChangeErrorOk(e))throw e}},DC=mGt;var HVo=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=fgu,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()}}}}},dgu=new HVo;var eme=(e,t)=>function(n){return function i(...o){return dgu.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)})}},tme=(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 SQm={attempt:{chmod:$de((0,pP.promisify)(Jd.default.chmod),DC.onChangeError),chown:$de((0,pP.promisify)(Jd.default.chown),DC.onChangeError),close:$de((0,pP.promisify)(Jd.default.close),BM),fsync:$de((0,pP.promisify)(Jd.default.fsync),BM),mkdir:$de((0,pP.promisify)(Jd.default.mkdir),BM),realpath:$de((0,pP.promisify)(Jd.default.realpath),BM),stat:$de((0,pP.promisify)(Jd.default.stat),BM),unlink:$de((0,pP.promisify)(Jd.default.unlink),BM),chmodSync:Eie(Jd.default.chmodSync,DC.onChangeError),chownSync:Eie(Jd.default.chownSync,DC.onChangeError),closeSync:Eie(Jd.default.closeSync,BM),existsSync:Eie(Jd.default.existsSync,BM),fsyncSync:Eie(Jd.default.fsync,BM),mkdirSync:Eie(Jd.default.mkdirSync,BM),realpathSync:Eie(Jd.default.realpathSync,BM),statSync:Eie(Jd.default.statSync,BM),unlinkSync:Eie(Jd.default.unlinkSync,BM)},retry:{close:eme((0,pP.promisify)(Jd.default.close),DC.isRetriableError),fsync:eme((0,pP.promisify)(Jd.default.fsync),DC.isRetriableError),open:eme((0,pP.promisify)(Jd.default.open),DC.isRetriableError),readFile:eme((0,pP.promisify)(Jd.default.readFile),DC.isRetriableError),rename:eme((0,pP.promisify)(Jd.default.rename),DC.isRetriableError),stat:eme((0,pP.promisify)(Jd.default.stat),DC.isRetriableError),write:eme((0,pP.promisify)(Jd.default.write),DC.isRetriableError),writeFile:eme((0,pP.promisify)(Jd.default.writeFile),DC.isRetriableError),closeSync:tme(Jd.default.closeSync,DC.isRetriableError),fsyncSync:tme(Jd.default.fsyncSync,DC.isRetriableError),openSync:tme(Jd.default.openSync,DC.isRetriableError),readFileSync:tme(Jd.default.readFileSync,DC.isRetriableError),renameSync:tme(Jd.default.renameSync,DC.isRetriableError),statSync:tme(Jd.default.statSync,DC.isRetriableError),writeSync:tme(Jd.default.writeSync,DC.isRetriableError),writeFileSync:tme(Jd.default.writeFileSync,DC.isRetriableError)}},mgu=SQm;var uti=we(require("fs"),1),hGt=we(require("path"),1);var KVo=()=>{};var TQm=()=>{let e=KVo,t=KVo,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}},hgu=TQm;var BQm=()=>{let{promise:e,resolve:t,isPending:r}=hgu(),n=0,i=()=>{n+=1},o=()=>{n-=1,!n&&t()};return i(),queueMicrotask(o),{promise:e,isPending:r,increment:i,decrement:o}},ggu=BQm;var Agu={then:e=>{e()}};var ygu=e=>Array.isArray(e)?e:[e],bgu=e=>typeof e=="function";var OQm=(e,t)=>{let r=t?.followSymlinks??!1,n=t?.depth??1/0,i=t?.limit??1/0,o=t?.ignore??[],s=ygu(o).map(oe=>bgu(oe)?oe:ae=>oe.test(ae)),a=oe=>s.some(ae=>ae(oe)),c=t?.signal??{aborted:!1},u=t?.onDirents||(()=>{}),l=[],p=new Set,d={},f=[],m=new Set,h={},A=[],y=new Set,I={},w={},C=new Set,x={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{},map:{}},B={directories:l,directoriesNames:p,directoriesNamesToPaths:d,files:f,filesNames:m,filesNamesToPaths:h,symlinks:A,symlinksNames:y,symlinksNamesToPaths:I,map:w},{promise:O,increment:F,decrement:P}=ggu(),U=0,X=(oe,ae,Se,ve)=>{C.has(ae)||U>=i||(U+=1,oe.directories.push(ae),oe.directoriesNames.add(Se),l.push(ae),p.add(Se),d.propertyIsEnumerable(Se)||(d[Se]=[]),d[Se].push(ae),C.add(ae),!(ve>=n)&&(U>=i||fe(ae,ve+1)))},$=(oe,ae,Se)=>{C.has(ae)||U>=i||(U+=1,oe.files.push(ae),oe.filesNames.add(Se),f.push(ae),m.add(Se),h.propertyIsEnumerable(Se)||(h[Se]=[]),h[Se].push(ae),C.add(ae))},ne=(oe,ae,Se,ve)=>{C.has(ae)||U>=i||(U+=1,oe.symlinks.push(ae),oe.symlinksNames.add(Se),A.push(ae),y.add(Se),I.propertyIsEnumerable(Se)||(I[Se]=[]),I[Se].push(ae),C.add(ae),r&&(ve>=n||U>=i||Le(ae,ve+1)))},le=(oe,ae,Se,ve,Qe)=>{c.aborted||a(ae)||(ve.isDirectory()?X(oe,ae,Se,Qe):ve.isFile()?$(oe,ae,Se):ve.isSymbolicLink()&&ne(oe,ae,Se,Qe))},ge=(oe,ae,Se,ve)=>{if(c.aborted)return;let Qe=ae===hGt.default.sep?"":hGt.default.sep,qe=Se.name,ut=`${ae}${Qe}${qe}`;a(ut)||(Se.isDirectory()?X(oe,ut,qe,ve):Se.isFile()?$(oe,ut,qe):Se.isSymbolicLink()&&ne(oe,ut,qe,ve))},me=(oe,ae,Se,ve)=>{for(let Qe=0,qe=Se.length;Qe<qe;Qe++)ge(oe,ae,Se[Qe],ve)},fe=(oe,ae)=>{c.aborted||ae>n||U>=i||(F(),uti.default.readdir(oe,{withFileTypes:!0},(Se,ve)=>{if(Se||c.aborted||!ve.length)return P();(u(ve)||Agu).then(()=>{let qe=w[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};me(qe,oe,ve,ae),P()})}))},Le=(oe,ae)=>{F(),uti.default.realpath(oe,(Se,ve)=>{if(Se||c.aborted)return P();uti.default.stat(ve,(Qe,qe)=>{if(Qe||c.aborted)return P();let ut=hGt.default.basename(ve),bt=w[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};le(bt,ve,ut,qe,ae),P()})})};return(async(oe,ae=1)=>(oe=hGt.default.normalize(oe),C.add(oe),fe(oe,ae),await O,c.aborted?x:B))(e)},Egu=OQm;var vie={lang:{debounce:cti,attempt:e=>{try{return e()}catch(t){return vie.lang.castError(t)}},castArray:e=>vie.lang.isArray(e)?e:[e],castError:e=>vie.lang.isError(e)?e:vie.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(vie.lang.isNaN(e))return vie.lang.isNaN(t);if(vie.lang.isPrimitive(e)||vie.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(lti.default.sep).length-1),getRealPath:(e,t)=>{try{return t?JVo.default.realpathSync.native(e):JVo.default.realpathSync(e)}catch{return}},isSubPath:(e,t)=>t.startsWith(e)&&t[e.length]===lti.default.sep&&t.length-e.length>lti.default.sep.length,poll:(e,t=lgu)=>mgu.retry.stat(t)(e,{bigint:!0}).catch(vie.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 Egu(e,{depth:r,limit:n,ignore:t,signal:i});return[s.directories,s.files]}}}},bp=vie;var pti=we(require("path"),1);var YVo=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||bp.fs.isSubPath(this.folderPath,t)}_makeHandlerBatched(t=agu){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=bp.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===Wc.CHANGE&&a===Wc.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===Wc.ADD_DIR?await this.eventsPopulateAddDir(t,i,r,n):s===Wc.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??qPe:Math.min(1,this.options.depth??qPe),s=this.options.limit??fGt,[a,c]=await bp.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())bp.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(Wc.ADD,t))}onTargetAddDir(t){t!==this.folderPath&&this.options.recursive&&!GPe&&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(Wc.ADD_DIR,t))}onTargetChange(t){this._isSubRoot(t)&&this.watcher.event(Wc.CHANGE,t)}onTargetUnlink(t){this.watcher.watchersClose(pti.default.dirname(t),t,!1),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlink(t,this.options.renameTimeout):this.watcher.event(Wc.UNLINK,t))}onTargetUnlinkDir(t){this.watcher.watchersClose(pti.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(Wc.UNLINK_DIR,t))}onTargetEvent(t){let[r,n]=t;r===Wc.ADD?this.onTargetAdd(n):r===Wc.ADD_DIR?this.onTargetAddDir(n):r===Wc.CHANGE?this.onTargetChange(n):r===Wc.UNLINK?this.onTargetUnlink(n):r===Wc.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=SUe.CHANGE,r){if(this.watcher.isClosed())return;let n=pti.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){qVo&&t.code==="EPERM"?this.onWatcherChange(SUe.CHANGE,""):this.watcher.error(t)}async init(){await this.initWatcherEvents(),await this.initInitialEvents()}async initWatcherEvents(){let t=this.onWatcherChange.bind(this);this.fswatcher.on(dGt.CHANGE,t);let r=this.onWatcherError.bind(this);this.fswatcher.on(dGt.ERROR,r)}async initInitialEvents(){let t=!this.watcher.isReady();if(this.filePath){if(this.watcher._poller.stats.has(this.filePath))return;await this.onWatcherEvent(SUe.CHANGE,this.filePath,t)}else{let r=this.options.recursive&&GPe&&this.options.native!==!1?this.options.depth??qPe:Math.min(1,this.options.depth??qPe),n=this.options.limit??fGt,[i,o]=await bp.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(SUe.CHANGE,a,t)}))}}},vgu=YVo;var kN={interval:100,intervalId:void 0,fns:new Map,init:()=>{kN.intervalId||(kN.intervalId=setInterval(kN.resolve,kN.interval))},reset:()=>{kN.intervalId&&(clearInterval(kN.intervalId),delete kN.intervalId)},add:(e,t)=>{kN.fns.set(e,Date.now()+t),kN.init()},remove:e=>{kN.fns.delete(e)},resolve:()=>{if(!kN.fns.size)return kN.reset();let e=Date.now();for(let[t,r]of kN.fns)r>=e||(kN.remove(t),t())}},gGt=kN;var AGt=class e{constructor(t){this._watcher=t,this.reset()}getLockAdd(t,r=GVo){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(bp.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),gGt.remove(u)},u=()=>{c(),a()};gGt.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=GVo){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),gGt.remove(u)},u=()=>{c(),a()};gGt.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,Wc.ADD,bie.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,Wc.ADD_DIR,bie.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,Wc.UNLINK,bie.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,Wc.UNLINK_DIR,bie.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}}};AGt.DIR_EVENTS={add:Wc.ADD_DIR,rename:Wc.RENAME_DIR,unlink:Wc.UNLINK_DIR};AGt.FILE_EVENTS={add:Wc.ADD,change:Wc.CHANGE,rename:Wc.RENAME,unlink:Wc.UNLINK};var Igu=AGt;var XVo=class{constructor(){this.map=new Map}clear(){this.map.clear()}delete(t,r){if(bp.lang.isUndefined(r))return this.map.delete(t);if(this.map.has(t)){let n=this.map.get(t);if(bp.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(bp.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(bp.lang.isUndefined(r))return this.map.has(t);if(this.map.has(t)){let n=this.map.get(t);return bp.lang.isSet(n)?n.has(r):n===r}return!1}set(t,r){if(this.map.has(t)){let n=this.map.get(t);bp.lang.isSet(n)?n.add(r):n!==r&&this.map.set(t,new Set([n,r]))}else this.map.set(t,r);return this}},ZVo=XVo;var $Vo=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}},Cgu=$Vo;var e5o=class{constructor(){this.inos={},this.paths=new ZVo,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 bp.fs.poll(t,r);if(!(!n||!(n.isFile()||n.isDirectory())))return new Cgu(n)}reset(){this.inos={},this.paths=new ZVo,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,Wc.ADD,i),[Wc.ADD];if(i.isDirectory())return this.updateIno(t,Wc.ADD_DIR,i),[Wc.ADD_DIR]}else if(n&&!i){if(n.isFile())return this.updateIno(t,Wc.UNLINK,n),[Wc.UNLINK];if(n.isDirectory())return this.updateIno(t,Wc.UNLINK_DIR,n),[Wc.UNLINK_DIR]}else if(n&&i){if(n.isFile()){if(i.isFile())return n.ino===i.ino&&!n.size&&!i.size?[]:(this.updateIno(t,Wc.CHANGE,i),[Wc.CHANGE]);if(i.isDirectory())return this.updateIno(t,Wc.UNLINK,n),this.updateIno(t,Wc.ADD_DIR,i),[Wc.UNLINK,Wc.ADD_DIR]}else if(n.isDirectory()){if(i.isFile())return this.updateIno(t,Wc.UNLINK_DIR,n),this.updateIno(t,Wc.ADD,i),[Wc.UNLINK_DIR,Wc.ADD];if(i.isDirectory())return n.ino===i.ino?[]:(this.updateIno(t,Wc.UNLINK_DIR,n),this.updateIno(t,Wc.ADD_DIR,i),[Wc.UNLINK_DIR,Wc.ADD_DIR])}}return[]}updateIno(t,r,n){let i=this.inos[r]=this.inos[r]||(this.inos[r]={}),o=n.isFile()?bie.FILE:bie.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)}}},t5o=e5o;var r5o=class e extends wgu.EventEmitter{constructor(t,r,n){super(),this._closed=!1,this._ready=!1,this._closeAborter=new AbortController,this._closeSignal=this._closeAborter.signal,this.on(FN.CLOSE,()=>this._closeAborter.abort()),this._closeWait=new Promise(i=>this.on(FN.CLOSE,i)),this._readyWait=new Promise(i=>this.on(FN.READY,i)),this._locker=new Igu(this),this._roots=new Set,this._poller=new t5o,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&&(bp.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(FN.CLOSE))}error(t){if(this.isClosed())return!1;let r=bp.lang.castError(t);return this.emit(FN.ERROR,r)}event(t,r,n){return this.isClosed()?!1:(this.emit(FN.ALL,t,r,n),this.emit(t,r,n))}ready(){return this.isClosed()||this.isReady()?!1:(this._ready=!0,this.emit(FN.READY))}pollerExists(t,r){for(let n of this._pollers)if(n.targetPath===t&&bp.lang.isShallowEqual(n.options,r))return!0;return!1}subwatcherExists(t,r){for(let n of this._subwatchers)if(n.targetPath===t&&bp.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)bp.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 vgu(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=bp.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=TUe.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??qPe))&&l.handler===n&&(!l.filePath||l.filePath===i)&&l.options.ignore===r.ignore&&!!l.options.native==!!r.native&&(!r.recursive||l.options.recursive&&GPe&&l.options.native!==!1)))return!0;if(!GPe)break;let u=TUe.default.dirname(t);if(s===u)break;s=u}return!1}async watchDirectories(t,r,n,i,o){if(this.isClosed())return;t=bp.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||GPe&&r.native!==!1?r:{...r,recursive:!1},l={watcher:fti.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=TUe.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||GPe&&r.native!==!1)return this.watchersLock(()=>this.watchDirectories([t],r,n,i,o));{r={...r,recursive:!0};let s=r.depth??qPe,a=r.limit??fGt,[c]=await bp.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=bp.fs.getDepth(t);for(let p of c){let d=bp.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(FN.CLOSE,c),s.watchFile(t,r,o)},c=()=>{this._subwatchers.delete(i),this.removeListener(FN.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=TUe.default.dirname(t);return this.watchDirectory(i,r,n,t)}async watchPollingOnce(t,r,n){if(this.isClosed())return;let i=!1,o=new t5o,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 bp.lang.noop;if(this.pollerExists(t,r))return bp.lang.noop;let i={...r,interval:r.pollingInterval??ugu},o={targetPath:t,options:r},s=()=>{this._pollers.add(o),this.on(FN.CLOSE,a),fti.default.watchFile(t,i,n)},a=()=>{this._pollers.delete(o),this.removeListener(FN.CLOSE,a),fti.default.unwatchFile(t,n)};return bp.lang.attempt(s),()=>bp.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=bp.lang.uniq(t).sort(),t.every((o,s)=>t.every((a,c)=>c===s||!bp.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=TUe.default.resolve(t),this.isIgnored(t,r.ignore)))return;let i=await bp.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=TUe.default.dirname(t);return(await bp.fs.poll(o,r.pollingTimeout))?.isDirectory()?this.watchUnknownChild(t,r,n):this.watchUnknownTarget(t,r,n)}}async watch(t,r,n=bp.lang.noop){if(bp.lang.isFunction(t))return this.watch([],{},t);if(bp.lang.isUndefined(t))return this.watch([],r,n);if(bp.lang.isFunction(r))return this.watch(t,{},r);if(bp.lang.isUndefined(r))return this.watch(t,{},n);if(this.isClosed())return;this.isReady()&&(r.readdirMap=void 0);let i=bp.lang.castArray(t);i.forEach(o=>this._roots.add(o)),await this.watchPaths(i,r,n),!this.isClosed()&&(n!==bp.lang.noop&&this.on(FN.ALL,n),r.readdirMap=void 0,this.ready())}},dti=r5o;Bti();tr();var G7=require("fs/promises"),OAu=require("os"),x5o=we(require("path"),1),rMm=".fern",nMm="logs",w5o=100*1024*1024;function iMm(){return"cli@5.37.2"}var FUe=class{logFilePath=null;initialized=!1;sessionStartTime;consoleLogger;constructor(){this.sessionStartTime=Date.now()}async initialize(t,r){if(this.initialized)return;this.consoleLogger=t;let n=r??$e($e(Ht.of((0,OAu.homedir)()),ke.of(rMm)),ke.of(nMm));await or(n)||await(0,G7.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=$e(n,ke.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${x5o.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
|
|
3814
3814
|
`);await(0,G7.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)+`
|
|
3815
3815
|
`;try{await(0,G7.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:iMm(),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,G7.readdir)(t)).filter(c=>c.endsWith(".log")),i=[];for(let c of n){let u=x5o.default.join(t,c);try{let l=await(0,G7.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=w5o/1024/1024;if(o<=w5o){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<=w5o)break;if(!(this.logFilePath!=null&&c.fullPath===this.logFilePath))try{await(0,G7.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 Oti={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function PAu(e){let t=oMm();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:Oti});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",...Oti}})}catch{return new Response(JSON.stringify(i()),{headers:{"Content-Type":"application/json",...Oti}})}let d=/^\/_local\/(.*)/.exec(p.pathname);return u.method==="GET"&&d!=null?new Response(t.file(`/${d[1]}`),{headers:Oti}):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 FUe.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 oMm(){return globalThis.Bun}tr();iS();Ut();var RIu=require("child_process"),_ri=we(k5o(),1),FIu=we(H8o(),1),Ev=require("fs"),QN=require("fs/promises"),kIu=require("os"),jN=we(require("path"),1),NIu=we(lw(),1),jIu=we(DIu(),1),_Ue=process.platform==="win32",Uri=Ae.cyan("[docs]:"),N4m="etag",j4m=23,i7o=e=>e.padEnd(j4m," "),Q4m="preview",M4m="app-preview",L4m="bundle",z4m=".next",U4m="standalone",_4m=".fern",V4m="packages/fern-docs/bundle/.next/server/instrumentation.js",q4m='Cannot find matching keyid: {"signatures":',G4m="ERR_PNPM_IGNORED_BUILDS";function W4m(e){try{let r=(0,RIu.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 k({message:`Windows long path support is not enabled. The docs bundle contains deeply nested .pnpm paths that exceed the 260-character MAX_PATH limit.
|
|
3816
3816
|
|
|
@@ -4342,7 +4342,7 @@ Please ensure you have membership at https://dashboard.buildwithfern.com, and as
|
|
|
4342
4342
|
|
|
4343
4343
|
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`:r}function rYm(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.
|
|
4344
4344
|
|
|
4345
|
-
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function nYm(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 iYm(e){try{return new URL(xN(e)).pathname}catch{return}}async function oYm({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await sYm({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 s=Object.fromEntries(Object.entries(o).map(([l,p])=>[l,{packageName:p.packageName,version:p.version}])),c=(await e.api.register.checkSdkDynamicIrExists({orgId:hn.OrgId(r),snippetConfiguration:s})).existingDynamicIrs??{};if(Object.keys(c).length===0){n.logger.debug("[SDK Dynamic IR] No existing SDK dynamic IRs found in S3");return}let u={};for(let[l,p]of Object.entries(c??{}))try{n.logger.debug(`Downloading existing SDK dynamic IR for ${l}...`);let d=await fetch(p.downloadUrl);if(d.ok){let f=await d.json();u[l]={dynamicIR:f},n.logger.debug(`Successfully downloaded SDK dynamic IR for ${l}`)}else n.logger.warn(`Failed to download SDK dynamic IR for ${l}: ${d.status}`)}catch(d){n.logger.warn(`Error downloading SDK dynamic IR for ${l}: ${d}`)}return Object.keys(u).length>0?u:void 0}catch(s){n.logger.debug(`Error checking for existing SDK dynamic IRs: ${s}`);return}}function J9o(e){return e.replace(/^https:\/\//,"")}async function sYm({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&&J9o(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 aYm({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 aYm({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=zn.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 cYm({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&&J9o(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=t_e({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=J9o(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=Zg({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 Gh(r,e),dynamicGeneratorConfig:u}),d=uLe({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 uYm({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);try{(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}`)}catch(c){r.logger.warn(`Network error uploading dynamic IR for ${n}:${i}: ${c}`)}}else r.logger.warn(`Could not find matching dynamic IR to upload for ${n}:${i}`)}}async function lYm({docsDefinition:e,isPreview:t,context:r}){e.config.aiChatConfig==null||t||r.logger.warn(Ae.yellow("Enabling Ask Fern from docs.yml is deprecated. Please enable it from the Fern dashboard instead."))}function pYm(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 lDu(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 N9t=[60*1e3,300*1e3,300*1e3];async function j9t({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=Oy(n.config,{onError:x=>i.failAndThrow(void 0,x,{code:k.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:k.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:k.Code.ConfigError});return}let y=A.find(x=>x.url===s)??A[0];if(y==null){i.failAndThrow(`No docs instance with url ${s}. Failed to register.`,void 0,{code:k.Code.ConfigError});return}let I=(typeof y.customDomain=="string"?[y.customDomain]:y.customDomain??[]).map(lPu);(y.multiSource===!0||n.config.experimental?.basepathAware===!0)&&pPu(y.url,I,i),i.logger.info(`Starting docs publishing for ${a?"preview":"production"}: ${y.url}`),i.logger.debug(`Organization: ${e}, Preview: ${a}, APIs: ${t.length}, OSS: ${r.length}`);let C;return await i.runInteractiveTask({name:y.url},async()=>{let x=performance.now(),B=()=>aDu({docsWorkspace:n,customDomains:I,domain:y.url,token:o,organization:e,context:i,apiWorkspaces:t,ossWorkspaces:r,preview:a,previewId:c,editThisPage:y.editThisPage,disableTemplates:u,skipUpload:l,withAiExamples:n.config.aiExamples?.enabled??n.config.experimental?.aiExamples??!0,excludeApis:n.config.experimental?.excludeApis??!1,targetAudiences:y.audiences?Array.isArray(y.audiences)?y.audiences:[y.audiences]:void 0,docsUrl:y.url,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m,multiSource:y.multiSource??!1});for(let F=0;;F++)try{C=await B();break}catch(P){if(!(P instanceof mvt)||F>=N9t.length){if(P instanceof mvt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:k.Code.NetworkError});throw P}let U=N9t[F]??N9t[N9t.length-1]??6e4,X=U/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${X} minute${X===1?"":"s"} (attempt ${F+1}/${N9t.length})...`),await new Promise($=>setTimeout($,U))}let O=performance.now()-x;i.logger.debug(`Docs publishing completed in ${O.toFixed(0)}ms`)}),C}Ut();var yoi=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 Cd({context:this.context,task:this.task});try{let s=await j9t({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.37.1",loginCommand:"fern auth login"});return o.getResult()===Mf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:Gn(s)}}}};jt();var hvt=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(`
|
|
4345
|
+
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function nYm(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 iYm(e){try{return new URL(xN(e)).pathname}catch{return}}async function oYm({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await sYm({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 s=Object.fromEntries(Object.entries(o).map(([l,p])=>[l,{packageName:p.packageName,version:p.version}])),c=(await e.api.register.checkSdkDynamicIrExists({orgId:hn.OrgId(r),snippetConfiguration:s})).existingDynamicIrs??{};if(Object.keys(c).length===0){n.logger.debug("[SDK Dynamic IR] No existing SDK dynamic IRs found in S3");return}let u={};for(let[l,p]of Object.entries(c??{}))try{n.logger.debug(`Downloading existing SDK dynamic IR for ${l}...`);let d=await fetch(p.downloadUrl);if(d.ok){let f=await d.json();u[l]={dynamicIR:f},n.logger.debug(`Successfully downloaded SDK dynamic IR for ${l}`)}else n.logger.warn(`Failed to download SDK dynamic IR for ${l}: ${d.status}`)}catch(d){n.logger.warn(`Error downloading SDK dynamic IR for ${l}: ${d}`)}return Object.keys(u).length>0?u:void 0}catch(s){n.logger.debug(`Error checking for existing SDK dynamic IRs: ${s}`);return}}function J9o(e){return e.replace(/^https:\/\//,"")}async function sYm({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&&J9o(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 aYm({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 aYm({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=zn.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 cYm({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&&J9o(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=t_e({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=J9o(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=Zg({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 Gh(r,e),dynamicGeneratorConfig:u}),d=uLe({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 uYm({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);try{(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}`)}catch(c){r.logger.warn(`Network error uploading dynamic IR for ${n}:${i}: ${c}`)}}else r.logger.warn(`Could not find matching dynamic IR to upload for ${n}:${i}`)}}async function lYm({docsDefinition:e,isPreview:t,context:r}){e.config.aiChatConfig==null||t||r.logger.warn(Ae.yellow("Enabling Ask Fern from docs.yml is deprecated. Please enable it from the Fern dashboard instead."))}function pYm(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 lDu(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 N9t=[60*1e3,300*1e3,300*1e3];async function j9t({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=Oy(n.config,{onError:x=>i.failAndThrow(void 0,x,{code:k.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:k.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:k.Code.ConfigError});return}let y=A.find(x=>x.url===s)??A[0];if(y==null){i.failAndThrow(`No docs instance with url ${s}. Failed to register.`,void 0,{code:k.Code.ConfigError});return}let I=(typeof y.customDomain=="string"?[y.customDomain]:y.customDomain??[]).map(lPu);(y.multiSource===!0||n.config.experimental?.basepathAware===!0)&&pPu(y.url,I,i),i.logger.info(`Starting docs publishing for ${a?"preview":"production"}: ${y.url}`),i.logger.debug(`Organization: ${e}, Preview: ${a}, APIs: ${t.length}, OSS: ${r.length}`);let C;return await i.runInteractiveTask({name:y.url},async()=>{let x=performance.now(),B=()=>aDu({docsWorkspace:n,customDomains:I,domain:y.url,token:o,organization:e,context:i,apiWorkspaces:t,ossWorkspaces:r,preview:a,previewId:c,editThisPage:y.editThisPage,disableTemplates:u,skipUpload:l,withAiExamples:n.config.aiExamples?.enabled??n.config.experimental?.aiExamples??!0,excludeApis:n.config.experimental?.excludeApis??!1,targetAudiences:y.audiences?Array.isArray(y.audiences)?y.audiences:[y.audiences]:void 0,docsUrl:y.url,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m,multiSource:y.multiSource??!1});for(let F=0;;F++)try{C=await B();break}catch(P){if(!(P instanceof mvt)||F>=N9t.length){if(P instanceof mvt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:k.Code.NetworkError});throw P}let U=N9t[F]??N9t[N9t.length-1]??6e4,X=U/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${X} minute${X===1?"":"s"} (attempt ${F+1}/${N9t.length})...`),await new Promise($=>setTimeout($,U))}let O=performance.now()-x;i.logger.debug(`Docs publishing completed in ${O.toFixed(0)}ms`)}),C}Ut();var yoi=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 Cd({context:this.context,task:this.task});try{let s=await j9t({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.37.2",loginCommand:"fern auth login"});return o.getResult()===Mf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:Gn(s)}}}};jt();var hvt=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(`
|
|
4346
4346
|
`),this.stream.write(`${Ae.cyan("\u25C6")} ${Ae.bold(t.title)}
|
|
4347
4347
|
`),t.subtitle!=null&&this.stream.write(` ${Ae.dim(t.subtitle)}
|
|
4348
4348
|
`),this.stream.write(`
|
|
@@ -5009,7 +5009,7 @@ For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides
|
|
|
5009
5009
|
`),h="";return c&&(h=l.style.error(c)),[`${p} ${f} ${s}`,[m,h].filter(Boolean).join(`
|
|
5010
5010
|
`)]});var Oug=XC((e,t)=>{let{validate:r=()=>!0}=e,n=Rv(e.theme),[i,o]=vu("idle"),[s,a]=vu(),[c,u]=vu(""),l=JC({status:i,theme:n});YC(async(h,A)=>{if(i==="idle")if(KC(h)){let y=c;o("loading");let I=await r(y);I===!0?(u(y),o("done"),t(y)):(A.write(c),a(I||"You must provide a valid value"),o("idle"))}else u(A.line),a(void 0)});let p=n.style.message(e.message,i),d="",f;e.mask?d=(typeof e.mask=="string"?e.mask:"*").repeat(c.length):i!=="done"&&(f=`${n.style.help("[input is masked]")}${n1t}`),i==="done"&&(d=n.style.answer(d));let m="";return s&&(m=n.style.error(s)),[[l,p,e.mask?d:f].join(" "),m]});var J8e=we(cS(),1);var Pug={icon:{cursor:zw.pointer},style:{disabled:e=>J8e.default.dim(`- ${e}`),searchTerm:e=>J8e.default.cyan(e),description:e=>J8e.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${J8e.default.bold(t)} ${J8e.default.dim(r)}`).join(J8e.default.dim(" \u2022 "))},helpMode:"always"};function mEs(e){return!Pd.isSeparator(e)&&!e.disabled}function Dug(e){return e.map(t=>{if(Pd.isSeparator(t))return t;if(typeof t=="string")return{value:t,name:t,short:t,disabled:!1};let r=t.name??String(t.value),n={value:t.value,name:r,short:t.short??r,disabled:t.disabled??!1};return t.description&&(n.description=t.description),n})}var Rug=XC((e,t)=>{let{pageSize:r=7,validate:n=()=>!0}=e,i=Rv(Pug,e.theme),[o,s]=vu("loading"),[a,c]=vu(""),[u,l]=vu([]),[p,d]=vu(),f=JC({status:o,theme:i}),m=TL(()=>{let U=u.findIndex(mEs),X=u.findLastIndex(mEs);return{first:U,last:X}},[u]),[h=m.first,A]=vu();v4(()=>{let U=new AbortController;return s("loading"),d(void 0),(async()=>{try{let $=await e.source(a||void 0,{signal:U.signal});U.signal.aborted||(A(void 0),d(void 0),l(Dug($)),s("idle"))}catch($){!U.signal.aborted&&$ instanceof Error&&d($.message)}})(),()=>{U.abort()}},[a]);let y=u[h];YC(async(U,X)=>{if(KC(U))if(y){s("loading");let $=await n(y.value);s("idle"),$===!0?(s("done"),t(y.value)):y.name===a?d($||"You must provide a valid value"):(X.write(y.name),c(y.name))}else X.write(a);else if(Ghe(U)&&y)X.clearLine(0),X.write(y.name),c(y.name);else if(o!=="loading"&&(TP(U)||SL(U))){if(X.clearLine(0),TP(U)&&h!==m.first||SL(U)&&h!==m.last){let $=TP(U)?-1:1,ne=h;do ne=(ne+$+u.length)%u.length;while(!mEs(u[ne]));A(ne)}}else c(X.line)});let I=i.style.message(e.message,o),w;if(i.helpMode!=="never")if(e.instructions){let{pager:U,navigation:X}=e.instructions;w=i.style.help(u.length>r?U:X)}else w=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let C=G8e({items:u,active:h,renderItem({item:U,isActive:X}){if(Pd.isSeparator(U))return` ${U.separator}`;if(U.disabled){let le=typeof U.disabled=="string"?U.disabled:"(disabled)";return i.style.disabled(`${U.name} ${le}`)}let $=X?i.style.highlight:le=>le,ne=X?i.icon.cursor:" ";return $(`${ne} ${U.name}`)},pageSize:r,loop:!1}),x;p?x=i.style.error(p):u.length===0&&a!==""&&o==="idle"&&(x=i.style.error("No results found"));let B;if(o==="done"&&y)return[f,I,i.style.answer(y.short)].filter(Boolean).join(" ").trimEnd();B=i.style.searchTerm(a);let O=y?.description,F=[f,I,B].filter(Boolean).join(" ").trimEnd(),P=[x??C," ",O?i.style.description(O):"",w].filter(Boolean).join(`
|
|
5011
5011
|
`).trimEnd();return[F,P]});var o1t=we(cS(),1);var Fug={icon:{cursor:zw.pointer},style:{disabled:e=>o1t.default.dim(`- ${e}`),description:e=>o1t.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${o1t.default.bold(t)} ${o1t.default.dim(r)}`).join(o1t.default.dim(" \u2022 "))},helpMode:"always",indexMode:"hidden",keybindings:[]};function i1t(e){return!Pd.isSeparator(e)&&!e.disabled}function kug(e){return e.map(t=>{if(Pd.isSeparator(t))return t;if(typeof t=="string")return{value:t,name:t,short:t,disabled:!1};let r=t.name??String(t.value),n={value:t.value,name:r,short:t.short??r,disabled:t.disabled??!1};return t.description&&(n.description=t.description),n})}var hEs=XC((e,t)=>{let{loop:r=!0,pageSize:n=7}=e,i=Rv(Fug,e.theme),{keybindings:o}=i,[s,a]=vu("idle"),c=JC({status:s,theme:i}),u=q8e(),l=!o.includes("vim"),p=TL(()=>kug(e.choices),[e.choices]),d=TL(()=>{let O=p.findIndex(i1t),F=p.findLastIndex(i1t);if(O===-1)throw new hae("[select prompt] No selectable choices. All choices are disabled.");return{first:O,last:F}},[p]),f=TL(()=>"default"in e?p.findIndex(O=>i1t(O)&&O.value===e.default):-1,[e.default,p]),[m,h]=vu(f===-1?d.first:f),A=p[m];YC((O,F)=>{if(clearTimeout(u.current),KC(O))a("done"),t(A.value);else if(TP(O,o)||SL(O,o)){if(F.clearLine(0),r||TP(O,o)&&m!==d.first||SL(O,o)&&m!==d.last){let P=TP(O,o)?-1:1,U=m;do U=(U+P+p.length)%p.length;while(!i1t(p[U]));h(U)}}else if(oXt(O)&&!Number.isNaN(Number(F.line))){let P=Number(F.line)-1,U=-1,X=p.findIndex(ne=>Pd.isSeparator(ne)?!1:(U++,U===P)),$=p[X];$!=null&&i1t($)&&h(X),u.current=setTimeout(()=>{F.clearLine(0)},700)}else if(U8e(O))F.clearLine(0);else if(l){let P=F.line.toLowerCase(),U=p.findIndex(X=>Pd.isSeparator(X)||!i1t(X)?!1:X.name.toLowerCase().startsWith(P));U!==-1&&h(U),u.current=setTimeout(()=>{F.clearLine(0)},700)}}),v4(()=>()=>{clearTimeout(u.current)},[]);let y=i.style.message(e.message,s),I;if(i.helpMode!=="never")if(e.instructions){let{pager:O,navigation:F}=e.instructions;I=i.style.help(p.length>n?O:F)}else I=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let w=0,C=G8e({items:p,active:m,renderItem({item:O,isActive:F,index:P}){if(Pd.isSeparator(O))return w++,` ${O.separator}`;let U=i.indexMode==="number"?`${P+1-w}. `:"";if(O.disabled){let ne=typeof O.disabled=="string"?O.disabled:"(disabled)";return i.style.disabled(`${U}${O.name} ${ne}`)}let X=F?i.style.highlight:ne=>ne,$=F?i.icon.cursor:" ";return X(`${$} ${U}${O.name}`)},pageSize:n,loop:r});if(s==="done")return[c,y,i.style.answer(A.short)].filter(Boolean).join(" ");let{description:x}=A;return`${[[c,y].filter(Boolean).join(" "),C," ",x?i.style.description(x):"",I].filter(Boolean).join(`
|
|
5012
|
-
`).trimEnd()}${n1t}`});ao();var gae={GENERATION_STARTED:"generation_started",GENERATION_COMPLETED:"generation_completed",GENERATION_FAILED:"generation_failed",VERIFICATION_FAILED:"verification_failed",SDK_PR_CREATED:"sdk_pr_created",UPGRADE_APPLIED:"upgrade_applied",MAJOR_VERSION_BUMP:"major_version_bump"},Nug={[gae.GENERATION_STARTED]:!1,[gae.GENERATION_COMPLETED]:!1,[gae.GENERATION_FAILED]:!0,[gae.VERIFICATION_FAILED]:!0,[gae.SDK_PR_CREATED]:!1,[gae.UPGRADE_APPLIED]:!1,[gae.MAJOR_VERSION_BUMP]:!1};function Dil(e){return Nug[e]}function Ril(e,t){return{automation_mode:!0,surface:"cli",action:t.action,run_id:t.run_id,github_run_id:t.github_run_id,github_run_url:t.github_run_url,org:t.org,config_repo:t.config_repo,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,trigger:t.trigger,cli_version:t.cli_version,...e.errorCode!==void 0?{error_code:e.errorCode}:{},...e.attributes??{}}}function Fil(e,t){function r(i,o,s){s!=null&&(i[o]=s)}let n={surface:"cli",automation_mode:"true"};return r(n,"event",e.event),r(n,"action",t.action),r(n,"run_id",t.run_id),r(n,"org",t.org),r(n,"config_repo",t.config_repo),r(n,"trigger",t.trigger),r(n,"error_code",e.errorCode??"none"),n}function kil(e,t){return{github_run_id:t.github_run_id,github_run_url:t.github_run_url,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,cli_version:t.cli_version,...e.attributes??{}}}function Nil(e,t){return{event:e.event,timestamp:new Date().toISOString(),surface:"cli",action:t.action,run_id:t.run_id,github_run_id:t.github_run_id,github_run_url:t.github_run_url,org:t.org,config_repo:t.config_repo,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,trigger:t.trigger,cli_version:t.cli_version,...e.errorCode!==void 0?{error_code:e.errorCode}:{},...e.attributes??{}}}function jil(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?gae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?gae.VERIFICATION_FAILED:gae.GENERATION_FAILED}var jug="",Qug="FERN_AUTOMATION_EVENTS_ORIGIN",Mug=3e3,Cyi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[Qug]??jug)),e.instance}constructor(t){this.origin=t}resolveEndpoint(){if(this.origin.length!==0)return`${this.origin.replace(/\/$/,"")}/v1/automation/events`}post(t,r){this.inflight.push(this.send(t,r))}async shutdown(){let t=this.inflight;this.inflight=[],t.length>0&&await Promise.allSettled(t)}async send(t,r){let n=this.resolveEndpoint();if(n==null)return;let i=new AbortController,o=setTimeout(()=>i.abort(),Mug);try{let s={"content-type":"application/json"},a=await wV();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(Nil(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function Qil(){let{fern_run_id:e,github_run_id:t}=Jae();return{action:process.env.FERN_ACTION,run_id:e,github_run_id:t,github_run_url:process.env.FERN_GITHUB_RUN_URL,org:void 0,config_repo:process.env.FERN_CONFIG_REPO,config_commit_sha:process.env.FERN_CONFIG_COMMIT_SHA,config_branch:process.env.FERN_CONFIG_BRANCH,config_pr_number:process.env.FERN_CONFIG_PR_NUMBER,trigger:process.env.GITHUB_EVENT_NAME,cli_version:"5.37.
|
|
5012
|
+
`).trimEnd()}${n1t}`});ao();var gae={GENERATION_STARTED:"generation_started",GENERATION_COMPLETED:"generation_completed",GENERATION_FAILED:"generation_failed",VERIFICATION_FAILED:"verification_failed",SDK_PR_CREATED:"sdk_pr_created",UPGRADE_APPLIED:"upgrade_applied",MAJOR_VERSION_BUMP:"major_version_bump"},Nug={[gae.GENERATION_STARTED]:!1,[gae.GENERATION_COMPLETED]:!1,[gae.GENERATION_FAILED]:!0,[gae.VERIFICATION_FAILED]:!0,[gae.SDK_PR_CREATED]:!1,[gae.UPGRADE_APPLIED]:!1,[gae.MAJOR_VERSION_BUMP]:!1};function Dil(e){return Nug[e]}function Ril(e,t){return{automation_mode:!0,surface:"cli",action:t.action,run_id:t.run_id,github_run_id:t.github_run_id,github_run_url:t.github_run_url,org:t.org,config_repo:t.config_repo,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,trigger:t.trigger,cli_version:t.cli_version,...e.errorCode!==void 0?{error_code:e.errorCode}:{},...e.attributes??{}}}function Fil(e,t){function r(i,o,s){s!=null&&(i[o]=s)}let n={surface:"cli",automation_mode:"true"};return r(n,"event",e.event),r(n,"action",t.action),r(n,"run_id",t.run_id),r(n,"org",t.org),r(n,"config_repo",t.config_repo),r(n,"trigger",t.trigger),r(n,"error_code",e.errorCode??"none"),n}function kil(e,t){return{github_run_id:t.github_run_id,github_run_url:t.github_run_url,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,cli_version:t.cli_version,...e.attributes??{}}}function Nil(e,t){return{event:e.event,timestamp:new Date().toISOString(),surface:"cli",action:t.action,run_id:t.run_id,github_run_id:t.github_run_id,github_run_url:t.github_run_url,org:t.org,config_repo:t.config_repo,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,trigger:t.trigger,cli_version:t.cli_version,...e.errorCode!==void 0?{error_code:e.errorCode}:{},...e.attributes??{}}}function jil(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?gae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?gae.VERIFICATION_FAILED:gae.GENERATION_FAILED}var jug="",Qug="FERN_AUTOMATION_EVENTS_ORIGIN",Mug=3e3,Cyi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[Qug]??jug)),e.instance}constructor(t){this.origin=t}resolveEndpoint(){if(this.origin.length!==0)return`${this.origin.replace(/\/$/,"")}/v1/automation/events`}post(t,r){this.inflight.push(this.send(t,r))}async shutdown(){let t=this.inflight;this.inflight=[],t.length>0&&await Promise.allSettled(t)}async send(t,r){let n=this.resolveEndpoint();if(n==null)return;let i=new AbortController,o=setTimeout(()=>i.abort(),Mug);try{let s={"content-type":"application/json"},a=await wV();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(Nil(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function Qil(){let{fern_run_id:e,github_run_id:t}=Jae();return{action:process.env.FERN_ACTION,run_id:e,github_run_id:t,github_run_url:process.env.FERN_GITHUB_RUN_URL,org:void 0,config_repo:process.env.FERN_CONFIG_REPO,config_commit_sha:process.env.FERN_CONFIG_COMMIT_SHA,config_branch:process.env.FERN_CONFIG_BRANCH,config_pr_number:process.env.FERN_CONFIG_PR_NUMBER,trigger:process.env.GITHUB_EVENT_NAME,cli_version:"5.37.2"}}function Mil(){return process.env.FERN_AUTOMATION==="true"}var wyi=class{constructor(t,r=Cyi.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=Qil()}reporter;automationEventApiClient;context;setOrganization(t){this.context={...this.context,org:t}}emit(t,r){let n=this.captureSentryForFailure({event:t,context:this.context,error:r?.error}),i=n==null?t:{...t,attributes:{...t.attributes??{},sentry_event_id:n}};this.capturePostHogEvent({event:i,context:this.context}),this.captureAutomationEventApiEvent(i,this.context)}async flush(){await this.automationEventApiClient.shutdown()}capturePostHogEvent({event:t,context:r}){this.reporter.instrumentPostHogAutomationEvent({distinctId:r.run_id??void 0,event:t.event,properties:Ril(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!Dil(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:Fil(t,r),context:{automation:kil(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};Ut();function xyi(e,t,r){if(t instanceof pu)return;let n=IAe(t,r?.code),i=r?.argv??process.argv,o=i.join(" "),s=r?.message??(t instanceof Error?t.message:void 0)??"",a=t??new k({message:s,code:n});Mil()?zug(i,e,n,s,a):Lug(e,o,n,a)}function Lug(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),n9e(r)&&e.captureException(n,{tags:{"error.code":r}})}function zug(e,t,r,n,i){let o=jil(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}Ut();function Y8e(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function Syi({cliName:e,packageVersion:t,isLocal:r}){return Y8e()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var Tyi=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(Syi(r)&&n!=null&&n.length>0){let i="production";if(i==null||i.length===0)throw new k({message:"SENTRY_ENVIRONMENT must be set when SENTRY_DSN is configured",code:k.Code.ConfigError});this.sentry=IPt({dsn:n,release:t,environment:i,defaultIntegrations:!1,integrations:[zqe(),Kge(),Jge(),Rge(),Hge()],tracesSampleRate:0,attachStacktrace:!0,sendClientReports:!1}),CPt()}}captureException(t,r){if(this.sentry!=null)try{let n=r?.tags,i=r?.context,o=n!=null&&Object.keys(n).length>0,s=i!=null&&Object.values(i).some(a=>a!=null);return!o&&!s?this.sentry.captureException(t):FB(a=>{if(o&&a.setTags(n),i!=null)for(let[c,u]of Object.entries(i))u!=null&&a.setContext(c,u);return this.sentry?.captureException(t,void 0,a)})}catch{return}}async flush(){this.sentry!=null&&await Promise.resolve(this.sentry.flush(2e3)).catch(()=>{})}};Ut();var Byi=class{originalWrite;redirected=!1;redirect(){if(this.redirected)throw new k({message:"StdoutRedirector: already redirected \u2014 did you forget to restore()?",code:k.Code.InternalError});this.originalWrite=process.stdout.write,process.stdout.write=process.stderr.write.bind(process.stderr),this.redirected=!0}restore(){!this.redirected||this.originalWrite==null||(process.stdout.write=this.originalWrite,this.originalWrite=void 0,this.redirected=!1)}async withRedirect(t){this.redirect();try{return await t()}finally{this.restore()}}};jt();Gb();Ut();var uXt=class{result=Mf.Success;lastFailureMessage=void 0;logImmediately;logPrefix;title;subtasks=[];shouldBufferLogs;bufferedLogs=[];status="notStarted";onResult;instrumentPostHogEventImpl;captureExceptionImpl;emitAutomationTelemetryEventImpl;constructor({logImmediately:t,logPrefix:r,title:n,takeOverTerminal:i,onResult:o,shouldBufferLogs:s,instrumentPostHogEvent:a,captureException:c,emitAutomationTelemetryEvent:u}){this.logImmediately=t,this.logPrefix=r??"",this.title=n,this.takeOverTerminal=i,this.onResult=o,this.shouldBufferLogs=s,this.instrumentPostHogEventImpl=a,this.captureExceptionImpl=c,this.emitAutomationTelemetryEventImpl=u}start(){return this.status="running",this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.status="finished",this.flushLogs(),this.onResult?.(this.getResult()))}isFinished(){return this.status==="finished"}takeOverTerminal;failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),this.finish(),new pu}failWithoutThrowing(t,r,n){this.result=Mf.Failure,!(r instanceof pu)&&(t!=null&&(this.lastFailureMessage=t),d3t({message:t,error:r,logger:this.logger}),xyi(this,r,{...n,message:t}))}getLastFailureMessage(){return this.lastFailureMessage}captureException(t,r){return this.captureExceptionImpl?.(t,r)}emitAutomationTelemetryEvent(t,r){this.emitAutomationTelemetryEventImpl(t,r)}getResult(){return this.result}instrumentPostHogEvent(t){this.instrumentPostHogEventImpl(t)}logAtLevel(t,...r){this.logAtLevelWithOverrides(t,r)}logAtLevelWithOverrides(t,r,n={}){this.log({parts:r,level:t,time:new Date,...n})}log(t){this.bufferedLogs.push({...t,prefix:this.logPrefix}),this.shouldBufferLogs||this.flushLogs()}flushLogs(){this.logImmediately(this.bufferedLogs),this.bufferedLogs=[]}logger=zI(this.logAtLevel.bind(this));addInteractiveTask({name:t,subtitle:r}){let n=new gEs({name:t,subtitle:r,logImmediately:i=>this.logImmediately(i),logPrefix:`${this.logPrefix}${Ae.blackBright(t)} `,takeOverTerminal:this.takeOverTerminal,onResult:this.onResult,shouldBufferLogs:this.shouldBufferLogs,instrumentPostHogEvent:i=>this.instrumentPostHogEventImpl(i),captureException:this.captureExceptionImpl,emitAutomationTelemetryEvent:this.emitAutomationTelemetryEventImpl});return this.subtasks.push(n),n}async runInteractiveTask(t,r){let n=this.addInteractiveTask(t).start();try{await r(n)}catch(i){n.failWithoutThrowing(void 0,i)}finally{n.finish()}return n.getResult()===Mf.Success}printInteractiveTasks({spinner:t}){return this.subtasks.map(r=>r.print({spinner:t})).join(`
|
|
5013
5013
|
`)}},gEs=class extends uXt{name;subtitle;constructor({name:t,subtitle:r,...n}){super(n),this.name=t,this.subtitle=r}start(){return super.start(),this.logAtLevelWithOverrides(qn.Info,["Started."],{omitOnTTY:!0}),this.flushLogs(),this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.result===Mf.Success?this.logAtLevelWithOverrides(qn.Info,["Finished."],{omitOnTTY:!0}):this.logAtLevelWithOverrides(qn.Error,["Failed."],{omitOnTTY:!0}),super.finish())}setSubtitle(t){this.subtitle=t}print({spinner:t}){let r=[this.name];return this.subtitle!=null&&r.push(Ae.dim(this.subtitle)),r.push(...this.subtasks.map(n=>n.print({spinner:t}))),Dj({prefix:this.getIcon({spinner:t}),content:r.join(`
|
|
5014
5014
|
`)})}printInteractiveTasks({spinner:t}){return this.print({spinner:t})}getIcon({spinner:t}){let r=this.subtasks.length>0;switch(this.status){case"notStarted":return r?Ae.dim("\u25B8 "):Ae.dim("\u25E6 ");case"running":return r?Ae.cyan("\u25BE "):t;case"finished":switch(this.getResult()){case Mf.Success:return r?Ae.green("\u25BE "):Ae.green("\u2713 ");case Mf.Failure:return r?Ae.red("\u25BE "):Ae.red("x ")}}}getResult(){if(this.result===Mf.Failure)return Mf.Failure;for(let t of this.subtasks)if(t.getResult()===Mf.Failure)return Mf.Failure;return Mf.Success}};Ut();var Lil=we(MMe(),1);function zil(e){return e.filter(t=>t.isUpgradeAvailable).length>0}function Uug(e){return(e.cliUpgradeInfo?.isUpgradeAvailable??!1)||zil(e.generatorUpgradeInfo)}async function Uil({cliEnvironment:e,upgradeInfo:t}){if(!Uug(t)||e.packageVersion==t.cliUpgradeInfo?.latestVersion)return;let r=`${Ae.underline("Upgrades available")}
|
|
5015
5015
|
|
|
@@ -5018,7 +5018,7 @@ For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides
|
|
|
5018
5018
|
Run ${Ae.cyan("fern generator upgrade")} to upgrade your generators.`),i.length>2&&(r+=`
|
|
5019
5019
|
Run ${Ae.cyan("fern generator upgrade --list")} to see the full list of generator upgrades available.`),Uot(r,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"})}async function AEs({generatorUpgradeInfo:e,header:t,limit:r,includeBoxen:n=!0}){if(!zil(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+=`
|
|
5020
5020
|
${await _ug(a.generatorName)} (${a.apiName!=null?"API: "+a.apiName+", ":""}Group: ${a.generatorGroup}) `+Ae.dim(a.currentVersion)+Ae.reset(" \u2192 ")+Ae.green(a.latestVersion);return i+=`
|
|
5021
|
-
`,n?Uot(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function _ug(e){let r=await new Lil.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new k({message:`Generator ${e} not found`,code:k.Code.ConfigError});return r.body.displayName}Ut();async function Vug({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await _il({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=BMe(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await N1({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 _il({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=BMe(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await N1({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 _il({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 q3({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?uy(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 Vil(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=UQ(a.latestVersion,a.previousVersion)}catch{throw new k({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:k.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 Oyi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await Vug({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(...Vil(u,c,t.logger));else s.push(...Vil(a.versions,void 0,t.logger))}return s}Ut();async function Whe({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await eFt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new k({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:k.Code.NetworkError})}}var qil=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Pyi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=qn.Info;isLocal;stdoutRedirector=new Byi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await X_t();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new P3t(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 Tyi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new wyi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.37.
|
|
5021
|
+
`,n?Uot(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function _ug(e){let r=await new Lil.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new k({message:`Generator ${e} not found`,code:k.Code.ConfigError});return r.body.displayName}Ut();async function Vug({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await _il({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=BMe(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await N1({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 _il({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=BMe(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await N1({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 _il({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 q3({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?uy(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 Vil(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=UQ(a.latestVersion,a.previousVersion)}catch{throw new k({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:k.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 Oyi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await Vug({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(...Vil(u,c,t.logger));else s.push(...Vil(a.versions,void 0,t.logger))}return s}Ut();async function Whe({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await eFt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new k({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:k.Code.NetworkError})}}var qil=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Pyi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=qn.Info;isLocal;stdoutRedirector=new Byi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await X_t();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new P3t(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 Tyi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new wyi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.37.2"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${Ae.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new pu}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof pu)&&(d3t({message:t,error:r,logger:this.logger}),xyi(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)+`
|
|
5022
5022
|
`),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(),await this.automationTelemetryManager.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 Uil({cliEnvironment:this.environment,upgradeInfo:t});r!=null&&(r.endsWith(`
|
|
5023
5023
|
`)||(r+=`
|
|
5024
5024
|
`),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=JOi(t.map(n=>n.type==="docs"?"docs":n.workspaceName??"api"),n=>n.length);r!=null&&(this.longestWorkspaceName=r)}project;registerProject(t){this.project=t,this.automationTelemetryManager.setOrganization(t.config.organization)}runTask(t){return this.runTaskWithInit(this.constructTaskInit(),t)}addTask(){return this.addTaskWithInit(this.constructTaskInit())}async runTaskForWorkspace(t,r){await this.runTaskWithInit(this.constructTaskInitForWorkspace(t),r)}addTaskWithInit(t){let r=new uXt(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 pu}finally{n.finish()}return i}instrumentPostHogEvent(t){this.isLocal||this.posthogManager.sendEvent(t)}instrumentPostHogAutomationEvent(t){this.isLocal||this.posthogManager.sendAutomationEvent(t)}captureException(t,r){return this.sentryClient.captureException(t,r)}emitAutomationTelemetryEvent(t,r){this.automationTelemetryManager.emit(t,r)}logger=zI((t,...r)=>this.log(t,...r));stderr=zI((t,...r)=>this.logStderr(t,...r));constructTaskInitForWorkspace(t){let r=t.type==="docs"?"docs":t.workspaceName??"api",n=Gil(r),i=1+(this.longestWorkspaceName!=null?Gil(this.longestWorkspaceName):n).length,o=n.padEnd(i),s=qil[this.numTasks++%qil.length],a=Ae.hex(s)(o);return{...this.constructTaskInit(),logPrefix:a,title:Ae.hex(s).bold(r)}}constructTaskInit(){return{logImmediately:t=>this.logImmediately(t),takeOverTerminal:t=>this.ttyAwareLogger.takeOverTerminal(t),onResult:t=>{t===Mf.Failure&&(this.didSucceed=!1)},instrumentPostHogEvent:t=>{this.instrumentPostHogEvent(t)},shouldBufferLogs:!1,captureException:(t,r)=>this.sentryClient.captureException(t,r),emitAutomationTelemetryEvent:(t,r)=>this.emitAutomationTelemetryEvent(t,r)}}log(t,...r){this.logImmediately([{parts:r,level:t,time:new Date}])}logStderr(t,...r){this.logImmediately([{parts:r,level:t,time:new Date}],{stderr:!0})}logImmediately(t,{stderr:r=!1}={}){let n=t.filter(i=>Rx.indexOf(i.level)>=Rx.indexOf(this.logLevel));this.ttyAwareLogger.log(n,{includeDebugInfo:this.logLevel===qn.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 Whe({cliEnvironment:this.environment,includePreReleases:t}),n=UQ(r,this.environment.packageVersion);this.logger.debug(`Latest version: ${r}. `+(n?"Upgrade available.":"No upgrade available."));let i={isUpgradeAvailable:n,latestVersion:r},o=await Oyi({project:this.project,cliContext:this});this._isUpgradeAvailable={cliUpgradeInfo:i,generatorUpgradeInfo:o}}return this._isUpgradeAvailable}async confirmPrompt(t,r=!1){try{return await hEs({message:t,choices:[{name:"No",value:!1},{name:"Yes",value:!0}],default:r,theme:{prefix:Ae.yellow("?"),style:{answer:i=>Ae.cyan(i),message:i=>Ae.bold(i),highlight:i=>Ae.cyan(i)}}})}catch(n){throw n?.name==="ExitPromptError"?(this.logger.info(`
|
|
@@ -5103,7 +5103,7 @@ Preview URLs follow the pattern: {org}-preview-{hash}.docs.buildwithfern.com
|
|
|
5103
5103
|
Example: acme-preview-abc123.docs.buildwithfern.com`,void 0,{code:k.Code.ConfigError});return}let s=await e.runTask(async a=>QA(a));if(s==null){e.failAndThrow("Failed to authenticate. Please run 'fern login' first.",void 0,{code:k.Code.AuthError});return}await e.runTask(async a=>{a.logger.info(`Deleting preview site: ${o}`);let c=Ak({token:s.value});try{await c.docs.v2.write.deleteDocsSite({url:o}),a.logger.info(Ae.green(`Successfully deleted preview site: ${o}`))}catch(u){switch(u?.error){case"UnauthorizedError":return a.failAndThrow("You do not have permissions to delete this preview site. Reach out to support@buildwithfern.com",void 0,{code:k.Code.NetworkError});case"DocsNotFoundError":return a.failAndThrow(`Preview site not found: ${o}`,void 0,{code:k.Code.ConfigError});default:return a.failAndThrow(`Failed to delete preview site: ${o}`,u,{code:k.Code.NetworkError})}}})}Ut();async function pdl({cliContext:e,limit:t,page:r}){let n=await e.runTask(async i=>QA(i));if(n==null){e.failAndThrow("Failed to authenticate. Please run 'fern login' first.",void 0,{code:k.Code.AuthError});return}await e.runTask(async i=>{i.logger.info("Fetching preview deployments...");let o=Ak({token:n.value}),s;try{s=await o.docs.v2.read.listAllDocsUrls({page:r,limit:t??100,preview:!0})}catch(u){return u?.error==="UnauthorizedError"?i.failAndThrow("Unauthorized to list preview deployments. Please run 'fern login' to refresh your credentials, or set the FERN_TOKEN environment variable.",void 0,{code:k.Code.NetworkError}):(i.logger.debug(`Error fetching preview deployments: ${JSON.stringify(u)}`),i.failAndThrow("Failed to fetch preview deployments. Please ensure you are logged in with 'fern login' or have FERN_TOKEN set, then try again.",u,{code:k.Code.NetworkError}))}let a=/-preview-[a-f0-9-]+\.docs\.buildwithfern\.com$/,c=s.urls.filter(u=>a.test(u.domain)).map(u=>({url:u.basePath!=null?`${u.domain}${u.basePath}`:u.domain,organizationId:u.organizationId,updatedAt:u.updatedAt}));if(c.length===0){i.logger.info("No preview deployments found.");return}i.logger.info(Ae.bold(`
|
|
5104
5104
|
Found ${c.length} preview deployment(s):
|
|
5105
5105
|
`));for(let u of c){let l=new Date(u.updatedAt).toLocaleString();i.logger.info(` ${Ae.cyan(u.url)}`),i.logger.info(` Organization: ${u.organizationId}`),i.logger.info(` Updated: ${l}
|
|
5106
|
-
`)}})}Ut();tr();var kae=require("fs/promises");Rs();var RL=we(require("path"),1),zgg=new Set(["logo","favicon","colors","typography","layout","navbar-links","footer-links","background-image","theme","css","js","header","footer","metadata"]),y0i=class{constructor(t){this.docsWorkspace=t}docsWorkspace;async export({output:t,context:r}){let n=this.docsWorkspace.absoluteFilepathToDocsConfig,i=RL.default.dirname(n),o=t!=null?RL.default.resolve(process.cwd(),t):RL.default.join(this.docsWorkspace.absoluteFilePath,"theme");r.logger.info(`Exporting theme-eligible fields from docs.yml \u2192 ${o}`);let s=Cr.load(await(0,kae.readFile)(n,"utf-8")),a={};for(let[l,p]of Object.entries(s))zgg.has(l)&&(a[l]=p);await(0,kae.mkdir)(o,{recursive:!0});let c=RL.default.join(o,"assets");await(0,kae.mkdir)(c,{recursive:!0});let u=await eIs(a,i,c);await(0,kae.writeFile)(RL.default.join(o,"theme.yml"),Cr.dump(u),"utf-8"),r.logger.info(`Theme exported to ${o}/theme.yml`)}};async function eIs(e,t,r){if(e===null||typeof e!="object"){if(typeof e=="string"&&!p3(e)){let i=RL.default.resolve(t,e),o=RL.default.relative(t,i),s=RL.default.dirname(t),a=RL.default.relative(s,i),c=o.startsWith("..")?a.startsWith("..")?RL.default.basename(i):a:o,u=RL.default.join(r,c);try{return await(0,kae.mkdir)(RL.default.dirname(u),{recursive:!0}),await(0,kae.copyFile)(i,u),`./assets/${c.split(RL.default.sep).join("/")}`}catch{return e}}return e}if(Array.isArray(e))return Promise.all(e.map(i=>eIs(i,t,r)));let n={};for(let[i,o]of Object.entries(e))n[i]=await eIs(o,t,r);return n}async function fdl({cliContext:e,output:t}){let n=(await kc(e,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0})).docsWorkspaces;if(n==null){e.failAndThrow("No docs.yml found. Run this command from a directory containing a fern/ workspace.",void 0,{code:k.Code.ConfigError});return}await e.runTask(async i=>{await new y0i(n).export({output:t,context:i})})}Ut();var eJ=process.env.OVERRIDE_FDR_ORIGIN??"https://registry.buildwithfern.com";function T1t(e){if(!(e instanceof Error))return String(e);let t=e.cause;return t instanceof Error?t.message:e.message}function B1t(e){try{let t=JSON.parse(e),r=t.message??t.error?.message;if(typeof r=="string")return r}catch{}}async function ddl({cliContext:e,org:t,json:r}){let n=await e.runTask(async s=>QA(s));if(n==null){e.failAndThrow("Failed to authenticate. Please run 'fern login' first.",void 0,{code:k.Code.AuthError});return}let i=await kc(e,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0}),o=t??i.config.organization;await e.runTask(async s=>{let a=await fetch(`${eJ}/v2/registry/themes/${o}`,{headers:{Authorization:`Bearer ${n.value}`}});if(!a.ok){let u=await a.text(),l=B1t(u)??u;s.failAndThrow(`Failed to list themes: HTTP ${a.status} \u2014 ${l}`,void 0,{code:k.Code.NetworkError});return}let c=await a.json();if(c.themes.length===0){s.logger.info(`No themes found for org "${o}".`);return}if(r){process.stdout.write(JSON.stringify(c.themes,null,2)+`
|
|
5106
|
+
`)}})}Ut();tr();var kae=require("fs/promises");Rs();var RL=we(require("path"),1),zgg=new Set(["logo","favicon","colors","typography","layout","navbar-links","footer-links","background-image","theme","css","js","header","footer","metadata","settings"]),y0i=class{constructor(t){this.docsWorkspace=t}docsWorkspace;async export({output:t,context:r}){let n=this.docsWorkspace.absoluteFilepathToDocsConfig,i=RL.default.dirname(n),o=t!=null?RL.default.resolve(process.cwd(),t):RL.default.join(this.docsWorkspace.absoluteFilePath,"theme");r.logger.info(`Exporting theme-eligible fields from docs.yml \u2192 ${o}`);let s=Cr.load(await(0,kae.readFile)(n,"utf-8")),a={};for(let[l,p]of Object.entries(s))zgg.has(l)&&(a[l]=p);await(0,kae.mkdir)(o,{recursive:!0});let c=RL.default.join(o,"assets");await(0,kae.mkdir)(c,{recursive:!0});let u=await eIs(a,i,c);await(0,kae.writeFile)(RL.default.join(o,"theme.yml"),Cr.dump(u),"utf-8"),r.logger.info(`Theme exported to ${o}/theme.yml`)}};async function eIs(e,t,r){if(e===null||typeof e!="object"){if(typeof e=="string"&&!p3(e)){let i=RL.default.resolve(t,e),o=RL.default.relative(t,i),s=RL.default.dirname(t),a=RL.default.relative(s,i),c=o.startsWith("..")?a.startsWith("..")?RL.default.basename(i):a:o,u=RL.default.join(r,c);try{return await(0,kae.mkdir)(RL.default.dirname(u),{recursive:!0}),await(0,kae.copyFile)(i,u),`./assets/${c.split(RL.default.sep).join("/")}`}catch{return e}}return e}if(Array.isArray(e))return Promise.all(e.map(i=>eIs(i,t,r)));let n={};for(let[i,o]of Object.entries(e))n[i]=await eIs(o,t,r);return n}async function fdl({cliContext:e,output:t}){let n=(await kc(e,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0})).docsWorkspaces;if(n==null){e.failAndThrow("No docs.yml found. Run this command from a directory containing a fern/ workspace.",void 0,{code:k.Code.ConfigError});return}await e.runTask(async i=>{await new y0i(n).export({output:t,context:i})})}Ut();var eJ=process.env.OVERRIDE_FDR_ORIGIN??"https://registry.buildwithfern.com";function T1t(e){if(!(e instanceof Error))return String(e);let t=e.cause;return t instanceof Error?t.message:e.message}function B1t(e){try{let t=JSON.parse(e),r=t.message??t.error?.message;if(typeof r=="string")return r}catch{}}async function ddl({cliContext:e,org:t,json:r}){let n=await e.runTask(async s=>QA(s));if(n==null){e.failAndThrow("Failed to authenticate. Please run 'fern login' first.",void 0,{code:k.Code.AuthError});return}let i=await kc(e,{commandLineApiWorkspace:void 0,defaultToAllApiWorkspaces:!0}),o=t??i.config.organization;await e.runTask(async s=>{let a=await fetch(`${eJ}/v2/registry/themes/${o}`,{headers:{Authorization:`Bearer ${n.value}`}});if(!a.ok){let u=await a.text(),l=B1t(u)??u;s.failAndThrow(`Failed to list themes: HTTP ${a.status} \u2014 ${l}`,void 0,{code:k.Code.NetworkError});return}let c=await a.json();if(c.themes.length===0){s.logger.info(`No themes found for org "${o}".`);return}if(r){process.stdout.write(JSON.stringify(c.themes,null,2)+`
|
|
5107
5107
|
`);return}for(let u of c.themes)process.stdout.write(u.name+`
|
|
5108
5108
|
`)})}Ut();var Adl=require("fs/promises");Rs();var ydl=we(require("path"),1);tr();Ut();var mdl=require("child_process"),hdl=require("crypto"),E0i=require("fs/promises"),gdl=we(wLe(),1),DFe=we(require("path"),1);function Ugg(){try{return(0,mdl.execSync)("git rev-parse --show-toplevel",{encoding:"utf-8"}).trim()}catch{return process.cwd()}}function _gg(e,t){let r=DFe.default.basename(e),n=DFe.default.relative(e,t);return[r,...n.split(DFe.default.sep)].join("/")}var b0i=class{themeDir;orgId;token;gitRoot;context;constructor({docsWorkspace:t,orgId:r,token:n,context:i}){this.themeDir=DFe.default.join(t.absoluteFilePath,"theme"),this.orgId=r,this.token=n,this.gitRoot=Ugg(),this.context=i}async process(t){return await this.validateAllFiles(t),this.uploadAllFiles(t)}async validateAllFiles(t){let r=this.collectFilePaths(t),n=[];if(await Promise.all(r.map(async i=>{let o=DFe.default.resolve(this.themeDir,i);try{await(0,E0i.access)(o)}catch{n.push(`Referenced file not found: ${o}`)}})),n.length>0)throw new k({message:`Theme validation failed:
|
|
5109
5109
|
${n.map(i=>` - ${i}`).join(`
|
package/package.json
CHANGED