fern-api 5.45.1 → 5.45.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 @@ ${gQc.default.cursorShow}`)}releaseCursor(){this.extraLinesUnderPrompt>0&&fxo(th
|
|
|
3222
3222
|
`+bze.default.red(">> ")+t),this.screen.render(r,n)}getMaskedValue(t){return this.status==="answered"?this.opt.mask?bze.default.cyan(xQc(t,this.opt.mask)):bze.default.italic(bze.default.dim("[hidden]")):this.opt.mask?xQc(t,this.opt.mask):bze.default.italic(bze.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 $7r=Ce(pS(),1);var CMc=Ce(Hxo(),1),X7r=require("child_process"),Wot=require("fs"),Y7r=Ce(require("path"),1),xMc=Ce(require("os"),1),SMc=require("crypto"),DSo=Ce(IMc(),1);var H7r=class extends Error{originalError;constructor(t){super(`Failed to create temporary file. ${t.message}`),this.originalError=t}};var nVt=class extends Error{originalError;constructor(t){super(`Failed to launch editor. ${t.message}`),this.originalError=t}};var K7r=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 Z7r(e="",t,r){let n=new RSo(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 wMc(e){return e?e.replace(/[^a-zA-Z0-9_.-]/g,"_"):""}function pVd(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 RSo=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=pVd(t).map(i=>i.replace("\\ "," ")),n=r.shift();this.editor={args:r,bin:n}}createTemporaryFile(){try{let t=this.fileOptions.dir??xMc.default.tmpdir(),r=(0,SMc.randomUUID)(),n=wMc(this.fileOptions.prefix),i=wMc(this.fileOptions.postfix),o=`${n}${r}${i}`,s=Y7r.default.resolve(t,o),a=Y7r.default.resolve(t)+Y7r.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,Wot.writeFileSync)(this.tempFile,this.text,c)}catch(t){throw new H7r(t)}}readTemporaryFile(){try{let t=(0,Wot.readFileSync)(this.tempFile);if(t.length===0)this.text="";else{let r=(0,CMc.detect)(t)??"utf8";DSo.default.encodingExists(r)||(r="utf8"),this.text=DSo.default.decode(t,r)}}catch(t){throw new K7r(t)}}removeTemporaryFile(){try{(0,Wot.unlinkSync)(this.tempFile)}catch(t){throw new J7r(t)}}launchEditor(){try{let t=(0,X7r.spawnSync)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"});this.lastExitStatus=t.status??0}catch(t){throw new nVt(t)}}launchEditorAsync(t){try{(0,X7r.spawn)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"}).on("exit",n=>{this.lastExitStatus=n,setImmediate(t)})}catch(r){throw new nVt(r)}}};var TMc=Ce(yz(),1);var iVt=class extends fS{_run(t){this.done=t,this.editorResult=new TMc.Subject;let r=HO(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"?$7r.default.dim("Received"):$7r.default.dim("Press <enter> to launch your preferred editor."),t&&(r=$7r.default.red(">> ")+t),this.screen.render(n,r)}startExternalEditor(){this.rl.pause(),Z7r(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 RMc=require("stream");var PMc=Ce(require("readline"),1),DMc=Ce(OMc(),1),wze=class{constructor(t){this.rl||=PMc.default.createInterface(dVd(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 dVd(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 DMc.default;return r.pipe(e.output||process.stdout),{terminal:!0,...e,input:t,output:r}}var oVt=class extends wze{constructor(t={}){super(t),this.log=new RMc.Writable({write:(r,n,i)=>{this.writeLog(r),i()}}),this.bottomBar=t.bottomBar||"",this.render()}render(){return this.write(this.bottomBar),this}clean(){return __t(this.rl,this.bottomBar.split(`
|
|
3223
3223
|
`).length),this}updateBottomBar(t){return __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&&v7r(this.rl,t.length+this.rl.line.length),this.rl.output.write(t)}};var qd=Ce(yz(),1),NMc=Ce(b_t(),1);var eqr=Ce(yz(),1),FMc=Ce(b_t(),1),tqr=function(e,t,r){return typeof e[t]!="function"?(0,eqr.of)(e):(0,eqr.from)((0,FMc.default)(e[t])(r).then(n=>(e[t]=n,e)))};var kMc={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}},Hot=class extends wze{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,qd.from)(t):(0,qd.isObservable)(t)?n=t:Object.values(t).every(i=>typeof i=="object"&&!Array.isArray(i)&&i!=null)?n=(0,qd.from)(Object.entries(t).map(([i,o])=>({name:i,...o}))):n=(0,qd.from)([t]),this.process=n.pipe((0,qd.concatMap)(this.processQuestion.bind(this)),(0,qd.publish)()),this.process.connect(),this.process.pipe((0,qd.reduce)((i,o)=>(kMc.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,qd.defer)(()=>(0,qd.of)(t).pipe((0,qd.concatMap)(this.setDefaultType.bind(this)),(0,qd.concatMap)(this.filterIfRunnable.bind(this)),(0,qd.concatMap)(()=>tqr(t,"message",this.answers)),(0,qd.concatMap)(()=>tqr(t,"default",this.answers)),(0,qd.concatMap)(()=>tqr(t,"choices",this.answers)),(0,qd.concatMap)(this.fetchAnswer.bind(this))))}fetchAnswer(t){let r=this.prompts[t.type];return this.activePrompt=new r(t,this.rl,this.answers),(0,qd.defer)(()=>(0,qd.from)(this.activePrompt.run().then(n=>({name:t.name,answer:n}))))}setDefaultType(t){return this.prompts[t.type]||(t.type="input"),(0,qd.defer)(()=>(0,qd.of)(t))}filterIfRunnable(t){if(t.askAnswered!==!0&&kMc.get(this.answers,t.name)!==void 0)return qd.EMPTY;if(t.when===!1)return qd.EMPTY;if(typeof t.when!="function")return(0,qd.of)(t);let{answers:r}=this;return(0,qd.defer)(()=>(0,qd.from)((0,NMc.default)(t.when)(r).then(n=>{if(n)return t})).pipe((0,qd.filter)(n=>n!=null)))}};function jMc(e){let t=function(r,n){let i;try{i=new Hot(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",q_t),this.registerPrompt("input",yze),this.registerPrompt("number",G_t),this.registerPrompt("confirm",W_t),this.registerPrompt("rawlist",H_t),this.registerPrompt("expand",K_t),this.registerPrompt("checkbox",J_t),this.registerPrompt("password",Y_t),this.registerPrompt("editor",iVt)},t.restoreDefaultPrompts(),t}var kSo=jMc();function hVd(e,t){kSo.registerPrompt(e,t)}function gVd(){kSo.restoreDefaultPrompts()}var AVd={prompt:kSo,ui:{BottomBar:oVt,Prompt:Hot},createPromptModule:jMc,registerPrompt:hVd,restoreDefaultPrompts:gVd,Separator:cM},Nu=AVd;var Kot=require("path");function MMc(){let e=yVd();return async t=>{for(let r of t)r.module=e(r.filename);return t}}function yVd(e=process.argv[1]?(0,Kot.dirname)(process.argv[1]):process.cwd(),t=Kot.sep==="\\"){let r=t?QMc(e):e;return n=>{if(!n)return;let i=t?QMc(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 QMc(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var NSo=e=>{if("flags"in e){let t=LMc(e.flags),r=zMc(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([i,o])=>[i,jSo(o)])),n=Object.fromEntries(Object.entries(t).map(([i,o])=>[i,bVd(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function bVd(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 LMc=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,sVt(r)]).filter(([,t])=>t!==void 0)),zMc=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?jSo(n):void 0]}))};var sVt=e=>e===void 0?void 0:e.variant??e.enabled,jSo=e=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};function UMc(){return"CompressionStream"in globalThis}async function rqr(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 nqr="0123456789abcdef",iqr=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+=nqr.charAt(this.bytes[r]>>>4),t+=nqr.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+=nqr.charAt(this.bytes[r]>>>4),t+=nqr.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}},QSo=class{constructor(t){this.timestamp=0,this.counter=0,this.random=t??EVd()}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 iqr.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,iqr.ofInner(t)}},EVd=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),_Mc,Awe=()=>vVd().toString(),vVd=()=>(_Mc||(_Mc=new QSo)).generate();var lM=(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 IVd=["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"],VMc=function(e,t=[]){if(!e)return!1;let r=e.toLowerCase();return IVd.concat(t).some(n=>{let i=n.toLowerCase();return r.indexOf(i)!==-1})};var CVd=Array.isArray,qMc=Object.prototype,QtE=qMc.hasOwnProperty,MSo=qMc.toString,LSo=CVd||function(e){return MSo.call(e)==="[object Array]"};var zSo=e=>e===Object(e)&&!LSo(e);var aVt=e=>e===void 0,cVt=e=>MSo.call(e)=="[object String]",GMc=e=>cVt(e)&&e.trim().length===0;var WMc=e=>MSo.call(e)=="[object Number]"&&e===e;var USo=e=>e instanceof Error;function oqr(e){return e===null||typeof e!="object"}function Cze(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function HMc(e){return Cze(e,"ErrorEvent")}function Jot(e){return typeof Event<"u"&&xVd(e,Event)}function KMc(e){return Cze(e,"Object")}function xVd(e,t){try{return e instanceof t}catch{return!1}}function uVt(e,t,r,n,i){return t>r&&(n.warn("min cannot be greater than max."),t=r),WMc(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),uVt(i||r,t,r,n))}var SVd=864e5,sqr=class{constructor(t){this._buckets={},this._onBucketRateLimited=t._onBucketRateLimited,this._bucketSize=uVt(t.bucketSize,0,100,t._logger),this._refillRate=uVt(t.refillRate,0,this._bucketSize,t._logger),this._refillInterval=uVt(t.refillInterval,0,SVd,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 aqr=class{add(t){let r=Awe();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 TVd(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var JMc=(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=>JMc(`${e} ${o}`,t,r)}},BVd=e=>e();function YMc(e,t=BVd){return JMc(e,t,TVd())}var Xot="Mobile",uqr="iOS",Yot="Android",XMc="Tablet",JtE=Yot+" "+XMc;var OVd="Apple",YtE=OVd+" Watch",ZMc="Safari",lqr="BlackBerry",$Mc="Samsung",PVd=$Mc+"Browser",DVd=$Mc+" Internet",pqr="Chrome",RVd=pqr+" OS",FVd=pqr+" "+uqr,e6c="Internet Explorer",kVd=e6c+" "+Xot,VSo="Opera",XtE=VSo+" Mini",t6c="Edge",NVd="Microsoft "+t6c,qSo="Firefox",jVd=qSo+" "+uqr,GSo="Nintendo",WSo="PlayStation",cqr="Xbox",QVd=Yot+" "+Xot,MVd=Xot+" "+ZMc,lVt="Windows",LVd=lVt+" Phone";var r6c="Generic",ZtE=r6c+" "+Xot.toLowerCase(),$tE=r6c+" "+XMc.toLowerCase(),zVd="Konqueror",D2="(\\d+(\\.\\d+)?)",_So=new RegExp("Version/"+D2),erE=new RegExp(cqr,"i"),trE=new RegExp(WSo+" \\w+","i"),rrE=new RegExp(GSo+" \\w+","i"),UVd=new RegExp(lqr+"|PlayBook|BB10","i"),_Vd={"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 nrE={[kVd]:[new RegExp("rv:"+D2)],[NVd]:[new RegExp(t6c+"?\\/"+D2)],[pqr]:[new RegExp("("+pqr+"|CrMo)\\/"+D2)],[FVd]:[new RegExp("CriOS\\/"+D2)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+D2)],[ZMc]:[_So],[MVd]:[_So],[VSo]:[new RegExp("("+VSo+"|OPR)\\/"+D2)],[qSo]:[new RegExp(qSo+"\\/"+D2)],[jVd]:[new RegExp("FxiOS\\/"+D2)],[zVd]:[new RegExp("Konqueror[:/]?"+D2,"i")],[lqr]:[new RegExp(lqr+" "+D2),_So],[QVd]:[new RegExp("android\\s"+D2,"i")],[DVd]:[new RegExp(PVd+"\\/"+D2)],[e6c]:[new RegExp("(rv:|MSIE )"+D2)],Mozilla:[new RegExp("rv:"+D2)]};var irE=[[new RegExp(cqr+"; "+cqr+" (.*?)[);]","i"),e=>[cqr,e&&e[1]||""]],[new RegExp(GSo,"i"),[GSo,""]],[new RegExp(WSo,"i"),[WSo,""]],[UVd,[lqr,""]],[new RegExp(lVt,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[LVd,""];if(new RegExp(Xot).test(t)&&!/IEMobile\b/.test(t))return[lVt+" "+Xot,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let n=r[1],i=_Vd[n]||"";return/arm/i.test(t)&&(i="RT"),[lVt,i]}return[lVt,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,e=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[uqr,t.join(".")]}return[uqr,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,e=>{let t="";return e&&e.length>=3&&(t=aVt(e[2])?e[3]:e[2]),["watchOS",t]}],[new RegExp("("+Yot+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Yot+")","i"),e=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[Yot,t.join(".")]}return[Yot,""]}],[/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/,[RVd,""]],[/Linux|debian/i,["Linux",""]]];var n6c="utf8";function i6c(e,t){if(!e||typeof e!="string"||VVd(e))throw new Error(t)}function VVd(e){return e.trim().length===0}function o6c(e){return e?.replace(/\/+$/,"")}async function s6c(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 fqr(){return new Date().toISOString()}function Nfe(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}var a6c=e=>e instanceof Error;function HSo(e){return Promise.all(e.map(t=>(t??Promise.resolve()).then(r=>({status:"fulfilled",value:r}),r=>({status:"rejected",reason:r}))))}var dqr=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 xze=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()}},Zot=class extends Error{constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};async function c6c(e){if(e instanceof xze){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 KSo(e){return typeof e=="object"&&(e instanceof xze||e instanceof Zot)}function u6c(e){return typeof e=="object"&&e instanceof xze&&e.status===413}var pVt=class{constructor(t,r={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new aqr,this._events=new dqr,this._isInitialized=!1,i6c(t,"You must pass your PostHog project's api key."),this.apiKey=t,this.host=o6c(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:KSo},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=YMc("[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=!UMc()||(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(lM.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(lM.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(lM.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:NSo(p)})).catch(p=>(this._events.emit("error",p),{success:!1,error:this.categorizeRequestError(p)}))}categorizeRequestError(t){if(t instanceof xze)return{type:"api_error",statusCode:t.status};if(t instanceof Zot){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=sVt(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(lM.Props)),this._props||{}}set props(t){this._props=t}async register(t){this.wrap(()=>{this.props={...this.props,...t},this.setPersistedProperty(lM.Props,this.props)})}async unregister(t){this.wrap(()=>{delete this.props[t],this.setPersistedProperty(lM.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(lM.Queue)||[];o.length>=this.maxQueueSize&&(o.shift(),this._logger.info("Queue is full, the oldest event is dropped.")),o.push({message:i}),this.setPersistedProperty(lM.Queue,o),this._events.emit(t,i),o.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=Nfe(()=>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:fqr()};this.historicalMigration&&(o.historical_migration=!0);let s=JSON.stringify(o),a=`${this.host}/batch/`,c=this.disableCompression?null:await rqr(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:fqr(),uuid:n?.uuid?n.uuid:Awe()};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 c6c(t)})}async flush(){let t=HSo([this.flushPromise]).then(()=>this._flush());return this.flushPromise=t,this.addPendingPromise(t),HSo([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(lM.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(lM.Queue)||[]).slice(i.length);this.setPersistedProperty(lM.Queue,m),t=m,await this.flushStorage()},a={api_key:this.apiKey,batch:o,sent_at:fqr()};this.historicalMigration&&(a.historical_migration=!0);let c=JSON.stringify(a),u=`${this.host}/batch/`,l=this.disableCompression?null:await rqr(c,this.isDebug),p={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...l!==null&&{"Content-Encoding":"gzip"}},body:l||c},d={retryCheck:f=>u6c(f)?!1:KSo(f)};try{await this.fetchWithRetry(u,p,d)}catch(f){if(u6c(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 Zot||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,n6c)}catch{o instanceof Blob?s=o.size:s=new TextEncoder().encode(o).length}return await s6c(async()=>{let a=new AbortController,c=i??this.requestTimeout,u=Nfe(()=>a.abort(),c),l=null;try{l=await this.fetch(t,{signal:a.signal,...r})}catch(d){throw new Zot(d)}finally{clearTimeout(u)}if(!(r.mode==="no-cors")&&(l.status<200||l.status>=400))throw new xze(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(lM.Queue)||[]).length===0||(await this.flush(),r)););}catch(o){if(!KSo(o))throw o;await c6c(o)}},i;try{return await Promise.race([new Promise((o,s)=>{i=Nfe(()=>{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 pM={};te(pM,{DOMExceptionCoercer:()=>ZSo,ErrorCoercer:()=>$So,ErrorEventCoercer:()=>e1o,ErrorPropertiesBuilder:()=>JSo,EventCoercer:()=>n1o,ObjectCoercer:()=>r1o,PrimitiveCoercer:()=>i1o,PromiseRejectionEventCoercer:()=>o1o,ReduceableCache:()=>s1o,StringCoercer:()=>t1o,chromeStackLineParser:()=>YSo,createDefaultStackParser:()=>i5d,createStackParser:()=>E6c,geckoStackLineParser:()=>XSo,nodeStackLineParser:()=>g6c,opera10StackLineParser:()=>d6c,opera11StackLineParser:()=>m6c,reverseAndStripFrames:()=>b6c,winjsStackLineParser:()=>f6c});var mqr,l6c,hqr;function p6c(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);return hqr&&r.length===l6c||(l6c=r.length,hqr=r.reduce((n,i)=>{mqr||(mqr={});let o=mqr[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,mqr[i]=[u,l];break}}}return n},{})),hqr}var GVd=4,JSo=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&&LSo(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:p6c(this.stackParser),skipFirstLines:t.skipFirstLines??1}}buildCoercingContext(t,r,n=0){let i=(s,a)=>{if(a<=GVd){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 JO="?";function Aee(e,t,r,n,i){let o={platform:e,filename:t,function:r==="<anonymous>"?JO:r,in_app:!0};return aVt(n)||(o.lineno=n),aVt(i)||(o.colno=i),o}var gqr=(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]:JO,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var WVd=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,HVd=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,KVd=/\((\S*)(?::(\d+))(?::(\d+))\)/,YSo=(e,t)=>{let r=WVd.exec(e);if(r){let[,i,o,s]=r;return Aee(t,i,JO,+o,+s)}let n=HVd.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let a=KVd.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}let[o,s]=gqr(n[1]||JO,n[2]);return Aee(t,s,o,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var JVd=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,YVd=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,XSo=(e,t)=>{let r=JVd.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let s=YVd.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]||JO;return[o,i]=gqr(o,i),Aee(t,i,o,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var XVd=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,f6c=(e,t)=>{let r=XVd.exec(e);return r?Aee(t,r[2],r[1]||JO,+r[3],r[4]?+r[4]:void 0):void 0};var ZVd=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,d6c=(e,t)=>{let r=ZVd.exec(e);return r?Aee(t,r[2],r[3]||JO,+r[1]):void 0},$Vd=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,m6c=(e,t)=>{let r=$Vd.exec(e);return r?Aee(t,r[5],r[3]||r[4]||JO,+r[1],+r[2]):void 0};var e5d=/^\s*[-]{4,}$/,t5d=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,g6c=(e,t)=>{let r=e.match(t5d);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||JO,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:h6c(r[3]),colno:h6c(r[4]),in_app:r5d(c||"",u),platform:t}}if(e.match(e5d))return{filename:e,platform:t}};function r5d(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 h6c(e){return parseInt(e||"",10)||void 0}var A6c=/\(error: (.*)\)/,y6c=50;function b6c(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,y6c).map(r=>({...r,filename:r.filename||n5d(t).filename,function:r.function||JO}))}function n5d(e){return e[e.length-1]||{}}function i5d(){return E6c("web:javascript",YSo,XSo)}function E6c(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=A6c.test(a)?a.replace(A6c,"$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>=y6c)break}}return b6c(i)}}var ZSo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=cVt(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 $So=class{match(t){return USo(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 e1o=class{constructor(){}match(t){return HMc(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 o5d=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,t1o=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(o5d);return i&&(r=i[1],n=i[2]),[r,n]}};var v6c=["fatal","error","warning","log","info","debug"];function Aqr(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 r1o=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 Jot(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=Aqr(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return cVt(t)&&!GMc(t)&&v6c.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(a6c(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var n1o=class{match(t){return Jot(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${Aqr(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var i1o=class{match(t){return oqr(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var o1o=class{match(t){return Cze(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!Jot(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 oqr(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 s1o=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 C6c=require("fs"),x6c=require("readline"),yqr=new pM.ReduceableCache(25),S6c=new pM.ReduceableCache(20),a1o=7,s5d=1e3,a5d=1e4;async function T6c(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"||p5d(s)||f5d(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(S6c.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=m5d(o);if(s.every(c=>d5d(i,c)))continue;let a=h5d(yqr,i,{});n.push(c5d(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&u5d(e,yqr),yqr.reduce(),e}function c5d(e,t,r){return new Promise(n=>{let i=(0,C6c.createReadStream)(e),o=(0,x6c.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(){S6c.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]=g5d(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 u5d(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;l5d(r.lineno,r,n)}}function l5d(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=B6c(e);i<e;i++){let o=r[i];if(o===void 0)return void I6c(t);t.pre_context.push(o)}if(r[e]===void 0)return void I6c(t);t.context_line=r[e];let n=O6c(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 I6c(e){delete e.pre_context,delete e.context_line,delete e.post_context}function p5d(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function f5d(e){return e.lineno!==void 0&&e.lineno>a5d||e.colno!==void 0&&e.colno>s5d}function d5d(e,t){let r=yqr.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 m5d(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=w6c(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+a1o:(i.push(n),n=w6c(o)),t++}return i}function w6c(e){return[B6c(e),O6c(e)]}function B6c(e){return Math.max(1,e-a1o)}function O6c(e){return e+a1o}function h5d(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function g5d(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 A5d(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 P6c(e,t){globalThis.process?.on("uncaughtException",A5d(e,t))}function D6c(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var y5d=2e3,gH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new sqr({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return zSo(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()&&(P6c(this.onException.bind(this),this.onFatalError.bind(this)),D6c(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(y5d),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var R6c="5.29.1";var fVt={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};async function F6c(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 b5d=6e4,E5d=1152921504606847e3,v5d=["is_not"],$ot=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},Gd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},yee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},bqr=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 yee||u instanceof Gd?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 yee||u instanceof Gd?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 Gd("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 Gd("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 Gd(`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 Gd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Gd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Gd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Gd(`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 Gd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new Gd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Gd(`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 yee)throw l;if(l instanceof Gd)a=!0;else throw l}if(c!==void 0)return c;if(a)throw new Gd("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"?M6c(c,i,this.cohorts,this.debugMode):u==="flag"?await this.evaluateFlagDependency(c,i,o):Q6c(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await k6c(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await k6c(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(b5d,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 $ot(`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 $ot(`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 $ot(`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 $ot&&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=Nfe(()=>{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 k6c(e,t,r=""){let n=await F6c(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/E5d}function Q6c(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 Gd("Operator is_not_set is not supported")}else throw new Gd(`Property ${n} not found in propertyValues`);let s=t[n];if(s==null&&!v5d.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 N6c(String(i))&&String(s).match(String(i))!==null;case"not_regex":return N6c(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 Gd("Date operations cannot be performed on boolean values");let u=S5d(String(i));if(u==null&&(u=j6c(i)),u==null)throw new Gd(`Invalid date: ${i}`);let l=j6c(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return qV(YO(String(s)),YO(String(i)))===0;case"semver_neq":return qV(YO(String(s)),YO(String(i)))!==0;case"semver_gt":return qV(YO(String(s)),YO(String(i)))>0;case"semver_gte":return qV(YO(String(s)),YO(String(i)))>=0;case"semver_lt":return qV(YO(String(s)),YO(String(i)))<0;case"semver_lte":return qV(YO(String(s)),YO(String(i)))<=0;case"semver_tilde":{let u=YO(String(s)),{lower:l,upper:p}=w5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}case"semver_caret":{let u=YO(String(s)),{lower:l,upper:p}=C5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}case"semver_wildcard":{let u=YO(String(s)),{lower:l,upper:p}=x5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}default:throw new Gd(`Unknown operator: ${o}`)}}function I5d(e,t){if(!(e in t))throw new yee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function M6c(e,t,r,n=!1){let i=String(e.value);I5d(i,r);let o=r[i];return L6c(o,t,r,n)}function L6c(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=L6c(a,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof yee)throw c;if(c instanceof Gd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Gd("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=M6c(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=Q6c(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 yee)throw c;if(c instanceof Gd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Gd("can't match cohort without a given cohort property value");return i==="AND"}function N6c(e){try{return new RegExp(e),!0}catch{return!1}}function YO(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new Gd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>{if(c===void 0||c==="")return 0;if(!/^\d+$/.test(c))throw new Gd(`Invalid semver: ${e}`);return parseInt(c,10)},o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function qV(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 w5d(e){let t=YO(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function C5d(e){let t=YO(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 x5d(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new Gd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=parseInt(n[0],10);if(isNaN(i))throw new Gd(`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 Gd(`Invalid wildcard semver: ${e}`);o=[i,a,0],s=[i,a+1,0]}return{lower:o,upper:s}}function j6c(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 Gd(`${e} is in an invalid date format`)}throw new Gd(`The date provided ${e} must be a string, number, or date object`)}function S5d(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 Eqr=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var T5d=100,z6c=3e4,B5d=5e4,O5d=50,P5d=500,vqr=class extends pVt{constructor(t,r={}){if(super(t,r),this._memoryStorage=new Eqr,this.options=r,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof r.featureFlagsPollingInterval=="number"?Math.max(r.featureFlagsPollingInterval,T5d):z6c,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 bqr({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 gH(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||B5d}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??P5d,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??O5d;this._waitUntilCycle.timer=Nfe(()=>{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 R6c}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=z6c){return this.isLocalEvaluationReady()?!0:this.featureFlagsPoller===void 0?!1:new Promise(r=>{let n=setTimeout(()=>{i(),r(!1)},t),i=this._events.on("localEvaluationFlagsLoaded",o=>{clearTimeout(n),i(),r(o>0)})})}_resolveDistinctId(t,r){return typeof t=="string"?{distinctId:t,options:r}:{distinctId:this.context?.get()?.distinctId,options:t}}async _getFeatureFlagResult(t,r,n={},i){let o=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&t in this._flagOverrides){let T=this._flagOverrides[t];if(T===void 0)return;let O=this._payloadOverrides?.[t];return{key:t,enabled:T!==!1,variant:typeof T=="string"?T: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,C,w;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let T=this.featureFlagsPoller?.featureFlagsByKey[t];if(T)try{let O=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(T,d,{matchValue:i});if(O){m=!0;let R=O.value;I=T.id,w="Evaluated locally",f={key:t,enabled:R!==!1,variant:typeof R=="string"?R:void 0,payload:O.payload??void 0}}}catch(O){if(O instanceof yee||O instanceof Gd)this._logger?.info(`${O.name} when computing flag locally: ${t}: ${O.message}`);else throw O}}if(!m&&!c){let T=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(T===void 0)y=fVt.UNKNOWN_ERROR;else{h=T.requestId,A=T.evaluatedAt;let O=[];T.errorsWhileComputingFlags&&O.push(fVt.ERRORS_WHILE_COMPUTING),T.quotaLimited?.includes("feature_flags")&&O.push(fVt.QUOTA_LIMITED);let R=T.flags[t];if(R===void 0)O.push(fVt.FLAG_MISSING);else{I=R.metadata?.id,C=R.metadata?.version,w=R.reason?.description??R.reason?.code;let P;if(R.metadata?.payload!==void 0)try{P=JSON.parse(R.metadata.payload)}catch{P=R.metadata.payload}f={key:t,enabled:R.enabled,variant:R.variant,payload:P}}O.length>0&&(y=O.join(","))}}if(o){let T=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,O=`${t}_${T}`;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 R={$feature_flag:t,$feature_flag_response:T,$feature_flag_id:I,$feature_flag_version:C,$feature_flag_reason:w,locally_evaluated:m,[`$feature/${t}`]:T,$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&&(R.$feature_flag_definitions_loaded_at=P)}y&&(R.$feature_flag_error=y),this.capture({distinctId:r,event:"$feature_flag_called",properties:R,groups:s,disableGeoip:a})}}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(!this.options.personalApiKey)throw new Error("Personal API key is required for remote config payload decryption");let r=await this._requestRemoteConfigPayload(t);if(!r)return;let n=await r.json();if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(t,r,n){let i=await this.getFeatureFlag(t,r,n);if(i!==void 0)return!!i||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},h={},A=!0;if(f&&(m=f.response,h=f.payloads,A=f.fallbackToFlags),A&&!c){let 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=Nfe(()=>{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(KMc(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(!gH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");this.addPendingPromise(gH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.capture({...s,uuid:i})))}}async captureExceptionImmediate(t,r,n){if(!gH.isPreviouslyCapturedError(t)){let i=new Error("PostHog syntheticException");return this.addPendingPromise(gH.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=Awe(),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,C]of Object.entries(h))A[`$feature/${I}`]=C;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"&&VMc(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 U6c=require("async_hooks"),Iqr=class{constructor(){this.storage=new U6c.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 _6c="posthog-node";function D5d(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[c1o.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 c1o=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=_6c,this.name=_6c,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(D5d(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};gH.errorPropertiesBuilder=new pM.ErrorPropertiesBuilder([new pM.EventCoercer,new pM.ErrorCoercer,new pM.ObjectCoercer,new pM.StringCoercer,new pM.PrimitiveCoercer],pM.createStackParser("node:javascript",pM.nodeStackLineParser),[MMc(),T6c]);var ywe=class extends vqr{getLibraryId(){return"posthog-node"}initializeContext(){return new Iqr}};var wqr=class{posthog;constructor({posthogApiKey:t}){this.posthog=new ywe(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.45.1",usingAccessToken:!0,...tce()}})}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 dVt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};tr();var est=require("fs/promises"),V6c=require("os"),q6c=require("path");var R5d="id",F5d=".fern",mVt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new ywe(r),this.userId=t==null?void 0:DEo(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.45.1",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...tce()}})}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 Hf({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=lR(),r=Ze(Ht.of((0,V6c.homedir)()),Fe.of(F5d),Fe.of(R5d));try{await sr(r)?this.persistedDistinctId=(await(0,est.readFile)(r)).toString():(await(0,est.mkdir)((0,q6c.dirname)(r),{recursive:!0}),await(0,est.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var u1o;async function hVt(){return u1o==null&&(u1o=await k5d()),u1o}async function k5d(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new dVt;let r=await yit();return r!=null?new mVt({token:r,posthogApiKey:e}):await BV()!=null?new wqr({posthogApiKey:e}):new mVt({token:void 0,posthogApiKey:e})}catch{return new dVt}}jt();_t();var gVt=Ce(require("process"),1);E9e();var H6c=Ce(vdo(),1),K6c=Ce(W6c(),1);function lT(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=XG(e),e.length===0))return 0;e=e.replace((0,K6c.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(H6c.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}function Cqr(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=A6c.test(a)?a.replace(A6c,"$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>=y6c)break}}return b6c(i)}}var ZSo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=cVt(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 $So=class{match(t){return USo(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 e1o=class{constructor(){}match(t){return HMc(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 o5d=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,t1o=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(o5d);return i&&(r=i[1],n=i[2]),[r,n]}};var v6c=["fatal","error","warning","log","info","debug"];function Aqr(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 r1o=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 Jot(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=Aqr(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return cVt(t)&&!GMc(t)&&v6c.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(a6c(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var n1o=class{match(t){return Jot(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${Aqr(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var i1o=class{match(t){return oqr(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var o1o=class{match(t){return Cze(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!Jot(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 oqr(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 s1o=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 C6c=require("fs"),x6c=require("readline"),yqr=new pM.ReduceableCache(25),S6c=new pM.ReduceableCache(20),a1o=7,s5d=1e3,a5d=1e4;async function T6c(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"||p5d(s)||f5d(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(S6c.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=m5d(o);if(s.every(c=>d5d(i,c)))continue;let a=h5d(yqr,i,{});n.push(c5d(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&u5d(e,yqr),yqr.reduce(),e}function c5d(e,t,r){return new Promise(n=>{let i=(0,C6c.createReadStream)(e),o=(0,x6c.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(){S6c.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]=g5d(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 u5d(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;l5d(r.lineno,r,n)}}function l5d(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=B6c(e);i<e;i++){let o=r[i];if(o===void 0)return void I6c(t);t.pre_context.push(o)}if(r[e]===void 0)return void I6c(t);t.context_line=r[e];let n=O6c(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 I6c(e){delete e.pre_context,delete e.context_line,delete e.post_context}function p5d(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function f5d(e){return e.lineno!==void 0&&e.lineno>a5d||e.colno!==void 0&&e.colno>s5d}function d5d(e,t){let r=yqr.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 m5d(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=w6c(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+a1o:(i.push(n),n=w6c(o)),t++}return i}function w6c(e){return[B6c(e),O6c(e)]}function B6c(e){return Math.max(1,e-a1o)}function O6c(e){return e+a1o}function h5d(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function g5d(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 A5d(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 P6c(e,t){globalThis.process?.on("uncaughtException",A5d(e,t))}function D6c(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var y5d=2e3,gH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new sqr({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return zSo(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()&&(P6c(this.onException.bind(this),this.onFatalError.bind(this)),D6c(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(y5d),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var R6c="5.29.1";var fVt={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};async function F6c(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 b5d=6e4,E5d=1152921504606847e3,v5d=["is_not"],$ot=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},Gd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},yee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},bqr=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 yee||u instanceof Gd?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 yee||u instanceof Gd?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 Gd("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 Gd("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 Gd(`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 Gd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Gd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Gd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Gd(`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 Gd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new Gd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Gd(`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 yee)throw l;if(l instanceof Gd)a=!0;else throw l}if(c!==void 0)return c;if(a)throw new Gd("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"?M6c(c,i,this.cohorts,this.debugMode):u==="flag"?await this.evaluateFlagDependency(c,i,o):Q6c(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await k6c(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await k6c(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(b5d,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 $ot(`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 $ot(`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 $ot(`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 $ot&&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=Nfe(()=>{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 k6c(e,t,r=""){let n=await F6c(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/E5d}function Q6c(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 Gd("Operator is_not_set is not supported")}else throw new Gd(`Property ${n} not found in propertyValues`);let s=t[n];if(s==null&&!v5d.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 N6c(String(i))&&String(s).match(String(i))!==null;case"not_regex":return N6c(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 Gd("Date operations cannot be performed on boolean values");let u=S5d(String(i));if(u==null&&(u=j6c(i)),u==null)throw new Gd(`Invalid date: ${i}`);let l=j6c(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return qV(YO(String(s)),YO(String(i)))===0;case"semver_neq":return qV(YO(String(s)),YO(String(i)))!==0;case"semver_gt":return qV(YO(String(s)),YO(String(i)))>0;case"semver_gte":return qV(YO(String(s)),YO(String(i)))>=0;case"semver_lt":return qV(YO(String(s)),YO(String(i)))<0;case"semver_lte":return qV(YO(String(s)),YO(String(i)))<=0;case"semver_tilde":{let u=YO(String(s)),{lower:l,upper:p}=w5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}case"semver_caret":{let u=YO(String(s)),{lower:l,upper:p}=C5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}case"semver_wildcard":{let u=YO(String(s)),{lower:l,upper:p}=x5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}default:throw new Gd(`Unknown operator: ${o}`)}}function I5d(e,t){if(!(e in t))throw new yee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function M6c(e,t,r,n=!1){let i=String(e.value);I5d(i,r);let o=r[i];return L6c(o,t,r,n)}function L6c(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=L6c(a,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof yee)throw c;if(c instanceof Gd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Gd("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=M6c(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=Q6c(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 yee)throw c;if(c instanceof Gd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Gd("can't match cohort without a given cohort property value");return i==="AND"}function N6c(e){try{return new RegExp(e),!0}catch{return!1}}function YO(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new Gd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>{if(c===void 0||c==="")return 0;if(!/^\d+$/.test(c))throw new Gd(`Invalid semver: ${e}`);return parseInt(c,10)},o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function qV(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 w5d(e){let t=YO(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function C5d(e){let t=YO(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 x5d(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new Gd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=parseInt(n[0],10);if(isNaN(i))throw new Gd(`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 Gd(`Invalid wildcard semver: ${e}`);o=[i,a,0],s=[i,a+1,0]}return{lower:o,upper:s}}function j6c(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 Gd(`${e} is in an invalid date format`)}throw new Gd(`The date provided ${e} must be a string, number, or date object`)}function S5d(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 Eqr=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var T5d=100,z6c=3e4,B5d=5e4,O5d=50,P5d=500,vqr=class extends pVt{constructor(t,r={}){if(super(t,r),this._memoryStorage=new Eqr,this.options=r,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof r.featureFlagsPollingInterval=="number"?Math.max(r.featureFlagsPollingInterval,T5d):z6c,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 bqr({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 gH(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||B5d}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??P5d,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??O5d;this._waitUntilCycle.timer=Nfe(()=>{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 R6c}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=z6c){return this.isLocalEvaluationReady()?!0:this.featureFlagsPoller===void 0?!1:new Promise(r=>{let n=setTimeout(()=>{i(),r(!1)},t),i=this._events.on("localEvaluationFlagsLoaded",o=>{clearTimeout(n),i(),r(o>0)})})}_resolveDistinctId(t,r){return typeof t=="string"?{distinctId:t,options:r}:{distinctId:this.context?.get()?.distinctId,options:t}}async _getFeatureFlagResult(t,r,n={},i){let o=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&t in this._flagOverrides){let T=this._flagOverrides[t];if(T===void 0)return;let O=this._payloadOverrides?.[t];return{key:t,enabled:T!==!1,variant:typeof T=="string"?T: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,C,w;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let T=this.featureFlagsPoller?.featureFlagsByKey[t];if(T)try{let O=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(T,d,{matchValue:i});if(O){m=!0;let R=O.value;I=T.id,w="Evaluated locally",f={key:t,enabled:R!==!1,variant:typeof R=="string"?R:void 0,payload:O.payload??void 0}}}catch(O){if(O instanceof yee||O instanceof Gd)this._logger?.info(`${O.name} when computing flag locally: ${t}: ${O.message}`);else throw O}}if(!m&&!c){let T=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(T===void 0)y=fVt.UNKNOWN_ERROR;else{h=T.requestId,A=T.evaluatedAt;let O=[];T.errorsWhileComputingFlags&&O.push(fVt.ERRORS_WHILE_COMPUTING),T.quotaLimited?.includes("feature_flags")&&O.push(fVt.QUOTA_LIMITED);let R=T.flags[t];if(R===void 0)O.push(fVt.FLAG_MISSING);else{I=R.metadata?.id,C=R.metadata?.version,w=R.reason?.description??R.reason?.code;let P;if(R.metadata?.payload!==void 0)try{P=JSON.parse(R.metadata.payload)}catch{P=R.metadata.payload}f={key:t,enabled:R.enabled,variant:R.variant,payload:P}}O.length>0&&(y=O.join(","))}}if(o){let T=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,O=`${t}_${T}`;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 R={$feature_flag:t,$feature_flag_response:T,$feature_flag_id:I,$feature_flag_version:C,$feature_flag_reason:w,locally_evaluated:m,[`$feature/${t}`]:T,$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&&(R.$feature_flag_definitions_loaded_at=P)}y&&(R.$feature_flag_error=y),this.capture({distinctId:r,event:"$feature_flag_called",properties:R,groups:s,disableGeoip:a})}}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(!this.options.personalApiKey)throw new Error("Personal API key is required for remote config payload decryption");let r=await this._requestRemoteConfigPayload(t);if(!r)return;let n=await r.json();if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(t,r,n){let i=await this.getFeatureFlag(t,r,n);if(i!==void 0)return!!i||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},h={},A=!0;if(f&&(m=f.response,h=f.payloads,A=f.fallbackToFlags),A&&!c){let 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=Nfe(()=>{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(KMc(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(!gH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");this.addPendingPromise(gH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.capture({...s,uuid:i})))}}async captureExceptionImmediate(t,r,n){if(!gH.isPreviouslyCapturedError(t)){let i=new Error("PostHog syntheticException");return this.addPendingPromise(gH.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=Awe(),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,C]of Object.entries(h))A[`$feature/${I}`]=C;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"&&VMc(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 U6c=require("async_hooks"),Iqr=class{constructor(){this.storage=new U6c.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 _6c="posthog-node";function D5d(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[c1o.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 c1o=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=_6c,this.name=_6c,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(D5d(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};gH.errorPropertiesBuilder=new pM.ErrorPropertiesBuilder([new pM.EventCoercer,new pM.ErrorCoercer,new pM.ObjectCoercer,new pM.StringCoercer,new pM.PrimitiveCoercer],pM.createStackParser("node:javascript",pM.nodeStackLineParser),[MMc(),T6c]);var ywe=class extends vqr{getLibraryId(){return"posthog-node"}initializeContext(){return new Iqr}};var wqr=class{posthog;constructor({posthogApiKey:t}){this.posthog=new ywe(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.45.2",usingAccessToken:!0,...tce()}})}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 dVt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};tr();var est=require("fs/promises"),V6c=require("os"),q6c=require("path");var R5d="id",F5d=".fern",mVt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new ywe(r),this.userId=t==null?void 0:DEo(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.45.2",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...tce()}})}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 Hf({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=lR(),r=Ze(Ht.of((0,V6c.homedir)()),Fe.of(F5d),Fe.of(R5d));try{await sr(r)?this.persistedDistinctId=(await(0,est.readFile)(r)).toString():(await(0,est.mkdir)((0,q6c.dirname)(r),{recursive:!0}),await(0,est.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var u1o;async function hVt(){return u1o==null&&(u1o=await k5d()),u1o}async function k5d(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new dVt;let r=await yit();return r!=null?new mVt({token:r,posthogApiKey:e}):await BV()!=null?new wqr({posthogApiKey:e}):new mVt({token:void 0,posthogApiKey:e})}catch{return new dVt}}jt();_t();var gVt=Ce(require("process"),1);E9e();var H6c=Ce(vdo(),1),K6c=Ce(W6c(),1);function lT(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=XG(e),e.length===0))return 0;e=e.replace((0,K6c.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(H6c.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}function Cqr(e){let t=0;for(let r of e.split(`
|
|
3226
3226
|
`))t=Math.max(t,lT(r));return t}var mLc=Ce(p1o(),1);var j5d=/[\p{Lu}]/u,Q5d=/[\p{Ll}]/u,X6c=/^[\p{Lu}](?![\p{Lu}])/gu,eLc=/([\p{Alpha}\p{N}_]|$)/u,f1o=/[_.\- ]+/,M5d=new RegExp("^"+f1o.source),Z6c=new RegExp(f1o.source+eLc.source,"gu"),$6c=new RegExp("\\d+"+eLc.source,"gu"),L5d=(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&&j5d.test(u)?(e=e.slice(0,c)+"-"+e.slice(c),i=!1,s=o,o=!0,c++):o&&s&&Q5d.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},z5d=(e,t)=>(X6c.lastIndex=0,e.replace(X6c,r=>t(r))),U5d=(e,t)=>(Z6c.lastIndex=0,$6c.lastIndex=0,e.replace(Z6c,(r,n)=>t(n)).replace($6c,r=>t(r)));function d1o(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?f1o.test(e)?"":t.pascalCase?n(e):r(e):(e!==r(e)&&(e=L5d(e,r,n,t.preserveConsecutiveUppercase)),e=e.replace(M5d,""),e=t.preserveConsecutiveUppercase?z5d(e,r):r(e),t.pascalCase&&(e=n(e.charAt(0))+e.slice(1)),U5d(e,n))}var A1o=Ce(rLc(),1);E9e();var nLc=(e=0)=>t=>`\x1B[${t+e}m`,iLc=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,oLc=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,oE={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]}},moE=Object.keys(oE.modifier),G5d=Object.keys(oE.color),W5d=Object.keys(oE.bgColor),hoE=[...G5d,...W5d];function H5d(){let e=new Map;for(let[t,r]of Object.entries(oE)){for(let[n,i]of Object.entries(r))oE[n]={open:`\x1B[${i[0]}m`,close:`\x1B[${i[1]}m`},r[n]=oE[n],e.set(i[0],i[1]);Object.defineProperty(oE,t,{value:r,enumerable:!1})}return Object.defineProperty(oE,"codes",{value:e,enumerable:!1}),oE.color.close="\x1B[39m",oE.bgColor.close="\x1B[49m",oE.color.ansi=nLc(),oE.color.ansi256=iLc(),oE.color.ansi16m=oLc(),oE.bgColor.ansi=nLc(10),oE.bgColor.ansi256=iLc(10),oE.bgColor.ansi16m=oLc(10),Object.defineProperties(oE,{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=>oE.rgbToAnsi256(...oE.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)=>oE.ansi256ToAnsi(oE.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>oE.ansi256ToAnsi(oE.hexToAnsi256(t)),enumerable:!1}}),oE}var K5d=H5d(),sLc=K5d;var xqr=new Set(["\x1B","\x9B"]),J5d=39,h1o="\x07",uLc="[",Y5d="]",lLc="m",g1o=`${Y5d}8;;`,aLc=e=>`${xqr.values().next().value}${uLc}${e}${lLc}`,cLc=e=>`${xqr.values().next().value}${g1o}${e}${h1o}`,X5d=e=>e.split(" ").map(t=>lT(t)),m1o=(e,t,r)=>{let n=[...t],i=!1,o=!1,s=lT(XG(e[e.length-1]));for(let[a,c]of n.entries()){let u=lT(c);if(s+u<=r?e[e.length-1]+=c:(e.push(c),s=0),xqr.has(c)&&(i=!0,o=n.slice(a+1).join("").startsWith(g1o)),i){o?c===h1o&&(i=!1,o=!1):c===lLc&&(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())},Z5d=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(lT(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},$5d=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i,o,s=X5d(e),a=[""];for(let[u,l]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let p=lT(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(""),m1o(a,l,t);continue}if(p+s[u]>t&&p>0&&s[u]>0){if(r.wordWrap===!1&&p<t){m1o(a,l,t);continue}a.push("")}if(p+s[u]>t&&r.wordWrap===!1){m1o(a,l,t);continue}a[a.length-1]+=l}r.trim!==!1&&(a=a.map(u=>Z5d(u)));let c=[...a.join(`
|
|
3227
3227
|
`)];for(let[u,l]of c.entries()){if(n+=l,xqr.has(l)){let{groups:d}=new RegExp(`(?:\\${uLc}(?<code>\\d+)m|\\${g1o}(?<uri>.*)${h1o})`).exec(c.slice(u).join(""))||{groups:{}};if(d.code!==void 0){let f=Number.parseFloat(d.code);i=f===J5d?void 0:f}else d.uri!==void 0&&(o=d.uri.length===0?void 0:d.uri)}let p=sLc.codes.get(Number(i));c[u+1]===`
|
|
3228
3228
|
`?(o&&(n+=cLc("")),i&&p&&(n+=aLc(p))):l===`
|
|
@@ -3813,7 +3813,7 @@ Hint: Values starting with "@" (such as scoped npm packages) must be wrapped in
|
|
|
3813
3813
|
Add a 'docs:' section to your fern.yml to get started.`,code:D.Code.ConfigError});let o=await new VPe({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&&lFm(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 D({code:D.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}`)}
|
|
3814
3814
|
`)}let l=0;if(o.mdxParseErrors.length>0){for(let p of o.mdxParseErrors)t.stderr.info(`
|
|
3815
3815
|
${p.toString()}
|
|
3816
|
-
`);r.fix?l+=await Fei(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!hXn()&&await kei(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new nEt({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new D({code:D.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${Nr.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(`${Nr.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=>wee(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 lFm(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 cVo(e){let t=new aVo;ai(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}))}Hb();_t();var ufu=Ce(require("net"),1),lfu=Ce(require("os"),1),Qei=class extends Error{constructor(t){super(`${t} is locked`)}},aEt={old:new Set,young:new Set},pFm=1e3*15,pfu=new Set;var oGt,fFm=()=>{let e=lfu.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},afu=e=>new Promise((t,r)=>{let n=ufu.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),cfu=async(e,t)=>{if(e.host||e.port===0)return afu(e);for(let r of t)try{await afu({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},dFm=e=>aEt.old.has(e)||aEt.young.has(e)||pfu.has(e),mFm=function*(e){e&&(yield*e),yield 0};async function GPe(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??{};oGt===void 0&&(oGt=setTimeout(()=>{oGt=void 0,aEt.old=aEt.young,aEt.young=new Set},pFm),oGt.unref&&oGt.unref());let o=fFm();for(let s of mFm(t))try{if(r.has(s))continue;let a=await cfu({...i,port:s},o);for(;dFm(a);){if(s!==0)throw new Qei(s);a=await cfu({...i,port:s},o)}return n?pfu.add(a):aEt.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof Qei))throw a}throw new Error("No available ports found")}_t();var mfu=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,ffu="docs.buildwithfern.com",dfu=62;function RUe(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)),mfu.test(t)}function hfu(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function sGt({orgId:e,previewId:t}){let r=hfu(t),n=`${e}-preview-${r}.${ffu}`;if(n.length<=dfu)return n;let i=`${e}-preview-`,o=dfu-i.length;if(o<8)throw new D({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:D.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${ffu}`}jt();Hh();tr();aS();_t();var K7o=require("child_process"),Qwu=Ce(pVo(),1),J7o=Ce(wti(),1),Y7o=Ce(require("fs"),1),i_e=require("fs/promises"),Mwu=Ce(require("http"),1),$7o=Ce(require("path"),1);Mti();tr();var Y7=require("fs/promises"),$Au=require("os"),Z5o=Ce(require("path"),1),t3m=".fern",r3m="logs",X5o=100*1024*1024;function n3m(){return"cli@5.45.
|
|
3816
|
+
`);r.fix?l+=await Fei(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!hXn()&&await kei(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new nEt({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new D({code:D.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${Nr.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(`${Nr.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=>wee(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 lFm(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 cVo(e){let t=new aVo;ai(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}))}Hb();_t();var ufu=Ce(require("net"),1),lfu=Ce(require("os"),1),Qei=class extends Error{constructor(t){super(`${t} is locked`)}},aEt={old:new Set,young:new Set},pFm=1e3*15,pfu=new Set;var oGt,fFm=()=>{let e=lfu.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},afu=e=>new Promise((t,r)=>{let n=ufu.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),cfu=async(e,t)=>{if(e.host||e.port===0)return afu(e);for(let r of t)try{await afu({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},dFm=e=>aEt.old.has(e)||aEt.young.has(e)||pfu.has(e),mFm=function*(e){e&&(yield*e),yield 0};async function GPe(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??{};oGt===void 0&&(oGt=setTimeout(()=>{oGt=void 0,aEt.old=aEt.young,aEt.young=new Set},pFm),oGt.unref&&oGt.unref());let o=fFm();for(let s of mFm(t))try{if(r.has(s))continue;let a=await cfu({...i,port:s},o);for(;dFm(a);){if(s!==0)throw new Qei(s);a=await cfu({...i,port:s},o)}return n?pfu.add(a):aEt.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof Qei))throw a}throw new Error("No available ports found")}_t();var mfu=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,ffu="docs.buildwithfern.com",dfu=62;function RUe(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)),mfu.test(t)}function hfu(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function sGt({orgId:e,previewId:t}){let r=hfu(t),n=`${e}-preview-${r}.${ffu}`;if(n.length<=dfu)return n;let i=`${e}-preview-`,o=dfu-i.length;if(o<8)throw new D({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:D.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${ffu}`}jt();Hh();tr();aS();_t();var K7o=require("child_process"),Qwu=Ce(pVo(),1),J7o=Ce(wti(),1),Y7o=Ce(require("fs"),1),i_e=require("fs/promises"),Mwu=Ce(require("http"),1),$7o=Ce(require("path"),1);Mti();tr();var Y7=require("fs/promises"),$Au=require("os"),Z5o=Ce(require("path"),1),t3m=".fern",r3m="logs",X5o=100*1024*1024;function n3m(){return"cli@5.45.2"}var WUe=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??Ze(Ze(Ht.of((0,$Au.homedir)()),Fe.of(t3m)),Fe.of(r3m));await sr(n)||await(0,Y7.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=Ze(n,Fe.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${Z5o.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
|
|
3817
3817
|
`);await(0,Y7.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)+`
|
|
3818
3818
|
`;try{await(0,Y7.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:n3m(),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,Y7.readdir)(t)).filter(c=>c.endsWith(".log")),i=[];for(let c of n){let u=Z5o.default.join(t,c);try{let l=await(0,Y7.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=X5o/1024/1024;if(o<=X5o){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<=X5o)break;if(!(this.logFilePath!=null&&c.fullPath===this.logFilePath))try{await(0,Y7.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 Lti={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function eyu(e){let t=i3m();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:Lti});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",...Lti}})}catch{return new Response(JSON.stringify(i()),{headers:{"Content-Type":"application/json",...Lti}})}let d=/^\/_local\/(.*)/.exec(p.pathname);return u.method==="GET"&&d!=null?new Response(t.file(`/${d[1]}`),{headers:Lti}):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 WUe.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 i3m(){return globalThis.Bun}_t();var byu=require("events"),qti=Ce(require("fs"),1),KUe=Ce(require("path"),1);var tyu=Ce(require("os"),1),ryu=300,eDe=20,LGt=1e7,nyu=tyu.default.platform();var o3m=nyu==="darwin",$5o=nyu==="win32",tDe=o3m||$5o,iyu=3e3,oyu=2e4,e8o=1250;var Sie;(function(e){e[e.DIR=1]="DIR",e[e.FILE=2]="FILE"})(Sie||(Sie={}));var HUe;(function(e){e.CHANGE="change",e.RENAME="rename"})(HUe||(HUe={}));var zGt;(function(e){e.CHANGE="change",e.ERROR="error"})(zGt||(zGt={}));var Hc;(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"})(Hc||(Hc={}));var NN;(function(e){e.ALL="all",e.CLOSE="close",e.ERROR="error",e.READY="ready"})(NN||(NN={}));var s3m=(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 w=Date.now(),x=w-c,T=w-u,O=x>=t||T>=o;return[w,O]},p=w=>{if(u=w,!s)return;let x=s;s=void 0,e.apply(void 0,x)},d=()=>{I(0)},f=()=>{a&&(d(),p(Date.now()))},m=w=>{if(u=w,n)return p(w)},h=w=>{if(i&&s)return p(w);s=void 0},A=()=>{a=void 0;let[w,x]=l();return x?h(w):y(w)},y=w=>{let x=w-c,T=w-u,O=t-x,R=o-T,P=Math.min(O,R);return I(P)},I=w=>{a&&clearTimeout(a),!(w<=0)&&(a=setTimeout(A,w))},C=(...w)=>{let[x,T]=l(),O=!!a;if(s=w,c=x,(T||!a)&&I(t),T)return O?p(x):m(x)};return C.cancel=d,C.flush=f,C},zti=s3m;var i8o=Ce(require("fs"),1),_ti=Ce(require("path"),1);var Kd=Ce(require("fs"),1),dP=require("util");var lme=(e,t)=>function(...n){return e.apply(void 0,n).catch(t)},Tie=(e,t)=>function(...n){try{return e.apply(void 0,n)}catch(i){return t(i)}};var t8o=Ce(require("process"),1),syu=t8o.default.getuid?!t8o.default.getuid():!1,ayu=1e4,P6=()=>{};var UGt={isChangeErrorOk:e=>{if(!UGt.isNodeError(e))return!1;let{code:t}=e;return t==="ENOSYS"||!syu&&(t==="EINVAL"||t==="EPERM")},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!UGt.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(!UGt.isNodeError(e))throw e;if(!UGt.isChangeErrorOk(e))throw e}},Fw=UGt;var r8o=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=ayu,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()}}}}},cyu=new r8o;var pme=(e,t)=>function(n){return function i(...o){return cyu.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)})}},fme=(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 a3m={attempt:{chmod:lme((0,dP.promisify)(Kd.default.chmod),Fw.onChangeError),chown:lme((0,dP.promisify)(Kd.default.chown),Fw.onChangeError),close:lme((0,dP.promisify)(Kd.default.close),P6),fsync:lme((0,dP.promisify)(Kd.default.fsync),P6),mkdir:lme((0,dP.promisify)(Kd.default.mkdir),P6),realpath:lme((0,dP.promisify)(Kd.default.realpath),P6),stat:lme((0,dP.promisify)(Kd.default.stat),P6),unlink:lme((0,dP.promisify)(Kd.default.unlink),P6),chmodSync:Tie(Kd.default.chmodSync,Fw.onChangeError),chownSync:Tie(Kd.default.chownSync,Fw.onChangeError),closeSync:Tie(Kd.default.closeSync,P6),existsSync:Tie(Kd.default.existsSync,P6),fsyncSync:Tie(Kd.default.fsync,P6),mkdirSync:Tie(Kd.default.mkdirSync,P6),realpathSync:Tie(Kd.default.realpathSync,P6),statSync:Tie(Kd.default.statSync,P6),unlinkSync:Tie(Kd.default.unlinkSync,P6)},retry:{close:pme((0,dP.promisify)(Kd.default.close),Fw.isRetriableError),fsync:pme((0,dP.promisify)(Kd.default.fsync),Fw.isRetriableError),open:pme((0,dP.promisify)(Kd.default.open),Fw.isRetriableError),readFile:pme((0,dP.promisify)(Kd.default.readFile),Fw.isRetriableError),rename:pme((0,dP.promisify)(Kd.default.rename),Fw.isRetriableError),stat:pme((0,dP.promisify)(Kd.default.stat),Fw.isRetriableError),write:pme((0,dP.promisify)(Kd.default.write),Fw.isRetriableError),writeFile:pme((0,dP.promisify)(Kd.default.writeFile),Fw.isRetriableError),closeSync:fme(Kd.default.closeSync,Fw.isRetriableError),fsyncSync:fme(Kd.default.fsyncSync,Fw.isRetriableError),openSync:fme(Kd.default.openSync,Fw.isRetriableError),readFileSync:fme(Kd.default.readFileSync,Fw.isRetriableError),renameSync:fme(Kd.default.renameSync,Fw.isRetriableError),statSync:fme(Kd.default.statSync,Fw.isRetriableError),writeSync:fme(Kd.default.writeSync,Fw.isRetriableError),writeFileSync:fme(Kd.default.writeFileSync,Fw.isRetriableError)}},uyu=a3m;var Uti=Ce(require("fs"),1),_Gt=Ce(require("path"),1);var n8o=()=>{};var c3m=()=>{let e=n8o,t=n8o,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}},lyu=c3m;var u3m=()=>{let{promise:e,resolve:t,isPending:r}=lyu(),n=0,i=()=>{n+=1},o=()=>{n-=1,!n&&t()};return i(),queueMicrotask(o),{promise:e,isPending:r,increment:i,decrement:o}},pyu=u3m;var fyu={then:e=>{e()}};var dyu=e=>Array.isArray(e)?e:[e],myu=e=>typeof e=="function";var l3m=(e,t)=>{let r=t?.followSymlinks??!1,n=t?.depth??1/0,i=t?.limit??1/0,o=t?.ignore??[],s=dyu(o).map(oe=>myu(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={},C={},w=new Set,x={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{},map:{}},T={directories:l,directoriesNames:p,directoriesNamesToPaths:d,files:f,filesNames:m,filesNamesToPaths:h,symlinks:A,symlinksNames:y,symlinksNamesToPaths:I,map:C},{promise:O,increment:R,decrement:P}=pyu(),U=0,X=(oe,ae,Be,ve)=>{w.has(ae)||U>=i||(U+=1,oe.directories.push(ae),oe.directoriesNames.add(Be),l.push(ae),p.add(Be),d.propertyIsEnumerable(Be)||(d[Be]=[]),d[Be].push(ae),w.add(ae),!(ve>=n)&&(U>=i||fe(ae,ve+1)))},$=(oe,ae,Be)=>{w.has(ae)||U>=i||(U+=1,oe.files.push(ae),oe.filesNames.add(Be),f.push(ae),m.add(Be),h.propertyIsEnumerable(Be)||(h[Be]=[]),h[Be].push(ae),w.add(ae))},ne=(oe,ae,Be,ve)=>{w.has(ae)||U>=i||(U+=1,oe.symlinks.push(ae),oe.symlinksNames.add(Be),A.push(ae),y.add(Be),I.propertyIsEnumerable(Be)||(I[Be]=[]),I[Be].push(ae),w.add(ae),r&&(ve>=n||U>=i||Le(ae,ve+1)))},le=(oe,ae,Be,ve,Qe)=>{c.aborted||a(ae)||(ve.isDirectory()?X(oe,ae,Be,Qe):ve.isFile()?$(oe,ae,Be):ve.isSymbolicLink()&&ne(oe,ae,Be,Qe))},ge=(oe,ae,Be,ve)=>{if(c.aborted)return;let Qe=ae===_Gt.default.sep?"":_Gt.default.sep,qe=Be.name,ct=`${ae}${Qe}${qe}`;a(ct)||(Be.isDirectory()?X(oe,ct,qe,ve):Be.isFile()?$(oe,ct,qe):Be.isSymbolicLink()&&ne(oe,ct,qe,ve))},me=(oe,ae,Be,ve)=>{for(let Qe=0,qe=Be.length;Qe<qe;Qe++)ge(oe,ae,Be[Qe],ve)},fe=(oe,ae)=>{c.aborted||ae>n||U>=i||(R(),Uti.default.readdir(oe,{withFileTypes:!0},(Be,ve)=>{if(Be||c.aborted||!ve.length)return P();(u(ve)||fyu).then(()=>{let qe=C[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)=>{R(),Uti.default.realpath(oe,(Be,ve)=>{if(Be||c.aborted)return P();Uti.default.stat(ve,(Qe,qe)=>{if(Qe||c.aborted)return P();let ct=_Gt.default.basename(ve),At=C[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};le(At,ve,ct,qe,ae),P()})})};return(async(oe,ae=1)=>(oe=_Gt.default.normalize(oe),w.add(oe),fe(oe,ae),await O,c.aborted?x:T))(e)},hyu=l3m;var Bie={lang:{debounce:zti,attempt:e=>{try{return e()}catch(t){return Bie.lang.castError(t)}},castArray:e=>Bie.lang.isArray(e)?e:[e],castError:e=>Bie.lang.isError(e)?e:Bie.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(Bie.lang.isNaN(e))return Bie.lang.isNaN(t);if(Bie.lang.isPrimitive(e)||Bie.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(_ti.default.sep).length-1),getRealPath:(e,t)=>{try{return t?i8o.default.realpathSync.native(e):i8o.default.realpathSync(e)}catch{return}},isSubPath:(e,t)=>t.startsWith(e)&&t[e.length]===_ti.default.sep&&t.length-e.length>_ti.default.sep.length,poll:(e,t=oyu)=>uyu.retry.stat(t)(e,{bigint:!0}).catch(Bie.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 hyu(e,{depth:r,limit:n,ignore:t,signal:i});return[s.directories,s.files]}}}},Ep=Bie;var Vti=Ce(require("path"),1);var o8o=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||Ep.fs.isSubPath(this.folderPath,t)}_makeHandlerBatched(t=ryu){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=Ep.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===Hc.CHANGE&&a===Hc.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===Hc.ADD_DIR?await this.eventsPopulateAddDir(t,i,r,n):s===Hc.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??eDe:Math.min(1,this.options.depth??eDe),s=this.options.limit??LGt,[a,c]=await Ep.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())Ep.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(Hc.ADD,t))}onTargetAddDir(t){t!==this.folderPath&&this.options.recursive&&!tDe&&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(Hc.ADD_DIR,t))}onTargetChange(t){this._isSubRoot(t)&&this.watcher.event(Hc.CHANGE,t)}onTargetUnlink(t){this.watcher.watchersClose(Vti.default.dirname(t),t,!1),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlink(t,this.options.renameTimeout):this.watcher.event(Hc.UNLINK,t))}onTargetUnlinkDir(t){this.watcher.watchersClose(Vti.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(Hc.UNLINK_DIR,t))}onTargetEvent(t){let[r,n]=t;r===Hc.ADD?this.onTargetAdd(n):r===Hc.ADD_DIR?this.onTargetAddDir(n):r===Hc.CHANGE?this.onTargetChange(n):r===Hc.UNLINK?this.onTargetUnlink(n):r===Hc.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=HUe.CHANGE,r){if(this.watcher.isClosed())return;let n=Vti.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){$5o&&t.code==="EPERM"?this.onWatcherChange(HUe.CHANGE,""):this.watcher.error(t)}async init(){await this.initWatcherEvents(),await this.initInitialEvents()}async initWatcherEvents(){let t=this.onWatcherChange.bind(this);this.fswatcher.on(zGt.CHANGE,t);let r=this.onWatcherError.bind(this);this.fswatcher.on(zGt.ERROR,r)}async initInitialEvents(){let t=!this.watcher.isReady();if(this.filePath){if(this.watcher._poller.stats.has(this.filePath))return;await this.onWatcherEvent(HUe.CHANGE,this.filePath,t)}else{let r=this.options.recursive&&tDe&&this.options.native!==!1?this.options.depth??eDe:Math.min(1,this.options.depth??eDe),n=this.options.limit??LGt,[i,o]=await Ep.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(HUe.CHANGE,a,t)}))}}},gyu=o8o;var jN={interval:100,intervalId:void 0,fns:new Map,init:()=>{jN.intervalId||(jN.intervalId=setInterval(jN.resolve,jN.interval))},reset:()=>{jN.intervalId&&(clearInterval(jN.intervalId),delete jN.intervalId)},add:(e,t)=>{jN.fns.set(e,Date.now()+t),jN.init()},remove:e=>{jN.fns.delete(e)},resolve:()=>{if(!jN.fns.size)return jN.reset();let e=Date.now();for(let[t,r]of jN.fns)r>=e||(jN.remove(t),t())}},VGt=jN;var qGt=class e{constructor(t){this._watcher=t,this.reset()}getLockAdd(t,r=e8o){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(Ep.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),VGt.remove(u)},u=()=>{c(),a()};VGt.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=e8o){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),VGt.remove(u)},u=()=>{c(),a()};VGt.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,Hc.ADD,Sie.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,Hc.ADD_DIR,Sie.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,Hc.UNLINK,Sie.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,Hc.UNLINK_DIR,Sie.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}}};qGt.DIR_EVENTS={add:Hc.ADD_DIR,rename:Hc.RENAME_DIR,unlink:Hc.UNLINK_DIR};qGt.FILE_EVENTS={add:Hc.ADD,change:Hc.CHANGE,rename:Hc.RENAME,unlink:Hc.UNLINK};var Ayu=qGt;var s8o=class{constructor(){this.map=new Map}clear(){this.map.clear()}delete(t,r){if(Ep.lang.isUndefined(r))return this.map.delete(t);if(this.map.has(t)){let n=this.map.get(t);if(Ep.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(Ep.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(Ep.lang.isUndefined(r))return this.map.has(t);if(this.map.has(t)){let n=this.map.get(t);return Ep.lang.isSet(n)?n.has(r):n===r}return!1}set(t,r){if(this.map.has(t)){let n=this.map.get(t);Ep.lang.isSet(n)?n.add(r):n!==r&&this.map.set(t,new Set([n,r]))}else this.map.set(t,r);return this}},a8o=s8o;var c8o=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}},yyu=c8o;var u8o=class{constructor(){this.inos={},this.paths=new a8o,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 Ep.fs.poll(t,r);if(!(!n||!(n.isFile()||n.isDirectory())))return new yyu(n)}reset(){this.inos={},this.paths=new a8o,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,Hc.ADD,i),[Hc.ADD];if(i.isDirectory())return this.updateIno(t,Hc.ADD_DIR,i),[Hc.ADD_DIR]}else if(n&&!i){if(n.isFile())return this.updateIno(t,Hc.UNLINK,n),[Hc.UNLINK];if(n.isDirectory())return this.updateIno(t,Hc.UNLINK_DIR,n),[Hc.UNLINK_DIR]}else if(n&&i){if(n.isFile()){if(i.isFile())return n.ino===i.ino&&!n.size&&!i.size?[]:(this.updateIno(t,Hc.CHANGE,i),[Hc.CHANGE]);if(i.isDirectory())return this.updateIno(t,Hc.UNLINK,n),this.updateIno(t,Hc.ADD_DIR,i),[Hc.UNLINK,Hc.ADD_DIR]}else if(n.isDirectory()){if(i.isFile())return this.updateIno(t,Hc.UNLINK_DIR,n),this.updateIno(t,Hc.ADD,i),[Hc.UNLINK_DIR,Hc.ADD];if(i.isDirectory())return n.ino===i.ino?[]:(this.updateIno(t,Hc.UNLINK_DIR,n),this.updateIno(t,Hc.ADD_DIR,i),[Hc.UNLINK_DIR,Hc.ADD_DIR])}}return[]}updateIno(t,r,n){let i=this.inos[r]=this.inos[r]||(this.inos[r]={}),o=n.isFile()?Sie.FILE:Sie.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)}}},l8o=u8o;var p8o=class e extends byu.EventEmitter{constructor(t,r,n){super(),this._closed=!1,this._ready=!1,this._closeAborter=new AbortController,this._closeSignal=this._closeAborter.signal,this.on(NN.CLOSE,()=>this._closeAborter.abort()),this._closeWait=new Promise(i=>this.on(NN.CLOSE,i)),this._readyWait=new Promise(i=>this.on(NN.READY,i)),this._locker=new Ayu(this),this._roots=new Set,this._poller=new l8o,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&&(Ep.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(NN.CLOSE))}error(t){if(this.isClosed())return!1;let r=Ep.lang.castError(t);return this.emit(NN.ERROR,r)}event(t,r,n){return this.isClosed()?!1:(this.emit(NN.ALL,t,r,n),this.emit(t,r,n))}ready(){return this.isClosed()||this.isReady()?!1:(this._ready=!0,this.emit(NN.READY))}pollerExists(t,r){for(let n of this._pollers)if(n.targetPath===t&&Ep.lang.isShallowEqual(n.options,r))return!0;return!1}subwatcherExists(t,r){for(let n of this._subwatchers)if(n.targetPath===t&&Ep.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)Ep.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 gyu(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=Ep.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=KUe.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??eDe))&&l.handler===n&&(!l.filePath||l.filePath===i)&&l.options.ignore===r.ignore&&!!l.options.native==!!r.native&&(!r.recursive||l.options.recursive&&tDe&&l.options.native!==!1)))return!0;if(!tDe)break;let u=KUe.default.dirname(t);if(s===u)break;s=u}return!1}async watchDirectories(t,r,n,i,o){if(this.isClosed())return;t=Ep.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||tDe&&r.native!==!1?r:{...r,recursive:!1},l={watcher:qti.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=KUe.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||tDe&&r.native!==!1)return this.watchersLock(()=>this.watchDirectories([t],r,n,i,o));{r={...r,recursive:!0};let s=r.depth??eDe,a=r.limit??LGt,[c]=await Ep.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=Ep.fs.getDepth(t);for(let p of c){let d=Ep.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(NN.CLOSE,c),s.watchFile(t,r,o)},c=()=>{this._subwatchers.delete(i),this.removeListener(NN.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=KUe.default.dirname(t);return this.watchDirectory(i,r,n,t)}async watchPollingOnce(t,r,n){if(this.isClosed())return;let i=!1,o=new l8o,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 Ep.lang.noop;if(this.pollerExists(t,r))return Ep.lang.noop;let i={...r,interval:r.pollingInterval??iyu},o={targetPath:t,options:r},s=()=>{this._pollers.add(o),this.on(NN.CLOSE,a),qti.default.watchFile(t,i,n)},a=()=>{this._pollers.delete(o),this.removeListener(NN.CLOSE,a),qti.default.unwatchFile(t,n)};return Ep.lang.attempt(s),()=>Ep.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=Ep.lang.uniq(t).sort(),t.every((o,s)=>t.every((a,c)=>c===s||!Ep.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=KUe.default.resolve(t),this.isIgnored(t,r.ignore)))return;let i=await Ep.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=KUe.default.dirname(t);return(await Ep.fs.poll(o,r.pollingTimeout))?.isDirectory()?this.watchUnknownChild(t,r,n):this.watchUnknownTarget(t,r,n)}}async watch(t,r,n=Ep.lang.noop){if(Ep.lang.isFunction(t))return this.watch([],{},t);if(Ep.lang.isUndefined(t))return this.watch([],r,n);if(Ep.lang.isFunction(r))return this.watch(t,{},r);if(Ep.lang.isUndefined(r))return this.watch(t,{},n);if(this.isClosed())return;this.isReady()&&(r.readdirMap=void 0);let i=Ep.lang.castArray(t);i.forEach(o=>this._roots.add(o)),await this.watchPaths(i,r,n),!this.isClosed()&&(n!==Ep.lang.noop&&this.on(NN.ALL,n),r.readdirMap=void 0,this.ready())}},Eyu=p8o;function p3m(e){return"code"in e&&typeof e.code=="string"}function vyu(e){return e instanceof Error?e:new Error(String(e))}function Iyu(e){return p3m(e)&&e.code==="ENOSPC"?"Unable to watch Fern docs files for changes because the system limit for file watchers was reached. Close other file-watching processes or increase the file watcher limit, then restart `fern docs dev`.":`Unable to watch Fern docs files for changes: ${e.message}`}async function Gti({absoluteFilePathToFern:e,additionalFilepaths:t,context:r}){let n=new Eyu([e,...t],{recursive:!0,ignoreInitial:!0,debounce:100,renameDetection:!0}),i=await new Promise(o=>{let s=()=>{n.off("error",a),o(void 0)},a=c=>{n.off("ready",s),o(vyu(c))};n.once("ready",s),n.once("error",a)});return i!=null&&(n.close(),r.failAndThrow(Iyu(i),i,{code:D.Code.EnvironmentError})),n.on("error",o=>{let s=vyu(o);r.failWithoutThrowing(Iyu(s),s,{code:D.Code.EnvironmentError}),n.close()}),n}tr();aS();_t();var Cwu=require("child_process"),ini=Ce(E8o(),1),xwu=Ce(F7o(),1),Iv=require("fs"),LN=require("fs/promises"),Swu=require("os"),MN=Ce(require("path"),1),Twu=Ce(fC(),1),Bwu=Ce(wwu(),1),n_e=process.platform==="win32",nni=Ae.cyan("[docs]:"),U_m="etag",__m=23,q7o=e=>e.padEnd(__m," "),V_m="preview",q_m="app-preview",G_m="bundle",W_m=".next",H_m="standalone",K_m=".fern",J_m="packages/fern-docs/bundle/.next/server/instrumentation.js",Y_m='Cannot find matching keyid: {"signatures":',X_m="ERR_PNPM_IGNORED_BUILDS";function Z_m(e){try{let r=(0,Cwu.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 D({message:`Windows long path support is not enabled. The docs bundle contains deeply nested .pnpm paths that exceed the 260-character MAX_PATH limit.
|
|
3819
3819
|
|
|
@@ -4379,7 +4379,7 @@ Please ensure you have membership at https://dashboard.buildwithfern.com, and as
|
|
|
4379
4379
|
|
|
4380
4380
|
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`:r}function DAh(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.
|
|
4381
4381
|
|
|
4382
|
-
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function RAh(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 FAh(e){try{return new URL(TN(e)).pathname}catch{return}}async function kAh({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await NAh({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:mn.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 Xes(e){return e.replace(/^https:\/\//,"")}async function NAh({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&&Xes(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 jAh({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 jAh({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=Un.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 QAh({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&&Xes(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=dVe({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=Xes(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=iA({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 Yh(r,e),dynamicGeneratorConfig:u}),d=vLe({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 MAh({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 LAh({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 zAh(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 uUu(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 ZHt=[60*1e3,300*1e3,300*1e3];async function $Ht({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=Dy(n.config,{onError:x=>i.failAndThrow(void 0,x,{code:D.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:D.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:D.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:D.Code.ConfigError});return}let I=(typeof y.customDomain=="string"?[y.customDomain]:y.customDomain??[]).map(u4u);(y.multiSource===!0||n.config.experimental?.basepathAware===!0)&&l4u(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 w;return await i.runInteractiveTask({name:y.url},async()=>{let x=performance.now(),T=()=>sUu({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 R=0;;R++)try{w=await T();break}catch(P){if(!(P instanceof oCt)||R>=ZHt.length){if(P instanceof oCt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:D.Code.NetworkError});throw P}let U=ZHt[R]??ZHt[ZHt.length-1]??6e4,X=U/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${X} minute${X===1?"":"s"} (attempt ${R+1}/${ZHt.length})...`),await new Promise($=>setTimeout($,U))}let O=performance.now()-x;i.logger.debug(`Docs publishing completed in ${O.toFixed(0)}ms`)}),w}_t();var wpi=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 wd({context:this.context,task:this.task});try{let s=await $Ht({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.45.1",loginCommand:"fern auth login"});return o.getResult()===Uf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:qn(s)}}}};jt();var sCt=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(`
|
|
4382
|
+
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function RAh(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 FAh(e){try{return new URL(TN(e)).pathname}catch{return}}async function kAh({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await NAh({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:mn.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 Xes(e){return e.replace(/^https:\/\//,"")}async function NAh({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&&Xes(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 jAh({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 jAh({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=Un.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 QAh({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&&Xes(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=dVe({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=Xes(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=iA({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 Yh(r,e),dynamicGeneratorConfig:u}),d=vLe({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 MAh({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 LAh({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 zAh(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 uUu(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 ZHt=[60*1e3,300*1e3,300*1e3];async function $Ht({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=Dy(n.config,{onError:x=>i.failAndThrow(void 0,x,{code:D.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:D.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:D.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:D.Code.ConfigError});return}let I=(typeof y.customDomain=="string"?[y.customDomain]:y.customDomain??[]).map(u4u);(y.multiSource===!0||n.config.experimental?.basepathAware===!0)&&l4u(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 w;return await i.runInteractiveTask({name:y.url},async()=>{let x=performance.now(),T=()=>sUu({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 R=0;;R++)try{w=await T();break}catch(P){if(!(P instanceof oCt)||R>=ZHt.length){if(P instanceof oCt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:D.Code.NetworkError});throw P}let U=ZHt[R]??ZHt[ZHt.length-1]??6e4,X=U/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${X} minute${X===1?"":"s"} (attempt ${R+1}/${ZHt.length})...`),await new Promise($=>setTimeout($,U))}let O=performance.now()-x;i.logger.debug(`Docs publishing completed in ${O.toFixed(0)}ms`)}),w}_t();var wpi=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 wd({context:this.context,task:this.task});try{let s=await $Ht({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.45.2",loginCommand:"fern auth login"});return o.getResult()===Uf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:qn(s)}}}};jt();var sCt=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(`
|
|
4383
4383
|
`),this.stream.write(`${Ae.cyan("\u25C6")} ${Ae.bold(t.title)}
|
|
4384
4384
|
`),t.subtitle!=null&&this.stream.write(` ${Ae.dim(t.subtitle)}
|
|
4385
4385
|
`),this.stream.write(`
|
|
@@ -4760,7 +4760,7 @@ ${t}`)}return t}getContent(){let t=this.stringifyImports();return t.length>0?t+`
|
|
|
4760
4760
|
|
|
4761
4761
|
\u{1F33F} Generated with Fern`}async isFernIgnorePresent(){let t=Ht.of(Ze(this.absolutePathToLocalOutput,Fe.of(dD)));return await sr(t)}async isGitRepository(){let t=Ht.of(Ze(this.absolutePathToLocalOutput,Fe.of(".git")));return await sr(t)}async copyGeneratedFilesWithFernIgnoreInExistingRepo(){let t=Ht.of(Ze(this.absolutePathToLocalOutput,Fe.of(dD))),r=await ebe({absolutePathToFernignore:t}),n=await this.getPathsToPreserve(r);await this.runGitCommand(["rm","-rf","."],this.absolutePathToLocalOutput),await this.copyGeneratedFilesToDirectory(this.absolutePathToLocalOutput),await this.runGitCommand(["add","."],this.absolutePathToLocalOutput),await this.runGitCommand(["reset","--",...n],this.absolutePathToLocalOutput),await this.runGitCommand(["clean","-fd","--",...n],this.absolutePathToLocalOutput),await this.runGitCommand(["restore","."],this.absolutePathToLocalOutput)}async copyGeneratedFilesWithFernIgnoreInTempRepo(){let t=Ht.of((await pel.default.dir({})).path),r=Ht.of(Ze(this.absolutePathToLocalOutput,Fe.of(dD))),n=await ebe({absolutePathToFernignore:r}),i=await this.getPathsToPreserve(n);await(0,kI.cp)(this.absolutePathToLocalOutput,t,{recursive:!0}),await this.runThrowawayGitCommand(["init"],t),await this.runThrowawayGitCommand(["config","gc.auto","0"],t),await this.runThrowawayGitCommand(["add","."],t),await this.runThrowawayGitCommand(["-c","user.name=fern","-c","user.email=hey@buildwithfern.com","commit","--allow-empty","--no-verify","-m","init"],t),await this.runThrowawayGitCommand(["rm","-rf","."],t),await this.copyGeneratedFilesToDirectory(t),await this.runThrowawayGitCommand(["add","."],t),await this.runThrowawayGitCommand(["reset","--",...i],t),await this.runThrowawayGitCommand(["clean","-fd","--",...i],t),await this.runThrowawayGitCommand(["restore","."],t),await(0,kI.rm)(Ze(t,Fe.of(".git")),{recursive:!0,force:!0,maxRetries:3,retryDelay:100}),await(0,kI.rm)(this.absolutePathToLocalOutput,{recursive:!0}),await(0,kI.cp)(t,this.absolutePathToLocalOutput,{recursive:!0})}async copyGeneratedFilesNoFernIgnorePreservingGit(){let t=await(0,kI.readdir)(this.absolutePathToLocalOutput),r=[".git"];await this.generatedOutputMissingReadme()&&r.push("README.md"),await Promise.all(t.filter(n=>!r.includes(n)).map(n=>(0,kI.rm)(Ze(this.absolutePathToLocalOutput,Fe.of(n)),{force:!0,recursive:!0}))),await this.copyGeneratedFilesToDirectory(this.absolutePathToLocalOutput)}async copyGeneratedFilesNoFernIgnoreDeleteAll(){this.context.logger.debug(`rm -rf ${this.absolutePathToLocalOutput}`),await(0,kI.rm)(this.absolutePathToLocalOutput,{force:!0,recursive:!0}),await this.copyGeneratedFilesToDirectory(this.absolutePathToLocalOutput)}async copyGeneratedFilesToDirectory(t){let[r,...n]=await(0,kI.readdir)(this.absolutePathToTmpOutputDirectory);if(r!=null)if(this.context.logger.debug(`Copying generated files to ${t}`),r.endsWith(".zip")){await(0,cel.default)(Ze(this.absolutePathToTmpOutputDirectory,Fe.of(r)),t);for(let i of n)await(0,kI.cp)(Ze(this.absolutePathToTmpOutputDirectory,Fe.of(i)),Ze(t,Fe.of(i)),{recursive:!0})}else await(0,kI.cp)(this.absolutePathToTmpOutputDirectory,t,{recursive:!0})}async copySnippetJSON({absolutePathToTmpSnippetJSON:t,absolutePathToLocalSnippetJSON:r}){if(await Qag({src:t,dest:r})==="skipped-empty"){this.context.logger.debug(`Skipping empty snippet.json copy from ${t}`);return}this.context.logger.debug(`Copying generated snippets to ${r}`)}async generatedOutputMissingReadme(){try{let t=await(0,kI.readdir)(this.absolutePathToTmpOutputDirectory);return t.length===1&&t[0]!=null&&t[0].endsWith(".zip")?!1:!t.includes("README.md")}catch{return!0}}async getPathsToPreserve(t){return await this.generatedOutputMissingReadme()?[...t,"README.md"]:t}async runGitCommand(t,r){try{return(await hu(this.context.logger,"git",t,{cwd:r,doNotPipeOutput:!0})).stdout}catch(n){throw new D({message:`Git command failed in generated output directory: ${qn(n)}`,code:D.Code.UserError})}}async runThrowawayGitCommand(t,r){return(await hu(this.context.logger,"git",["-c","commit.gpgsign=false","-c","core.hooksPath=/dev/null",...t],{cwd:r,doNotPipeOutput:!0})).stdout}async readPriorChangelog(t){try{let i=(await(0,kI.readdir)(this.absolutePathToLocalOutput)).find(f=>f.toLowerCase()==="changelog.md");if(!i)return"";let o=Ze(this.absolutePathToLocalOutput,Fe.of(i)),s=await(0,kI.readFile)(o,"utf-8");if(s.trim().length===0)return"";let a=s.split(`
|
|
4762
4762
|
`),c=[];for(let f=0;f<a.length;f++)a[f]?.startsWith("## ")&&c.push(f);if(c.length===0)return"";let u=c[0];if(u==null)return"";let l=c[Math.min(t,c.length)],p=l??a.length,d=a.slice(u,p).join(`
|
|
4763
|
-
`).trim();return d.length>2048?d.substring(0,2048):d}catch(n){return this.context.logger.debug(`Failed to read prior changelog: ${n}`),""}}async readSpecCommitMessage(){if(this.absolutePathToSpecRepo==null)return"";try{let r=(await hu(this.context.logger,"git",["rev-parse","--show-toplevel"],{cwd:this.absolutePathToSpecRepo,doNotPipeOutput:!0})).stdout.trim();if(!r)return"";let i=(await hu(this.context.logger,"git",["log","-1","--format=%B","--",".fern/"],{cwd:r,doNotPipeOutput:!0})).stdout.trim();return!i||i.toLowerCase().startsWith("merge ")||i.length<5?"":i.length>500?i.slice(0,500)+"\u2026":i}catch(t){return this.context.logger.debug(`Failed to read spec repo commit message: ${t}`),""}}async generateDiffFile(){let t=(0,lel.join)((0,uel.tmpdir)(),`git-diff-${Date.now()}.patch`);return await this.runGitCommand(["add","-N","."],this.absolutePathToLocalOutput),await this.runGitCommand(["diff","HEAD","--output",t,"--",".",":(exclude).fern/metadata.json"],this.absolutePathToLocalOutput),this.context.logger.info(`Generated git diff to file: ${t}`),t}};async function Qag({src:e,dest:t}){return(await(0,kI.stat)(e)).size===0?"skipped-empty":(await(0,kI.cp)(e,t),"copied")}jt();tr();var pj=require("fs/promises");ks();var b4=Ce(require("path"),1);var fel=Ce(fC(),1);async function YSt({specs:e,hostOutputDir:t,containerBaseDir:r,context:n,audiences:i}){let o={specs:[]};if(e.length===0)return o;let s={};function a(c){let u=s[c]??0;return s[c]=u+1,u}for(let c of e){let u;c.type==="openapi"?u=await del(c.absoluteFilepath)?"asyncapi":"openapi":u=c.type;let l=await Mag({spec:c,hostOutputDir:t,containerBaseDir:r,context:n,index:a(u),audiences:i});o.specs.push(l)}return n.logger.debug(`Resolved ${o.specs.length} spec(s) to ${t}`),o}async function Mag({spec:e,hostOutputDir:t,containerBaseDir:r,context:n,index:i,audiences:o}){switch(e.type){case"openapi":return Lag({spec:e,hostOutputDir:t,containerBaseDir:r,context:n,index:i,audiences:o});case"openrpc":return zag({spec:e,hostOutputDir:t,containerBaseDir:r,context:n,index:i});case"protobuf":return Uag({spec:e,hostOutputDir:t,containerBaseDir:r,index:i});case"graphql":return _ag({spec:e,hostOutputDir:t,containerBaseDir:r,index:i});default:xe(e)}}async function Lag({spec:e,hostOutputDir:t,containerBaseDir:r,context:n,index:i,audiences:o}){let s=await del(e.absoluteFilepath),a=s?`asyncapi${i}.json`:`openapi${i}.json`,c;return s?c=await Dnt({context:n,absoluteFilePath:e.absoluteFilepath,absoluteFilePathToOverrides:e.absoluteFilepathToOverrides}):c=await x3e({context:n,absolutePathToOpenAPI:e.absoluteFilepath,absolutePathToOpenAPIOverrides:e.absoluteFilepathToOverrides,absolutePathToOpenAPIOverlays:e.absoluteFilepathToOverlays}),c=mel(c,o),await(0,pj.writeFile)(b4.default.join(t,a),JSON.stringify(c)),n.logger.debug(`Resolved ${s?"AsyncAPI":"OpenAPI"} spec ${e.absoluteFilepath} -> ${a}`),{type:s?"asyncapi":"openapi",specPath:JSt(a,r),namespace:e.namespace}}async function zag({spec:e,hostOutputDir:t,containerBaseDir:r,context:n,index:i}){let o=`openrpc${i}.json`,s=await(0,pj.readFile)(e.absoluteFilepath,"utf-8"),a;try{a=JSON.parse(s)}catch{a=Cr.load(s)}let c=a,u=r0s(e.absoluteFilepathToOverrides);for(let l of u){let p=await(0,pj.readFile)(l,"utf-8"),d;try{d=JSON.parse(p)}catch{d=Cr.load(p)}c=vU({data:c,overrides:d})}return await(0,pj.writeFile)(b4.default.join(t,o),JSON.stringify(c)),n.logger.debug(`Resolved OpenRPC spec ${e.absoluteFilepath} -> ${o}`),{type:"openrpc",specPath:JSt(o,r),namespace:e.namespace}}async function Uag({spec:e,hostOutputDir:t,containerBaseDir:r,index:n}){let i=`protobuf${n}`,o=b4.default.join(t,i);await(0,pj.cp)(e.absoluteFilepathToProtobufRoot,o,{recursive:!0});let s={type:"protobuf",specPath:JSt(i,r)},a=r0s(e.absoluteFilepathToOverrides);if(a.length>0){s.overridePaths=[];for(let[c,u]of a.entries()){let l=`protobuf${n}-override-${c}${b4.default.extname(u)}`;await(0,pj.copyFile)(u,b4.default.join(t,l)),s.overridePaths.push(JSt(l,r))}}return s}async function _ag({spec:e,hostOutputDir:t,containerBaseDir:r,index:n}){let i=b4.default.extname(e.absoluteFilepath)||".graphql",o=`graphql${n}${i}`;await(0,pj.copyFile)(e.absoluteFilepath,b4.default.join(t,o));let s={type:"graphql",specPath:JSt(o,r),namespace:e.namespace},a=r0s(e.absoluteFilepathToOverrides);if(a.length>0){s.overridePaths=[];for(let[c,u]of a.entries()){let l=`graphql${n}-override-${c}${b4.default.extname(u)}`;await(0,pj.copyFile)(u,b4.default.join(t,l)),s.overridePaths.push(JSt(l,r))}}return s}async function del(e){try{return(await(0,pj.readFile)(e,"utf-8")).includes("asyncapi")}catch{return!1}}function r0s(e){return e==null?[]:Array.isArray(e)?e:[e]}function JSt(e,t){return b4.default.posix.join(t,e.split(b4.default.sep).join(b4.default.posix.sep))}var n0s=new Set(["get","post","put","patch","delete","head","options","trace"]);function mel(e,t){if(t==null||t.type==="all")return Vag(e);let r=new Set(t.audiences);return qag(e,r)}function Vag(e){let t=e.paths;if(t==null)return e;let r={};for(let[n,i]of Object.entries(t)){if(i==null||typeof i!="object")continue;let o={};for(let[s,a]of Object.entries(i))n0s.has(s.toLowerCase())&&hel(a)||(o[s]=a);gel(o)&&(r[n]=o)}return{...e,paths:r}}function qag(e,t){let r=e.paths;if(r==null)return e;let n={};for(let[i,o]of Object.entries(r)){if(o==null||typeof o!="object")continue;let s={};for(let[a,c]of Object.entries(o)){if(!n0s.has(a.toLowerCase())){s[a]=c;continue}hel(c)||Gag(c,t)&&(s[a]=c)}gel(s)&&(n[i]=s)}return{...e,paths:n}}function hel(e){return e==null||typeof e!="object"?!1:e["x-fern-ignore"]===!0}function Gag(e,t){if(e==null||typeof e!="object")return!0;let n=e["x-fern-audiences"];return n==null?!0:Array.isArray(n)?n.some(i=>typeof i=="string"&&t.has(i)):typeof n=="string"&&t.has(n)}function gel(e){return Object.keys(e).some(t=>n0s.has(t.toLowerCase()))}async function i0s({specs:e,context:t,audiences:r}){let n=await fel.default.dir({unsafeCleanup:!0});try{let i=await YSt({specs:e,hostOutputDir:Ht.of(n.path),containerBaseDir:"/fern/specs",context:t,audiences:r});await(0,pj.writeFile)(Ze(Ht.of(n.path),Fe.of(c5e)),JSON.stringify(i,void 0,4));let o=Ze(Ht.of(n.path),Fe.of("specs.tar.gz"));return await YLr({gzip:!0,cwd:n.path,file:o,portable:!0,filter:s=>s!=="./specs.tar.gz"},["."]),await(0,pj.readFile)(o)}finally{await n.cleanup()}}function Wag(e,t){let r=e0s(e);if(r?.type==="custom"){let n=r.value,i=t?XSt.dirname(t):process.cwd(),o=XSt.isAbsolute(n)?n:XSt.resolve(i,n);return Ht.of(o)}}async function EAi({organization:e,absolutePathToFernConfig:t,workspace:r,generatorInvocation:n,absolutePathToLocalOutput:i,absolutePathToLocalSnippetJSON:o,absolutePathToLocalSnippetTemplateJSON:s,audiences:a,version:c,workspaceTempDir:u,keepDocker:l,context:p,irVersionOverride:d,outputVersionOverride:f,writeUnitTests:m,generateOauthClients:h,generatePaginatedClients:A,includeOptionalRequestPropertyExamples:y,inspect:I,executionEnvironment:C,runner:w,whiteLabel:x,publishToRegistry:T,ir:O,ai:R,autoVersioningCache:P,absolutePathToSpecRepo:U,skipFernignore:X,disableTelemetry:$,rawApiSpecs:ne}){let{latest:le,migrated:ge}=await ael({workspace:r,audiences:a,generatorInvocation:n,context:p,irVersionOverride:d,packageName:Un.getPackageName({generatorInvocation:n}),version:c??f,sourceConfig:Kag(r,C?.usesContainerPaths??!0),includeOptionalRequestPropertyExamples:y,ir:O}),me=await Hag({workspaceTempDir:u,filename:Qgs,context:p,ir:ge});p.logger.debug("Wrote IR to: "+me);let fe=(0,yFe.join)(u.path,jgs),Le=Ht.of(fe);await(0,Whe.writeFile)(fe,""),p.logger.debug("Will write config.json to: "+Le);let Ne=(0,yFe.join)(u.path,Ngs),oe=Ht.of(Ne);await(0,Whe.mkdir)(Ne,{recursive:!0}),p.logger.debug("Will write output to: "+oe);let ae;if(o!=null){let ke=(0,yFe.join)(u.path,"snippet.json");ae=Ht.of(ke),await(0,Whe.writeFile)(ke,""),p.logger.debug("Will write snippet.json to: "+ae)}let Be;if(s!=null){let ke=(0,yFe.join)(u.path,$da);Be=Ht.of(ke),await(0,Whe.writeFile)(ke,""),p.logger.debug("Will write snippet-templates.json to: "+Be)}let ve=C??new u5e({containerImage:n.containerImage?`${n.containerImage}:${n.version}`:`${n.name}:${n.version}`,keepContainer:l,disableTelemetry:$}),Qe=ve.usesContainerPaths?{outputDirectory:Ht.of(zdi),irPath:Ht.of(Udi),configPath:Ht.of(ZKt),snippetPath:Ht.of(_di),snippetTemplatePath:Ht.of(Vdi)}:{outputDirectory:oe,configPath:Le,irPath:me,snippetPath:ae,snippetTemplatePath:Be},qe=n.language??(0,GYt.extractLanguageFromGeneratorName)(n.name),ct=c!=null?(0,GYt.mapMagicVersionForLanguage)(c,qe):c,At=f!=null?(0,GYt.mapMagicVersionForLanguage)(f,qe):f,st=sel({generatorInvocation:n,customConfig:n.config,workspaceName:r.definition.rootApiFile.contents.name,outputVersion:At,organization:e,absolutePathToSnippet:ae,absolutePathToSnippetTemplates:Be,absolutePathToFernConfig:t,writeUnitTests:m,generateOauthClients:h,generatePaginatedClients:A,whiteLabel:x,publishToRegistry:T,paths:Qe});await(0,Whe.writeFile)(Le,JSON.stringify(await Ael.GeneratorConfig.jsonOrThrow(st),void 0,4));let qt=Wag(n,t),er=r.getSources().filter(ke=>ke.type==="protobuf").map(ke=>({hostPath:ke.absoluteFilePath,containerPath:`${Lgs}/${ke.id}`}));if(ne!=null&&ne.length>0){let ke=(0,yFe.join)(u.path,Mgs);await(0,Whe.mkdir)(ke,{recursive:!0});let nt=zgs,we=await YSt({specs:ne,hostOutputDir:Ht.of(ke),containerBaseDir:nt,context:p,audiences:a});await(0,Whe.writeFile)((0,yFe.join)(ke,c5e),JSON.stringify(we,void 0,4)),p.logger.debug(`Wrote raw specs manifest with ${we.specs.length} spec(s) to ${ke}`),er.push({hostPath:Ht.of(ke),containerPath:zgs})}await ve.execute({generatorName:n.name,irPath:me,configPath:Le,outputPath:oe,snippetPath:ae,snippetTemplatePath:Be,licenseFilePath:qt,sourceMounts:er,context:p,inspect:I,runner:w});let he=await new bAi({context:p,absolutePathToLocalOutput:i,absolutePathToTmpOutputDirectory:oe,absolutePathToLocalSnippetJSON:o,absolutePathToLocalSnippetTemplateJSON:s,absolutePathToTmpSnippetJSON:ae,absolutePathToTmpSnippetTemplatesJSON:Be,version:ct,ai:R,isWhitelabel:O.readmeConfig?.whiteLabel??!1,autoVersioningCache:P,generatorLanguage:qe,absolutePathToSpecRepo:U,skipFernignore:X}).copyGeneratedFiles();return{ir:le,generatorConfig:st,...he}}async function Hag({ir:e,workspaceTempDir:t,filename:r,context:n}){n.logger.debug("Migrated IR");let i;if(r)i=Ht.of((0,yFe.join)(t.path,r));else{let o=await yel.default.file({tmpdir:t.path});i=Ht.of(o.path)}return await pC(i,e,{pretty:!1}),n.logger.debug(`Wrote IR to ${i}`),i}function Kag(e,t){return{sources:e.getSources().map(r=>{if(r.type==="protobuf"){let n=t?`file:///${Jag(r)}`:`file:///${r.absoluteFilePath}`;return Hj.proto({id:r.id,protoRootUrl:n})}return Hj.openapi()})}}function Jag(e){return`${Lgs}/${e.id}`}jt();tr();var HYt=Ce(gVe(),1),ZSt=Ce(Lli(),1);SY();_t();var IAi=Ce(require("fs/promises"),1),o0s=Ce(require("os"),1),bel=Ce(require("path"),1),s0s=Ce(fC(),1);function WYt(e){return(e.split("/").pop()||"sdk").replace(/[^a-zA-Z0-9-_]/g,"_")}async function $St({token:e,projectConfig:t,workspace:r,generatorGroup:n,version:i,keepDocker:o,inspect:s,context:a,absolutePathToPreview:c,runner:u,ai:l,replay:p,noReplay:d,validateWorkspace:f,requireEnvVars:m,skipFernignore:h,publishToRegistry:A,isPreview:y,automationMode:I,autoMerge:C,skipIfNoDiff:w,verify:x,disableTelemetry:T}){let O=i;if(O!=null)if(c!=null)a.logger.warn(`Skipping version availability check in preview mode. Version ${O} may already exist on the package registry.`);else for(let U of n.generators){let X=aKe(U);await Kgr({version:O,packageName:X,generatorInvocation:U,context:a})}let R=new HYt.AutoVersioningCache;if((await Promise.all(n.generators.map(async U=>a.runInteractiveTask({name:U.name},async X=>{let $=y??c!=null;U=(je=>Dy(je,{onError:Pt=>{!$&&(m??!0)&&X.failAndThrow(Pt,void 0,{code:D.Code.EnvironmentError})}},{substituteAsEmpty:$}))(U);let le=await r.toFernWorkspace({context:a},lZe(U),U.apiOverride?.specs);f&&await FK({workspace:le,context:a,logWarnings:!1,ossWorkspace:r instanceof _p?r:void 0});let ge=dVe({apiName:le.definition.rootApiFile.contents.name,organization:t.organization,generatorInvocation:U}),me=aKe(U);i=i??await mFt({packageName:me,generatorInvocation:U});let fe=iA({workspace:le,audiences:n.audiences,generationLanguage:U.language,keywords:U.keywords,smartCasing:U.smartCasing,exampleGeneration:{includeOptionalRequestPropertyExamples:!1,disabled:U.disableExamples},readme:U.readme,version:i??await mFt({packageName:me,generatorInvocation:U}),packageName:me,context:a,sourceResolver:new Yh(a,le),dynamicGeneratorConfig:ge,generationMetadata:{cliVersion:r.cliVersion,generatorName:U.name,generatorVersion:U.version,generatorConfig:U.config,originGitCommit:OY(),originGitCommitIsDirty:PY(),invokedBy:TY(),requestedVersion:O,ciProvider:BY()}}),Le=Hf({token:e?.value});if(U.absolutePathToLocalOutput==null&&(e??=await BV(),e==null)){X.failWithoutThrowing("Please provide a FERN_TOKEN in your environment.",void 0,{code:D.Code.AuthError});return}let Ne=await Le.organization.get(t.organization);if(U.absolutePathToLocalOutput==null&&!Ne.ok){X.failWithoutThrowing(`Failed to load details for organization ${t.organization}.`,void 0,{code:D.Code.NetworkError});return}Ne.ok&&(Ne.body.isWhitelabled&&(fe.readmeConfig==null&&(fe.readmeConfig=$ag),fe.readmeConfig.whiteLabel=!0),fe.selfHosted=Ne.body.selfHostedSdKs);let oe=Xag({generatorInvocation:U,org:Ne.ok?Ne.body:void 0,version:i,userProvidedVersion:O,packageName:me,context:X});oe!=null&&(fe.publishConfig=oe);let ae=Yag(c,U),Be=ae??U.absolutePathToLocalOutput??Ht.of(await s0s.default.dir().then(je=>je.path)),ve=ecg(U,ae!=null);if(i!=null&&(0,HYt.isAutoVersion)(i)&&ve==null&&a.failAndThrow(`Automatic versioning (--version AUTO) requires a self-hosted GitHub repository configuration. Regular GitHub repositories are not supported because auto versioning needs to push changes back to the repository. Please configure your generator with self-hosted GitHub output in generators.yml. Example:
|
|
4763
|
+
`).trim();return d.length>2048?d.substring(0,2048):d}catch(n){return this.context.logger.debug(`Failed to read prior changelog: ${n}`),""}}async readSpecCommitMessage(){if(this.absolutePathToSpecRepo==null)return"";try{let r=(await hu(this.context.logger,"git",["rev-parse","--show-toplevel"],{cwd:this.absolutePathToSpecRepo,doNotPipeOutput:!0})).stdout.trim();if(!r)return"";let i=(await hu(this.context.logger,"git",["log","-1","--format=%B","--",".fern/"],{cwd:r,doNotPipeOutput:!0})).stdout.trim();return!i||i.toLowerCase().startsWith("merge ")||i.length<5?"":i.length>500?i.slice(0,500)+"\u2026":i}catch(t){return this.context.logger.debug(`Failed to read spec repo commit message: ${t}`),""}}async generateDiffFile(){let t=(0,lel.join)((0,uel.tmpdir)(),`git-diff-${Date.now()}.patch`);return await this.runGitCommand(["add","-N","."],this.absolutePathToLocalOutput),await this.runGitCommand(["diff","HEAD","--output",t,"--",".",":(exclude).fern/metadata.json"],this.absolutePathToLocalOutput),this.context.logger.info(`Generated git diff to file: ${t}`),t}};async function Qag({src:e,dest:t}){return(await(0,kI.stat)(e)).size===0?"skipped-empty":(await(0,kI.cp)(e,t),"copied")}jt();tr();var pj=require("fs/promises");ks();var b4=Ce(require("path"),1);var fel=Ce(fC(),1);async function YSt({specs:e,hostOutputDir:t,containerBaseDir:r,context:n,audiences:i}){let o={specs:[]};if(e.length===0)return o;let s={};function a(c){let u=s[c]??0;return s[c]=u+1,u}for(let c of e){let u;c.type==="openapi"?u=await del(c.absoluteFilepath)?"asyncapi":"openapi":u=c.type;let l=await Mag({spec:c,hostOutputDir:t,containerBaseDir:r,context:n,index:a(u),audiences:i});o.specs.push(l)}return n.logger.debug(`Resolved ${o.specs.length} spec(s) to ${t}`),o}async function Mag({spec:e,hostOutputDir:t,containerBaseDir:r,context:n,index:i,audiences:o}){switch(e.type){case"openapi":return Lag({spec:e,hostOutputDir:t,containerBaseDir:r,context:n,index:i,audiences:o});case"openrpc":return zag({spec:e,hostOutputDir:t,containerBaseDir:r,context:n,index:i});case"protobuf":return Uag({spec:e,hostOutputDir:t,containerBaseDir:r,index:i});case"graphql":return _ag({spec:e,hostOutputDir:t,containerBaseDir:r,index:i});default:xe(e)}}async function Lag({spec:e,hostOutputDir:t,containerBaseDir:r,context:n,index:i,audiences:o}){let s=await del(e.absoluteFilepath),a=s?`asyncapi${i}.json`:`openapi${i}.json`,c;return s?c=await Dnt({context:n,absoluteFilePath:e.absoluteFilepath,absoluteFilePathToOverrides:e.absoluteFilepathToOverrides}):c=await x3e({context:n,absolutePathToOpenAPI:e.absoluteFilepath,absolutePathToOpenAPIOverrides:e.absoluteFilepathToOverrides,absolutePathToOpenAPIOverlays:e.absoluteFilepathToOverlays}),c=mel(c,o),await(0,pj.writeFile)(b4.default.join(t,a),JSON.stringify(c)),n.logger.debug(`Resolved ${s?"AsyncAPI":"OpenAPI"} spec ${e.absoluteFilepath} -> ${a}`),{type:s?"asyncapi":"openapi",specPath:JSt(a,r),namespace:e.namespace}}async function zag({spec:e,hostOutputDir:t,containerBaseDir:r,context:n,index:i}){let o=`openrpc${i}.json`,s=await(0,pj.readFile)(e.absoluteFilepath,"utf-8"),a;try{a=JSON.parse(s)}catch{a=Cr.load(s)}let c=a,u=r0s(e.absoluteFilepathToOverrides);for(let l of u){let p=await(0,pj.readFile)(l,"utf-8"),d;try{d=JSON.parse(p)}catch{d=Cr.load(p)}c=vU({data:c,overrides:d})}return await(0,pj.writeFile)(b4.default.join(t,o),JSON.stringify(c)),n.logger.debug(`Resolved OpenRPC spec ${e.absoluteFilepath} -> ${o}`),{type:"openrpc",specPath:JSt(o,r),namespace:e.namespace}}async function Uag({spec:e,hostOutputDir:t,containerBaseDir:r,index:n}){let i=`protobuf${n}`,o=b4.default.join(t,i);await(0,pj.cp)(e.absoluteFilepathToProtobufRoot,o,{recursive:!0});let s={type:"protobuf",specPath:JSt(i,r)},a=r0s(e.absoluteFilepathToOverrides);if(a.length>0){s.overridePaths=[];for(let[c,u]of a.entries()){let l=`protobuf${n}-override-${c}${b4.default.extname(u)}`;await(0,pj.copyFile)(u,b4.default.join(t,l)),s.overridePaths.push(JSt(l,r))}}return s}async function _ag({spec:e,hostOutputDir:t,containerBaseDir:r,index:n}){let i=b4.default.extname(e.absoluteFilepath)||".graphql",o=`graphql${n}${i}`;await(0,pj.copyFile)(e.absoluteFilepath,b4.default.join(t,o));let s={type:"graphql",specPath:JSt(o,r),namespace:e.namespace},a=r0s(e.absoluteFilepathToOverrides);if(a.length>0){s.overridePaths=[];for(let[c,u]of a.entries()){let l=`graphql${n}-override-${c}${b4.default.extname(u)}`;await(0,pj.copyFile)(u,b4.default.join(t,l)),s.overridePaths.push(JSt(l,r))}}return s}async function del(e){try{return(await(0,pj.readFile)(e,"utf-8")).includes("asyncapi")}catch{return!1}}function r0s(e){return e==null?[]:Array.isArray(e)?e:[e]}function JSt(e,t){return b4.default.posix.join(t,e.split(b4.default.sep).join(b4.default.posix.sep))}var n0s=new Set(["get","post","put","patch","delete","head","options","trace"]);function mel(e,t){if(t==null||t.type==="all")return Vag(e);let r=new Set(t.audiences);return qag(e,r)}function Vag(e){let t=e.paths;if(t==null)return e;let r={};for(let[n,i]of Object.entries(t)){if(i==null||typeof i!="object")continue;let o={};for(let[s,a]of Object.entries(i))n0s.has(s.toLowerCase())&&hel(a)||(o[s]=a);gel(o)&&(r[n]=o)}return{...e,paths:r}}function qag(e,t){let r=e.paths;if(r==null)return e;let n={};for(let[i,o]of Object.entries(r)){if(o==null||typeof o!="object")continue;let s={};for(let[a,c]of Object.entries(o)){if(!n0s.has(a.toLowerCase())){s[a]=c;continue}hel(c)||Gag(c,t)&&(s[a]=c)}gel(s)&&(n[i]=s)}return{...e,paths:n}}function hel(e){return e==null||typeof e!="object"?!1:e["x-fern-ignore"]===!0}function Gag(e,t){if(e==null||typeof e!="object")return!0;let n=e["x-fern-audiences"];return n==null?!0:Array.isArray(n)?n.some(i=>typeof i=="string"&&t.has(i)):typeof n=="string"&&t.has(n)}function gel(e){return Object.keys(e).some(t=>n0s.has(t.toLowerCase()))}async function i0s({specs:e,context:t,audiences:r}){let n=await fel.default.dir({unsafeCleanup:!0});try{let i=await YSt({specs:e,hostOutputDir:Ht.of(n.path),containerBaseDir:"/fern/specs",context:t,audiences:r});await(0,pj.writeFile)(Ze(Ht.of(n.path),Fe.of(c5e)),JSON.stringify(i,void 0,4));let o=Ze(Ht.of(n.path),Fe.of("specs.tar.gz"));return await YLr({gzip:!0,cwd:n.path,file:o,portable:!0,filter:s=>s!=="./specs.tar.gz"},["."]),await(0,pj.readFile)(o)}finally{await n.cleanup()}}function Wag(e,t){let r=e0s(e);if(r?.type==="custom"){let n=r.value,i=t?XSt.dirname(t):process.cwd(),o=XSt.isAbsolute(n)?n:XSt.resolve(i,n);return Ht.of(o)}}async function EAi({organization:e,absolutePathToFernConfig:t,workspace:r,generatorInvocation:n,absolutePathToLocalOutput:i,absolutePathToLocalSnippetJSON:o,absolutePathToLocalSnippetTemplateJSON:s,audiences:a,version:c,workspaceTempDir:u,keepDocker:l,context:p,irVersionOverride:d,outputVersionOverride:f,writeUnitTests:m,generateOauthClients:h,generatePaginatedClients:A,includeOptionalRequestPropertyExamples:y,inspect:I,executionEnvironment:C,runner:w,whiteLabel:x,publishToRegistry:T,ir:O,ai:R,autoVersioningCache:P,absolutePathToSpecRepo:U,skipFernignore:X,disableTelemetry:$,rawApiSpecs:ne}){let{latest:le,migrated:ge}=await ael({workspace:r,audiences:a,generatorInvocation:n,context:p,irVersionOverride:d,packageName:Un.getPackageName({generatorInvocation:n}),version:c??f,sourceConfig:Kag(r,C?.usesContainerPaths??!0),includeOptionalRequestPropertyExamples:y,ir:O}),me=await Hag({workspaceTempDir:u,filename:Qgs,context:p,ir:ge});p.logger.debug("Wrote IR to: "+me);let fe=(0,yFe.join)(u.path,jgs),Le=Ht.of(fe);await(0,Whe.writeFile)(fe,""),p.logger.debug("Will write config.json to: "+Le);let Ne=(0,yFe.join)(u.path,Ngs),oe=Ht.of(Ne);await(0,Whe.mkdir)(Ne,{recursive:!0}),p.logger.debug("Will write output to: "+oe);let ae;if(o!=null){let ke=(0,yFe.join)(u.path,"snippet.json");ae=Ht.of(ke),await(0,Whe.writeFile)(ke,""),p.logger.debug("Will write snippet.json to: "+ae)}let Be;if(s!=null){let ke=(0,yFe.join)(u.path,$da);Be=Ht.of(ke),await(0,Whe.writeFile)(ke,""),p.logger.debug("Will write snippet-templates.json to: "+Be)}let ve=C??new u5e({containerImage:n.containerImage?`${n.containerImage}:${n.version}`:`${n.name}:${n.version}`,keepContainer:l,disableTelemetry:$}),Qe=ve.usesContainerPaths?{outputDirectory:Ht.of(zdi),irPath:Ht.of(Udi),configPath:Ht.of(ZKt),snippetPath:Ht.of(_di),snippetTemplatePath:Ht.of(Vdi)}:{outputDirectory:oe,configPath:Le,irPath:me,snippetPath:ae,snippetTemplatePath:Be},qe=n.language??(0,GYt.extractLanguageFromGeneratorName)(n.name),ct=c!=null?(0,GYt.mapMagicVersionForLanguage)(c,qe):c,At=f!=null?(0,GYt.mapMagicVersionForLanguage)(f,qe):f,st=sel({generatorInvocation:n,customConfig:n.config,workspaceName:r.definition.rootApiFile.contents.name,outputVersion:At,organization:e,absolutePathToSnippet:ae,absolutePathToSnippetTemplates:Be,absolutePathToFernConfig:t,writeUnitTests:m,generateOauthClients:h,generatePaginatedClients:A,whiteLabel:x,publishToRegistry:T,paths:Qe});await(0,Whe.writeFile)(Le,JSON.stringify(await Ael.GeneratorConfig.jsonOrThrow(st),void 0,4));let qt=Wag(n,t),er=r.getSources().filter(ke=>ke.type==="protobuf").map(ke=>({hostPath:ke.absoluteFilePath,containerPath:`${Lgs}/${ke.id}`}));if(ne!=null&&ne.length>0){let ke=(0,yFe.join)(u.path,Mgs);await(0,Whe.mkdir)(ke,{recursive:!0});let nt=ve.usesContainerPaths?zgs:ke,we=await YSt({specs:ne,hostOutputDir:Ht.of(ke),containerBaseDir:nt,context:p,audiences:a});await(0,Whe.writeFile)((0,yFe.join)(ke,c5e),JSON.stringify(we,void 0,4)),p.logger.debug(`Wrote raw specs manifest with ${we.specs.length} spec(s) to ${ke}`),er.push({hostPath:Ht.of(ke),containerPath:zgs})}await ve.execute({generatorName:n.name,irPath:me,configPath:Le,outputPath:oe,snippetPath:ae,snippetTemplatePath:Be,licenseFilePath:qt,sourceMounts:er,context:p,inspect:I,runner:w});let he=await new bAi({context:p,absolutePathToLocalOutput:i,absolutePathToTmpOutputDirectory:oe,absolutePathToLocalSnippetJSON:o,absolutePathToLocalSnippetTemplateJSON:s,absolutePathToTmpSnippetJSON:ae,absolutePathToTmpSnippetTemplatesJSON:Be,version:ct,ai:R,isWhitelabel:O.readmeConfig?.whiteLabel??!1,autoVersioningCache:P,generatorLanguage:qe,absolutePathToSpecRepo:U,skipFernignore:X}).copyGeneratedFiles();return{ir:le,generatorConfig:st,...he}}async function Hag({ir:e,workspaceTempDir:t,filename:r,context:n}){n.logger.debug("Migrated IR");let i;if(r)i=Ht.of((0,yFe.join)(t.path,r));else{let o=await yel.default.file({tmpdir:t.path});i=Ht.of(o.path)}return await pC(i,e,{pretty:!1}),n.logger.debug(`Wrote IR to ${i}`),i}function Kag(e,t){return{sources:e.getSources().map(r=>{if(r.type==="protobuf"){let n=t?`file:///${Jag(r)}`:`file:///${r.absoluteFilePath}`;return Hj.proto({id:r.id,protoRootUrl:n})}return Hj.openapi()})}}function Jag(e){return`${Lgs}/${e.id}`}jt();tr();var HYt=Ce(gVe(),1),ZSt=Ce(Lli(),1);SY();_t();var IAi=Ce(require("fs/promises"),1),o0s=Ce(require("os"),1),bel=Ce(require("path"),1),s0s=Ce(fC(),1);function WYt(e){return(e.split("/").pop()||"sdk").replace(/[^a-zA-Z0-9-_]/g,"_")}async function $St({token:e,projectConfig:t,workspace:r,generatorGroup:n,version:i,keepDocker:o,inspect:s,context:a,absolutePathToPreview:c,runner:u,ai:l,replay:p,noReplay:d,validateWorkspace:f,requireEnvVars:m,skipFernignore:h,publishToRegistry:A,isPreview:y,automationMode:I,autoMerge:C,skipIfNoDiff:w,verify:x,disableTelemetry:T}){let O=i;if(O!=null)if(c!=null)a.logger.warn(`Skipping version availability check in preview mode. Version ${O} may already exist on the package registry.`);else for(let U of n.generators){let X=aKe(U);await Kgr({version:O,packageName:X,generatorInvocation:U,context:a})}let R=new HYt.AutoVersioningCache;if((await Promise.all(n.generators.map(async U=>a.runInteractiveTask({name:U.name},async X=>{let $=y??c!=null;U=(je=>Dy(je,{onError:Pt=>{!$&&(m??!0)&&X.failAndThrow(Pt,void 0,{code:D.Code.EnvironmentError})}},{substituteAsEmpty:$}))(U);let le=await r.toFernWorkspace({context:a},lZe(U),U.apiOverride?.specs);f&&await FK({workspace:le,context:a,logWarnings:!1,ossWorkspace:r instanceof _p?r:void 0});let ge=dVe({apiName:le.definition.rootApiFile.contents.name,organization:t.organization,generatorInvocation:U}),me=aKe(U);i=i??await mFt({packageName:me,generatorInvocation:U});let fe=iA({workspace:le,audiences:n.audiences,generationLanguage:U.language,keywords:U.keywords,smartCasing:U.smartCasing,exampleGeneration:{includeOptionalRequestPropertyExamples:!1,disabled:U.disableExamples},readme:U.readme,version:i??await mFt({packageName:me,generatorInvocation:U}),packageName:me,context:a,sourceResolver:new Yh(a,le),dynamicGeneratorConfig:ge,generationMetadata:{cliVersion:r.cliVersion,generatorName:U.name,generatorVersion:U.version,generatorConfig:U.config,originGitCommit:OY(),originGitCommitIsDirty:PY(),invokedBy:TY(),requestedVersion:O,ciProvider:BY()}}),Le=Hf({token:e?.value});if(U.absolutePathToLocalOutput==null&&(e??=await BV(),e==null)){X.failWithoutThrowing("Please provide a FERN_TOKEN in your environment.",void 0,{code:D.Code.AuthError});return}let Ne=await Le.organization.get(t.organization);if(U.absolutePathToLocalOutput==null&&!Ne.ok){X.failWithoutThrowing(`Failed to load details for organization ${t.organization}.`,void 0,{code:D.Code.NetworkError});return}Ne.ok&&(Ne.body.isWhitelabled&&(fe.readmeConfig==null&&(fe.readmeConfig=$ag),fe.readmeConfig.whiteLabel=!0),fe.selfHosted=Ne.body.selfHostedSdKs);let oe=Xag({generatorInvocation:U,org:Ne.ok?Ne.body:void 0,version:i,userProvidedVersion:O,packageName:me,context:X});oe!=null&&(fe.publishConfig=oe);let ae=Yag(c,U),Be=ae??U.absolutePathToLocalOutput??Ht.of(await s0s.default.dir().then(je=>je.path)),ve=ecg(U,ae!=null);if(i!=null&&(0,HYt.isAutoVersion)(i)&&ve==null&&a.failAndThrow(`Automatic versioning (--version AUTO) requires a self-hosted GitHub repository configuration. Regular GitHub repositories are not supported because auto versioning needs to push changes back to the repository. Please configure your generator with self-hosted GitHub output in generators.yml. Example:
|
|
4764
4764
|
generators:
|
|
4765
4765
|
- name: fernapi/fern-typescript-sdk
|
|
4766
4766
|
version: latest
|
|
@@ -5026,7 +5026,7 @@ ${r}`}function ryi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
|
|
|
5026
5026
|
`),h="";return c&&(h=l.style.error(c)),[`${p} ${f} ${s}`,[m,h].filter(Boolean).join(`
|
|
5027
5027
|
`)]});var Yfg=$w((e,t)=>{let{validate:r=()=>!0}=e,n=kv(e.theme),[i,o]=Iu("idle"),[s,a]=Iu(),[c,u]=Iu(""),l=Xw({status:i,theme:n});Zw(async(h,A)=>{if(i==="idle")if(Yw(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]")}${v1t}`),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 f7e=Ce(pS(),1);var Xfg={icon:{cursor:VC.pointer},style:{disabled:e=>f7e.default.dim(`- ${e}`),searchTerm:e=>f7e.default.cyan(e),description:e=>f7e.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${f7e.default.bold(t)} ${f7e.default.dim(r)}`).join(f7e.default.dim(" \u2022 "))},helpMode:"always"};function Evs(e){return!Pd.isSeparator(e)&&!e.disabled}function Zfg(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 $fg=$w((e,t)=>{let{pageSize:r=7,validate:n=()=>!0}=e,i=kv(Xfg,e.theme),[o,s]=Iu("loading"),[a,c]=Iu(""),[u,l]=Iu([]),[p,d]=Iu(),f=Xw({status:o,theme:i}),m=OL(()=>{let U=u.findIndex(Evs),X=u.findLastIndex(Evs);return{first:U,last:X}},[u]),[h=m.first,A]=Iu();x4(()=>{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(Zfg($)),s("idle"))}catch($){!U.signal.aborted&&$ instanceof Error&&d($.message)}})(),()=>{U.abort()}},[a]);let y=u[h];Zw(async(U,X)=>{if(Yw(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(Zhe(U)&&y)X.clearLine(0),X.write(y.name),c(y.name);else if(o!=="loading"&&(OP(U)||BL(U))){if(X.clearLine(0),OP(U)&&h!==m.first||BL(U)&&h!==m.last){let $=OP(U)?-1:1,ne=h;do ne=(ne+$+u.length)%u.length;while(!Evs(u[ne]));A(ne)}}else c(X.line)});let I=i.style.message(e.message,o),C;if(i.helpMode!=="never")if(e.instructions){let{pager:U,navigation:X}=e.instructions;C=i.style.help(u.length>r?U:X)}else C=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let w=c7e({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 T;if(o==="done"&&y)return[f,I,i.style.answer(y.short)].filter(Boolean).join(" ").trimEnd();T=i.style.searchTerm(a);let O=y?.description,R=[f,I,T].filter(Boolean).join(" ").trimEnd(),P=[x??w," ",O?i.style.description(O):"",C].filter(Boolean).join(`
|
|
5028
5028
|
`).trimEnd();return[R,P]});var w1t=Ce(pS(),1);var edg={icon:{cursor:VC.pointer},style:{disabled:e=>w1t.default.dim(`- ${e}`),description:e=>w1t.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${w1t.default.bold(t)} ${w1t.default.dim(r)}`).join(w1t.default.dim(" \u2022 "))},helpMode:"always",indexMode:"hidden",keybindings:[]};function I1t(e){return!Pd.isSeparator(e)&&!e.disabled}function tdg(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 vvs=$w((e,t)=>{let{loop:r=!0,pageSize:n=7}=e,i=kv(edg,e.theme),{keybindings:o}=i,[s,a]=Iu("idle"),c=Xw({status:s,theme:i}),u=a7e(),l=!o.includes("vim"),p=OL(()=>tdg(e.choices),[e.choices]),d=OL(()=>{let O=p.findIndex(I1t),R=p.findLastIndex(I1t);if(O===-1)throw new Iae("[select prompt] No selectable choices. All choices are disabled.");return{first:O,last:R}},[p]),f=OL(()=>"default"in e?p.findIndex(O=>I1t(O)&&O.value===e.default):-1,[e.default,p]),[m,h]=Iu(f===-1?d.first:f),A=p[m];Zw((O,R)=>{if(clearTimeout(u.current),Yw(O))a("done"),t(A.value);else if(OP(O,o)||BL(O,o)){if(R.clearLine(0),r||OP(O,o)&&m!==d.first||BL(O,o)&&m!==d.last){let P=OP(O,o)?-1:1,U=m;do U=(U+P+p.length)%p.length;while(!I1t(p[U]));h(U)}}else if(xXt(O)&&!Number.isNaN(Number(R.line))){let P=Number(R.line)-1,U=-1,X=p.findIndex(ne=>Pd.isSeparator(ne)?!1:(U++,U===P)),$=p[X];$!=null&&I1t($)&&h(X),u.current=setTimeout(()=>{R.clearLine(0)},700)}else if(i7e(O))R.clearLine(0);else if(l){let P=R.line.toLowerCase(),U=p.findIndex(X=>Pd.isSeparator(X)||!I1t(X)?!1:X.name.toLowerCase().startsWith(P));U!==-1&&h(U),u.current=setTimeout(()=>{R.clearLine(0)},700)}}),x4(()=>()=>{clearTimeout(u.current)},[]);let y=i.style.message(e.message,s),I;if(i.helpMode!=="never")if(e.instructions){let{pager:O,navigation:R}=e.instructions;I=i.style.help(p.length>n?O:R)}else I=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let C=0,w=c7e({items:p,active:m,renderItem({item:O,isActive:R,index:P}){if(Pd.isSeparator(O))return C++,` ${O.separator}`;let U=i.indexMode==="number"?`${P+1-C}. `:"";if(O.disabled){let ne=typeof O.disabled=="string"?O.disabled:"(disabled)";return i.style.disabled(`${U}${O.name} ${ne}`)}let X=R?i.style.highlight:ne=>ne,$=R?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(" "),w," ",x?i.style.description(x):"",I].filter(Boolean).join(`
|
|
5029
|
-
`).trimEnd()}${v1t}`});co();var wae={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"},rdg={[wae.GENERATION_STARTED]:!1,[wae.GENERATION_COMPLETED]:!1,[wae.GENERATION_FAILED]:!0,[wae.VERIFICATION_FAILED]:!0,[wae.SDK_PR_CREATED]:!1,[wae.UPGRADE_APPLIED]:!1,[wae.MAJOR_VERSION_BUMP]:!1};function bsl(e){return rdg[e]}function Esl(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 vsl(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 Isl(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 wsl(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 Csl(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?wae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?wae.VERIFICATION_FAILED:wae.GENERATION_FAILED}var ndg="",idg="FERN_AUTOMATION_EVENTS_ORIGIN",odg=3e3,Myi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[idg]??ndg)),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(),odg);try{let s={"content-type":"application/json"},a=await BV();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(wsl(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function xsl(){let{fern_run_id:e,github_run_id:t}=tce();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.45.
|
|
5029
|
+
`).trimEnd()}${v1t}`});co();var wae={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"},rdg={[wae.GENERATION_STARTED]:!1,[wae.GENERATION_COMPLETED]:!1,[wae.GENERATION_FAILED]:!0,[wae.VERIFICATION_FAILED]:!0,[wae.SDK_PR_CREATED]:!1,[wae.UPGRADE_APPLIED]:!1,[wae.MAJOR_VERSION_BUMP]:!1};function bsl(e){return rdg[e]}function Esl(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 vsl(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 Isl(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 wsl(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 Csl(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?wae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?wae.VERIFICATION_FAILED:wae.GENERATION_FAILED}var ndg="",idg="FERN_AUTOMATION_EVENTS_ORIGIN",odg=3e3,Myi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[idg]??ndg)),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(),odg);try{let s={"content-type":"application/json"},a=await BV();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(wsl(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function xsl(){let{fern_run_id:e,github_run_id:t}=tce();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.45.2"}}function Ssl(){return process.env.FERN_AUTOMATION==="true"}var Lyi=class{constructor(t,r=Myi.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=xsl()}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:Esl(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!bsl(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:vsl(t,r),context:{automation:Isl(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};_t();function zyi(e,t,r){if(t instanceof fu)return;let n=OAe(t,r?.code),i=r?.argv??process.argv,o=i.join(" "),s=r?.message??(t instanceof Error?t.message:void 0)??"",a=t??new D({message:s,code:n});Ssl()?adg(i,e,n,s,a):sdg(e,o,n,a)}function sdg(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),b9e(r)&&e.captureException(n,{tags:{"error.code":r}})}function adg(e,t,r,n,i){let o=Csl(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}_t();function d7e(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function Uyi({cliName:e,packageVersion:t,isLocal:r}){return d7e()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var _yi=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(Uyi(r)&&n!=null&&n.length>0){let i="production";if(i==null||i.length===0)throw new D({message:"SENTRY_ENVIRONMENT must be set when SENTRY_DSN is configured",code:D.Code.ConfigError});this.sentry=NPt({dsn:n,release:t,environment:i,defaultIntegrations:!1,integrations:[rGe(),tAe(),rAe(),Lge(),eAe()],tracesSampleRate:0,attachStacktrace:!0,sendClientReports:!1}),jPt()}}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):NB(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(()=>{})}};_t();var Vyi=class{originalWrite;redirected=!1;redirect(){if(this.redirected)throw new D({message:"StdoutRedirector: already redirected \u2014 did you forget to restore()?",code:D.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();Hb();_t();var OXt=class{result=Uf.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 fu}failWithoutThrowing(t,r,n){this.result=Uf.Failure,!(r instanceof fu)&&(t!=null&&(this.lastFailureMessage=t),T3t({message:t,error:r,logger:this.logger}),zyi(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=VI(this.logAtLevel.bind(this));addInteractiveTask({name:t,subtitle:r}){let n=new Ivs({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()===Uf.Success}printInteractiveTasks({spinner:t}){return this.subtasks.map(r=>r.print({spinner:t})).join(`
|
|
5030
5030
|
`)}},Ivs=class extends OXt{name;subtitle;constructor({name:t,subtitle:r,...n}){super(n),this.name=t,this.subtitle=r}start(){return super.start(),this.logAtLevelWithOverrides(Gn.Info,["Started."],{omitOnTTY:!0}),this.flushLogs(),this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.result===Uf.Success?this.logAtLevelWithOverrides(Gn.Info,["Finished."],{omitOnTTY:!0}):this.logAtLevelWithOverrides(Gn.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}))),Fj({prefix:this.getIcon({spinner:t}),content:r.join(`
|
|
5031
5031
|
`)})}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 Uf.Success:return r?Ae.green("\u25BE "):Ae.green("\u2713 ");case Uf.Failure:return r?Ae.red("\u25BE "):Ae.red("x ")}}}getResult(){if(this.result===Uf.Failure)return Uf.Failure;for(let t of this.subtasks)if(t.getResult()===Uf.Failure)return Uf.Failure;return Uf.Success}};_t();var Tsl=Ce(Y6e(),1);function Bsl(e){return e.filter(t=>t.isUpgradeAvailable).length>0}function cdg(e){return(e.cliUpgradeInfo?.isUpgradeAvailable??!1)||Bsl(e.generatorUpgradeInfo)}async function Osl({cliEnvironment:e,upgradeInfo:t}){if(!cdg(t)||e.packageVersion==t.cliUpgradeInfo?.latestVersion)return;let r=`${Ae.underline("Upgrades available")}
|
|
5032
5032
|
|
|
@@ -5035,7 +5035,7 @@ ${r}`}function ryi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
|
|
|
5035
5035
|
Run ${Ae.cyan("fern generator upgrade")} to upgrade your generators.`),i.length>2&&(r+=`
|
|
5036
5036
|
Run ${Ae.cyan("fern generator upgrade --list")} to see the full list of generator upgrades available.`),tst(r,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"})}async function wvs({generatorUpgradeInfo:e,header:t,limit:r,includeBoxen:n=!0}){if(!Bsl(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+=`
|
|
5037
5037
|
${await udg(a.generatorName)} (${a.apiName!=null?"API: "+a.apiName+", ":""}Group: ${a.generatorGroup}) `+Ae.dim(a.currentVersion)+Ae.reset(" \u2192 ")+Ae.green(a.latestVersion);return i+=`
|
|
5038
|
-
`,n?tst(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function udg(e){let r=await new Tsl.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new D({message:`Generator ${e} not found`,code:D.Code.ConfigError});return r.body.displayName}_t();async function ldg({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await Psl({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=z6e(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await M1({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 Psl({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=z6e(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await M1({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 Psl({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 W3({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?py(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 Dsl(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=qQ(a.latestVersion,a.previousVersion)}catch{throw new D({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:D.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 qyi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await ldg({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(...Dsl(u,c,t.logger));else s.push(...Dsl(a.versions,void 0,t.logger))}return s}_t();async function $he({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await dFt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new D({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:D.Code.NetworkError})}}var Rsl=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Gyi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Gn.Info;isLocal;stdoutRedirector=new Vyi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await hVt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new q3t(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 _yi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new Lyi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.45.
|
|
5038
|
+
`,n?tst(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function udg(e){let r=await new Tsl.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new D({message:`Generator ${e} not found`,code:D.Code.ConfigError});return r.body.displayName}_t();async function ldg({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await Psl({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=z6e(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await M1({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 Psl({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=z6e(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await M1({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 Psl({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 W3({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?py(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 Dsl(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=qQ(a.latestVersion,a.previousVersion)}catch{throw new D({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:D.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 qyi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await ldg({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(...Dsl(u,c,t.logger));else s.push(...Dsl(a.versions,void 0,t.logger))}return s}_t();async function $he({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await dFt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new D({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:D.Code.NetworkError})}}var Rsl=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Gyi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Gn.Info;isLocal;stdoutRedirector=new Vyi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await hVt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new q3t(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 _yi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new Lyi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.45.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 fu}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof fu)&&(T3t({message:t,error:r,logger:this.logger}),zyi(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)+`
|
|
5039
5039
|
`),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 Osl({cliEnvironment:this.environment,upgradeInfo:t});r!=null&&(r.endsWith(`
|
|
5040
5040
|
`)||(r+=`
|
|
5041
5041
|
`),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=uPi(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 OXt(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 fu}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=VI((t,...r)=>this.log(t,...r));stderr=VI((t,...r)=>this.logStderr(t,...r));constructTaskInitForWorkspace(t){let r=t.type==="docs"?"docs":t.workspaceName??"api",n=Fsl(r),i=1+(this.longestWorkspaceName!=null?Fsl(this.longestWorkspaceName):n).length,o=n.padEnd(i),s=Rsl[this.numTasks++%Rsl.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===Uf.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=>Nx.indexOf(i.level)>=Nx.indexOf(this.logLevel));this.ttyAwareLogger.log(n,{includeDebugInfo:this.logLevel===Gn.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 $he({cliEnvironment:this.environment,includePreReleases:t}),n=qQ(r,this.environment.packageVersion);this.logger.debug(`Latest version: ${r}. `+(n?"Upgrade available.":"No upgrade available."));let i={isUpgradeAvailable:n,latestVersion:r},o=await qyi({project:this.project,cliContext:this});this._isUpgradeAvailable={cliUpgradeInfo:i,generatorUpgradeInfo:o}}return this._isUpgradeAvailable}async confirmPrompt(t,r=!1){try{return await vvs({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(`
|
package/package.json
CHANGED