fern-api 5.74.2 → 5.74.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/cli.cjs +9 -9
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -3081,7 +3081,7 @@ ${rPu.default.cursorShow}`)}releaseCursor(){this.extraLinesUnderPrompt>0&&d2o(th
3081
3081
  `+sLe.default.red(">> ")+t),this.screen.render(r,n)}getMaskedValue(t){return this.status==="answered"?this.opt.mask?sLe.default.cyan(pPu(t,this.opt.mask)):sLe.default.italic(sLe.default.dim("[hidden]")):this.opt.mask?pPu(t,this.opt.mask):sLe.default.italic(sLe.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 Z9r=ye(Fw(),1);var lDu=ye(K2o(),1),Y9r=require("child_process"),Ynt=require("fs"),J9r=ye(require("path"),1),pDu=ye(require("os"),1),fDu=require("crypto"),RNo=ye(cDu(),1);var W9r=class extends Error{originalError;constructor(t){super(`Failed to create temporary file. ${t.message}`),this.originalError=t}};var yUt=class extends Error{originalError;constructor(t){super(`Failed to launch editor. ${t.message}`),this.originalError=t}};var H9r=class extends Error{originalError;constructor(t){super(`Failed to read temporary file. ${t.message}`),this.originalError=t}};var K9r=class extends Error{originalError;constructor(t){super(`Failed to remove temporary file. ${t.message}`),this.originalError=t}};function X9r(e="",t,r){let n=new FNo(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 uDu(e){return e?e.replace(/[^a-zA-Z0-9_.-]/g,"_"):""}function sdm(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 FNo=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=sdm(t).map(i=>i.replace("\\ "," ")),n=r.shift();this.editor={args:r,bin:n}}createTemporaryFile(){try{let t=this.fileOptions.dir??pDu.default.tmpdir(),r=(0,fDu.randomUUID)(),n=uDu(this.fileOptions.prefix),i=uDu(this.fileOptions.postfix),o=`${n}${r}${i}`,s=J9r.default.resolve(t,o),a=J9r.default.resolve(t)+J9r.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,Ynt.writeFileSync)(this.tempFile,this.text,c)}catch(t){throw new W9r(t)}}readTemporaryFile(){try{let t=(0,Ynt.readFileSync)(this.tempFile);if(t.length===0)this.text="";else{let r=(0,lDu.detect)(t)??"utf8";RNo.default.encodingExists(r)||(r="utf8"),this.text=RNo.default.decode(t,r)}}catch(t){throw new H9r(t)}}removeTemporaryFile(){try{(0,Ynt.unlinkSync)(this.tempFile)}catch(t){throw new K9r(t)}}launchEditor(){try{let t=(0,Y9r.spawnSync)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"});this.lastExitStatus=t.status??0}catch(t){throw new yUt(t)}}launchEditorAsync(t){try{(0,Y9r.spawn)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"}).on("exit",n=>{this.lastExitStatus=n,setImmediate(t)})}catch(r){throw new yUt(r)}}};var dDu=ye(JL(),1);var bUt=class extends kw{_run(t){this.done=t,this.editorResult=new dDu.Subject;let r=IB(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"?Z9r.default.dim("Received"):Z9r.default.dim("Press <enter> to launch your preferred editor."),t&&(r=Z9r.default.red(">> ")+t),this.screen.render(n,r)}startExternalEditor(){this.rl.pause(),X9r(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 yDu=require("stream");var gDu=ye(require("readline"),1),ADu=ye(hDu(),1),lLe=class{constructor(t){this.rl||=gDu.default.createInterface(cdm(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 cdm(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 ADu.default;return r.pipe(e.output||process.stdout),{terminal:!0,...e,input:t,output:r}}var EUt=class extends lLe{constructor(t={}){super(t),this.log=new yDu.Writable({write:(r,n,i)=>{this.writeLog(r),i()}}),this.bottomBar=t.bottomBar||"",this.render()}render(){return this.write(this.bottomBar),this}clean(){return nUt(this.rl,this.bottomBar.split(`
3082
3082
  `).length),this}updateBottomBar(t){return nUt(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+`
3083
3083
  `}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&&E9r(this.rl,t.length+this.rl.line.length),this.rl.output.write(t)}};var Td=ye(JL(),1),IDu=ye(k4t(),1);var $9r=ye(JL(),1),bDu=ye(k4t(),1),eqr=function(e,t,r){return typeof e[t]!="function"?(0,$9r.of)(e):(0,$9r.from)((0,bDu.default)(e[t])(r).then(n=>(e[t]=n,e)))};var EDu={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}},Xnt=class extends lLe{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,Td.from)(t):(0,Td.isObservable)(t)?n=t:Object.values(t).every(i=>typeof i=="object"&&!Array.isArray(i)&&i!=null)?n=(0,Td.from)(Object.entries(t).map(([i,o])=>({name:i,...o}))):n=(0,Td.from)([t]),this.process=n.pipe((0,Td.concatMap)(this.processQuestion.bind(this)),(0,Td.publish)()),this.process.connect(),this.process.pipe((0,Td.reduce)((i,o)=>(EDu.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,Td.defer)(()=>(0,Td.of)(t).pipe((0,Td.concatMap)(this.setDefaultType.bind(this)),(0,Td.concatMap)(this.filterIfRunnable.bind(this)),(0,Td.concatMap)(()=>eqr(t,"message",this.answers)),(0,Td.concatMap)(()=>eqr(t,"default",this.answers)),(0,Td.concatMap)(()=>eqr(t,"choices",this.answers)),(0,Td.concatMap)(this.fetchAnswer.bind(this))))}fetchAnswer(t){let r=this.prompts[t.type];return this.activePrompt=new r(t,this.rl,this.answers),(0,Td.defer)(()=>(0,Td.from)(this.activePrompt.run().then(n=>({name:t.name,answer:n}))))}setDefaultType(t){return this.prompts[t.type]||(t.type="input"),(0,Td.defer)(()=>(0,Td.of)(t))}filterIfRunnable(t){if(t.askAnswered!==!0&&EDu.get(this.answers,t.name)!==void 0)return Td.EMPTY;if(t.when===!1)return Td.EMPTY;if(typeof t.when!="function")return(0,Td.of)(t);let{answers:r}=this;return(0,Td.defer)(()=>(0,Td.from)((0,IDu.default)(t.when)(r).then(n=>{if(n)return t})).pipe((0,Td.filter)(n=>n!=null)))}};function vDu(e){let t=function(r,n){let i;try{i=new Xnt(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",oUt),this.registerPrompt("input",oLe),this.registerPrompt("number",sUt),this.registerPrompt("confirm",aUt),this.registerPrompt("rawlist",cUt),this.registerPrompt("expand",uUt),this.registerPrompt("checkbox",lUt),this.registerPrompt("password",pUt),this.registerPrompt("editor",bUt)},t.restoreDefaultPrompts(),t}var NNo=vDu();function ldm(e,t){NNo.registerPrompt(e,t)}function pdm(){NNo.restoreDefaultPrompts()}var fdm={prompt:NNo,ui:{BottomBar:EUt,Prompt:Xnt},createPromptModule:vDu,registerPrompt:ldm,restoreDefaultPrompts:pdm,Separator:QQ},cu=fdm;var Znt=require("path");function CDu(){let e=ddm();return async t=>{for(let r of t)r.module=e(r.filename);return t}}function ddm(e=process.argv[1]?(0,Znt.dirname)(process.argv[1]):process.cwd(),t=Znt.sep==="\\"){let r=t?xDu(e):e;return n=>{if(!n)return;let i=t?xDu(n):n,{dir:o,base:s,ext:a}=Znt.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 xDu(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var jNo=e=>{if("flags"in e){let t=wDu(e.flags),r=SDu(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([i,o])=>[i,QNo(o)])),n=Object.fromEntries(Object.entries(t).map(([i,o])=>[i,mdm(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function mdm(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 wDu=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,IUt(r)]).filter(([,t])=>t!==void 0)),SDu=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?QNo(n):void 0]}))};var IUt=e=>e===void 0?void 0:e.variant??e.enabled,QNo=e=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};var Kk=(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.LogsQueue="logs_queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionStartTimestamp="session_start_timestamp",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version",e.SessionReplay="session_replay",e.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})({});function zNo(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}var gdm="NativeGzipValidationError",Adm=31,ydm=139,bdm=8,Edm=e=>e.length>=2&&e[0]===Adm&&e[1]===ydm;var vUt,Idm=()=>{if(vUt)return vUt;vUt=[];for(let e=0;e<256;e++){let t=e;for(let r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;vUt[e]=t>>>0}return vUt},vdm=e=>{let t=Idm(),r=4294967295;for(let n=0;n<e.length;n++)r=t[(r^e[n])&255]^r>>>8;return(4294967295^r)>>>0},tqr=e=>{let t=new Error(`Native gzip produced invalid output: ${e}`);throw t.name=gdm,t},xdm=async(e,t)=>{e.size<18&&tqr("too-short");let r=new Uint8Array(await e.slice(0,10).arrayBuffer());(!Edm(r)||r[2]!==bdm)&&tqr("invalid-header");let n=new DataView(await e.slice(e.size-8).arrayBuffer());n.getUint32(0,!0)!==vdm(t)&&tqr("invalid-crc");let i=t.length>>>0;n.getUint32(4,!0)!==i&&tqr("invalid-size")};async function xUt(e,t=!0,r){try{let n=new TextEncoder().encode(e),i=new CompressionStream("gzip"),o=i.writable.getWriter(),s=o.write(n).then(()=>o.close()).catch(async u=>{try{await o.abort(u)}catch{}throw u}),a=new Response(i.readable).blob(),[c]=await Promise.all([a,s]);return await xdm(c,n),c}catch(n){if(r?.rethrow)throw n;return t&&console.error("Failed to gzip compress data",n),null}}var Cdm=["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"],TDu=function(e,t=[]){if(!e)return!1;let r=e.toLowerCase();return Cdm.concat(t).some(n=>{let i=n.toLowerCase();return r.indexOf(i)!==-1})};var Sdm=Array.isArray,ODu=Object.prototype,ybI=ODu.hasOwnProperty,MNo=ODu.toString,$nt=Sdm||function(e){return MNo.call(e)==="[object Array]"};var CUt=e=>e===Object(e)&&!$nt(e);var eit=e=>e===void 0,Rve=e=>MNo.call(e)=="[object String]",BDu=e=>Rve(e)&&e.trim().length===0;var wUt=e=>MNo.call(e)=="[object Number]"&&e===e;var LNo=e=>e instanceof Error;function rqr(e){return e===null||typeof e!="object"}function pLe(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function PDu(e){return pLe(e,"ErrorEvent")}function tit(e){return typeof Event<"u"&&Tdm(e,Event)}function DDu(e){return pLe(e,"Object")}function Tdm(e,t){try{return e instanceof t}catch{return!1}}function SUt(e,t,r,n,i){return t>r&&(n.warn("min cannot be greater than max."),t=r),wUt(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),SUt(i||r,t,r,n))}var Odm=864e5,nqr=class{constructor(t){this._buckets={},this._onBucketRateLimited=t._onBucketRateLimited,this._bucketSize=SUt(t.bucketSize,0,100,t._logger),this._refillRate=SUt(t.refillRate,0,this._bucketSize,t._logger),this._refillInterval=SUt(t.refillInterval,0,Odm,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 iqr="0123456789abcdef",oqr=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+=iqr.charAt(this.bytes[r]>>>4),t+=iqr.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+=iqr.charAt(this.bytes[r]>>>4),t+=iqr.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}},UNo=class{constructor(t){this.timestamp=0,this.counter=0,this.random=t??Bdm()}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 oqr.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,oqr.ofInner(t)}},Bdm=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),RDu,fee=()=>Pdm().toString(),Pdm=()=>(RDu||(RDu=new UNo)).generate();var sqr=class{add(t){let r=fee();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 Ddm(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var FDu=(e,t,r)=>{function n(o,...s){t(()=>{let a=r[o];a(e,...s)})}return{debug:(...o)=>{n("debug",...o)},info:(...o)=>{n("log",...o)},warn:(...o)=>{n("warn",...o)},error:(...o)=>{n("error",...o)},critical:(...o)=>{r.error(e,...o)},createLogger:o=>FDu(`${e} ${o}`,t,r)}},Rdm=e=>e();function kDu(e,t=Rdm){return FDu(e,t,Ddm())}var nit="Mobile",cqr="iOS",rit="Android",NDu="Tablet",PbI=rit+" "+NDu;var kdm="Apple",DbI=kdm+" Watch",jDu="Safari",uqr="BlackBerry",QDu="Samsung",Ndm=QDu+"Browser",jdm=QDu+" Internet",lqr="Chrome",Qdm=lqr+" OS",zdm=lqr+" "+cqr,zDu="Internet Explorer",Mdm=zDu+" "+nit,_No="Opera",RbI=_No+" Mini",MDu="Edge",Ldm="Microsoft "+MDu,qNo="Firefox",Udm=qNo+" "+cqr,GNo="Nintendo",WNo="PlayStation",aqr="Xbox",Vdm=rit+" "+nit,_dm=nit+" "+jDu,TUt="Windows",qdm=TUt+" Phone";var LDu="Generic",FbI=LDu+" "+nit.toLowerCase(),kbI=LDu+" "+NDu.toLowerCase(),Gdm="Konqueror",Wdm="Oculus Browser",TD="(\\d+(\\.\\d+)?)",VNo=new RegExp("Version/"+TD),NbI=new RegExp(aqr,"i"),jbI=new RegExp(WNo+" \\w+","i"),QbI=new RegExp(GNo+" \\w+","i"),Hdm=new RegExp(uqr+"|PlayBook|BB10","i"),Kdm={"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 zbI={[Mdm]:[new RegExp("rv:"+TD)],[Ldm]:[new RegExp(MDu+"?\\/"+TD)],[lqr]:[new RegExp("("+lqr+"|CrMo)\\/"+TD)],[zdm]:[new RegExp("CriOS\\/"+TD)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+TD)],[jDu]:[VNo],[_dm]:[VNo],[_No]:[new RegExp("("+_No+"|OPR)\\/"+TD)],[qNo]:[new RegExp(qNo+"\\/"+TD)],[Udm]:[new RegExp("FxiOS\\/"+TD)],[Gdm]:[new RegExp("Konqueror[:/]?"+TD,"i")],[uqr]:[new RegExp(uqr+" "+TD),VNo],[Vdm]:[new RegExp("android\\s"+TD,"i")],[jdm]:[new RegExp(Ndm+"\\/"+TD)],[Wdm]:[new RegExp("OculusBrowser\\/"+TD)],[zDu]:[new RegExp("(rv:|MSIE )"+TD)],Mozilla:[new RegExp("rv:"+TD)]};var MbI=[[new RegExp(aqr+"; "+aqr+" (.*?)[);]","i"),e=>[aqr,e&&e[1]||""]],[new RegExp(GNo,"i"),[GNo,""]],[new RegExp(WNo,"i"),[WNo,""]],[Hdm,[uqr,""]],[new RegExp(TUt,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[qdm,""];if(new RegExp(nit).test(t)&&!/IEMobile\b/.test(t))return[TUt+" "+nit,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let n=r[1],i=Kdm[n]||"";return/arm/i.test(t)&&(i="RT"),[TUt,i]}return[TUt,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,e=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[cqr,t.join(".")]}return[cqr,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,e=>{let t="";return e&&e.length>=3&&(t=eit(e[2])?e[3]:e[2]),["watchOS",t]}],[new RegExp("("+rit+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+rit+")","i"),e=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[rit,t.join(".")]}return[rit,""]}],[/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/,[Qdm,""]],[/Linux|debian/i,["Linux",""]]];var UDu="utf8";function VDu(e){return e?.replace(/\/+$/,"")}async function _Du(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 pqr(){return new Date().toISOString()}function dee(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}var qDu=e=>e instanceof Error;function HNo(e){return Promise.all(e.map(t=>(t??Promise.resolve()).then(r=>({status:"fulfilled",value:r}),r=>({status:"rejected",reason:r}))))}var Jdm={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},$bI=Jdm.info;var fqr=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 dLe=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()}},fLe=class extends Error{constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};async function GDu(e){if(e instanceof dLe){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 dqr(e){return typeof e=="object"&&(e instanceof dLe||e instanceof fLe)}function mqr(e){return typeof e=="object"&&e instanceof dLe&&e.status===413}var OUt=class{constructor(t,r={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new sqr,this._events=new fqr,this._isInitialized=!1;let n=typeof t=="string"?t.trim():"",i=typeof r.host=="string"?r.host.trim():"",o=!n;this._logger=kDu("[PostHog]",this.logMsgIfDebug.bind(this)),o&&this._logger.error("You must pass your PostHog project's api key. The client will be disabled."),this.apiKey=n,this.host=VDu(i||"https://us.i.posthog.com"),this.flushAt=r.flushAt?Math.max(r.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,r.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,r.maxQueueSize??1e3),this.flushInterval=r.flushInterval??1e4,this.preloadFeatureFlags=r.preloadFeatureFlags??!0,this.defaultOptIn=r.defaultOptIn??!0,this.disableSurveys=r.disableSurveys??!1,this._retryOptions={retryCount:r.fetchRetryCount??3,retryDelay:r.fetchRetryDelay??3e3,retryCheck:dqr},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)||o,this.historicalMigration=r?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=r?.evaluationContexts??r?.evaluationEnvironments,r?.evaluationEnvironments&&!r?.evaluationContexts&&this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version."),this.disableCompression=!zNo()||(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(Kk.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Kk.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Kk.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};n.$device_id&&(u.$device_id=n.$device_id),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:jNo(p)})).catch(p=>(this._events.emit("error",p),{success:!1,error:this.categorizeRequestError(p)}))}categorizeRequestError(t){if(t instanceof dLe)return{type:"api_error",statusCode:t.status};if(t instanceof fLe){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=IUt(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.disabled)return[];if(this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let t=`${this.host}/api/surveys/?token=${this.apiKey}`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},i=(await this.fetchWithRetry(t,r).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(Kk.Props)),this._props||{}}set props(t){this._props=t}async register(t){this.wrap(()=>{this.props={...this.props,...t},this.setPersistedProperty(Kk.Props,this.props)})}async unregister(t){this.wrap(()=>{delete this.props[t],this.setPersistedProperty(Kk.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(Kk.Queue)||[];o.length>=this.maxQueueSize&&(o.shift(),this._logger.info("Queue is full, the oldest event is dropped.")),o.push({message:i}),this.setPersistedProperty(Kk.Queue,o),this._events.emit(t,i),o.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=dee(()=>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:pqr()};this.historicalMigration&&(o.historical_migration=!0);let s=JSON.stringify(o),a=`${this.host}/batch/`,c=this.disableCompression?null:await xUt(s,this.isDebug),u={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...c!==null&&{"Content-Encoding":"gzip"}},body:c||s};try{await(await this.fetchWithRetry(a,u)).body?.cancel()?.catch(()=>{})}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:pqr(),uuid:n?.uuid?n.uuid:fee()};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 GDu(t)})}async flush(){if(this.disabled)return;let t=HNo([this.flushPromise]).then(()=>this._flush());return this.flushPromise=t,this.addPendingPromise(t),HNo([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(Kk.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(Kk.Queue)||[]).slice(i.length);this.setPersistedProperty(Kk.Queue,m),t=m,await this.flushStorage()},a={api_key:this.apiKey,batch:o,sent_at:pqr()};this.historicalMigration&&(a.historical_migration=!0);let c=JSON.stringify(a),u=`${this.host}/batch/`,l=this.disableCompression?null:await xUt(c,this.isDebug),p={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...l!==null&&{"Content-Encoding":"gzip"}},body:l||c},d={retryCheck:f=>mqr(f)?!1:dqr(f)};try{await(await this.fetchWithRetry(u,p,d)).body?.cancel()?.catch(()=>{})}catch(f){if(mqr(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 fLe||await s(),this._events.emit("error",f),f}await s(),r.push(...o)}this._events.emit("flush",r)}async _sendLogsBatch(t){if(this.disabled)return{kind:"fatal",error:new Error("The client is disabled")};let r=JSON.stringify(t),n=`${this.host}/i/v1/logs?token=${encodeURIComponent(this.apiKey)}`,i=this.disableCompression?null:await xUt(r,this.isDebug),o={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...i!==null&&{"Content-Encoding":"gzip"}},body:i||r};try{return await this.fetchWithRetry(n,o,{retryCheck:s=>mqr(s)?!1:dqr(s)}),{kind:"ok"}}catch(s){return mqr(s)?{kind:"too-large"}:s instanceof fLe?{kind:"retry-later",error:s}:{kind:"fatal",error:s}}}async fetchWithRetry(t,r,n,i){let o=r.body?r.body:"",s=-1;try{s=o instanceof Blob?o.size:Buffer.byteLength(o,UDu)}catch{o instanceof Blob?s=o.size:s=new TextEncoder().encode(o).length}return await _Du(async()=>{let a=new AbortController,c=i??this.requestTimeout,u=dee(()=>a.abort(),c),l=null;try{l=await this.fetch(t,{signal:a.signal,...r})}catch(d){throw new fLe(d)}finally{clearTimeout(u)}if(!(r.mode==="no-cors")&&(l.status<200||l.status>=400))throw new dLe(l,s);return l},{...this._retryOptions,...n})}async _shutdown(t=3e4){await this._initPromise;let r=!1;if(this.clearFlushTimer(),this.disabled)return;let n=async()=>{try{for(await this.promiseQueue.join();!((this.getPersistedProperty(Kk.Queue)||[]).length===0||(await this.flush(),r)););}catch(o){if(!dqr(o))throw o;await GDu(o)}},i;try{return await Promise.race([new Promise((o,s)=>{i=dee(()=>{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 MQ={};X(MQ,{DEFAULT_EXCEPTION_STEPS_CONFIG:()=>bqr,DOMExceptionCoercer:()=>XNo,EXCEPTION_STEP_INTERNAL_FIELDS:()=>BUt,ErrorCoercer:()=>ZNo,ErrorEventCoercer:()=>$No,ErrorPropertiesBuilder:()=>KNo,EventCoercer:()=>rjo,ExceptionStepsBuffer:()=>ajo,ObjectCoercer:()=>tjo,PrimitiveCoercer:()=>njo,PromiseRejectionEventCoercer:()=>ijo,ReduceableCache:()=>ojo,StringCoercer:()=>ejo,chromeStackLineParser:()=>JNo,createDefaultStackParser:()=>fmm,createStackParser:()=>rRu,geckoStackLineParser:()=>YNo,getUtf8ByteLength:()=>iRu,nodeStackLineParser:()=>ZDu,opera10StackLineParser:()=>JDu,opera11StackLineParser:()=>YDu,resolveExceptionStepsConfig:()=>sjo,reverseAndStripFrames:()=>tRu,stripReservedExceptionStepFields:()=>hmm,winjsStackLineParser:()=>KDu});var hqr,WDu,gqr;function HDu(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);return gqr&&r.length===WDu||(WDu=r.length,gqr=r.reduce((n,i)=>{hqr||(hqr={});let o=hqr[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,hqr[i]=[u,l];break}}}return n},{})),gqr}var $dm=4,KNo=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&&$nt(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:HDu(this.stackParser),skipFirstLines:t.skipFirstLines??1}}buildCoercingContext(t,r,n=0){let i=(s,a)=>{if(a<=$dm){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 xB="?";function mee(e,t,r,n,i){let o={platform:e,filename:t,function:r==="<anonymous>"?xB:r,in_app:!0};return eit(n)||(o.lineno=n),eit(i)||(o.colno=i),o}var Aqr=(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]:xB,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var emm=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,tmm=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,rmm=/\((\S*)(?::(\d+))(?::(\d+))\)/,JNo=(e,t)=>{let r=emm.exec(e);if(r){let[,i,o,s]=r;return mee(t,i,xB,+o,+s)}let n=tmm.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let a=rmm.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}let[o,s]=Aqr(n[1]||xB,n[2]);return mee(t,s,o,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var nmm=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,imm=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,YNo=(e,t)=>{let r=nmm.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let s=imm.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]||xB;return[o,i]=Aqr(o,i),mee(t,i,o,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var omm=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,KDu=(e,t)=>{let r=omm.exec(e);return r?mee(t,r[2],r[1]||xB,+r[3],r[4]?+r[4]:void 0):void 0};var smm=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,JDu=(e,t)=>{let r=smm.exec(e);return r?mee(t,r[2],r[3]||xB,+r[1]):void 0},amm=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,YDu=(e,t)=>{let r=amm.exec(e);return r?mee(t,r[5],r[3]||r[4]||xB,+r[1],+r[2]):void 0};var cmm=/^\s*[-]{4,}$/,umm=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,ZDu=(e,t)=>{let r=e.match(umm);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||xB,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:XDu(r[3]),colno:XDu(r[4]),in_app:lmm(c||"",u),platform:t}}if(e.match(cmm))return{filename:e,platform:t}};function lmm(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 XDu(e){return parseInt(e||"",10)||void 0}var $Du=/\(error: (.*)\)/,eRu=50;function tRu(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,eRu).map(r=>({...r,filename:r.filename||pmm(t).filename,function:r.function||xB}))}function pmm(e){return e[e.length-1]||{}}function fmm(){return rRu("web:javascript",JNo,YNo)}function rRu(e,...t){return(r,n=0)=>{let i=[],o=r.split(`
3084
- `);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=$Du.test(a)?a.replace($Du,"$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>=eRu)break}}return tRu(i)}}var XNo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=Rve(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 pLe(t,"DOMException")}isDOMError(t){return pLe(t,"DOMError")}};var ZNo=class{match(t){return LNo(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 $No=class{constructor(){}match(t){return PDu(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 dmm=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,ejo=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(dmm);return i&&(r=i[1],n=i[2]),[r,n]}};var nRu=["fatal","error","warning","log","info","debug"];function yqr(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 tjo=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 tit(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=yqr(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return Rve(t)&&!BDu(t)&&nRu.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(qDu(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var rjo=class{match(t){return tit(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${yqr(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var njo=class{match(t){return rqr(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var ijo=class{match(t){return pLe(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!tit(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 rqr(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 ojo=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 BUt={MESSAGE:"$message",TIMESTAMP:"$timestamp"},mmm=new Set([BUt.MESSAGE,BUt.TIMESTAMP]),bqr={enabled:!0,max_bytes:32768};function sjo(e){return e?{enabled:e.enabled??bqr.enabled,max_bytes:gmm(e.max_bytes,bqr.max_bytes)}:{...bqr}}function hmm(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,i)=>mmm.has(i)?(t.push(i),n):(n[i]=e[i],n),{}),droppedKeys:t}}var ajo=class{constructor(t){this._entries=[],this._totalBytes=0,this._config=sjo(t)}setConfig(t){this._config=sjo(t),this._trimToMaxBytes()}add(t){let r=Amm(t);if(!r)return;let n=iRu(r.json);n>this._config.max_bytes||(this._entries.push({step:r.step,bytes:n}),this._totalBytes+=n,this._trimToMaxBytes())}getAttachable(){return this._entries.map(t=>t.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){for(;this._totalBytes>this._config.max_bytes&&this._entries.length>0;){let t=this._entries.shift();t&&(this._totalBytes-=t.bytes)}}};function gmm(e,t){if(!wUt(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);return r<0?t:r}function Amm(e){let t=ymm(e);if(t)try{let r=JSON.parse(t);if(!CUt(r))return;let n=r,i=n[BUt.MESSAGE],o=n[BUt.TIMESTAMP];return!Rve(i)||i.trim().length===0||!Rve(o)&&!wUt(o)?void 0:{step:n,json:t}}catch{return}}function ymm(e){let t=new WeakSet;try{return JSON.stringify(e,(r,n)=>{if(typeof n=="bigint")return n.toString();if(!(typeof n=="function"||typeof n=="symbol")){if(n instanceof Date)return n.toISOString();if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(n&&typeof n=="object"){if(t.has(n))return"[Circular]";t.add(n)}return n}})}catch{return}}function iRu(e){if(typeof TextEncoder<"u")return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),r=0;for(let n=0;n<t.length;n++)t[n]==="%"?(r+=1,n+=2):r+=1;return r}var aRu=require("fs"),cRu=require("readline"),Eqr=new MQ.ReduceableCache(25),uRu=new MQ.ReduceableCache(20),cjo=7,bmm=1e3,Emm=1e4;async function lRu(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"||Cmm(s)||wmm(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(uRu.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=Tmm(o);if(s.every(c=>Smm(i,c)))continue;let a=Omm(Eqr,i,{});n.push(Imm(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&vmm(e,Eqr),Eqr.reduce(),e}function Imm(e,t,r){return new Promise(n=>{let i=(0,aRu.createReadStream)(e),o=(0,cRu.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(){uRu.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]=Bmm(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 vmm(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;xmm(r.lineno,r,n)}}function xmm(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=pRu(e);i<e;i++){let o=r[i];if(o===void 0)return void oRu(t);t.pre_context.push(o)}if(r[e]===void 0)return void oRu(t);t.context_line=r[e];let n=fRu(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 oRu(e){delete e.pre_context,delete e.context_line,delete e.post_context}function Cmm(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function wmm(e){return e.lineno!==void 0&&e.lineno>Emm||e.colno!==void 0&&e.colno>bmm}function Smm(e,t){let r=Eqr.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 Tmm(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=sRu(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+cjo:(i.push(n),n=sRu(o)),t++}return i}function sRu(e){return[pRu(e),fRu(e)]}function pRu(e){return Math.max(1,e-cjo)}function fRu(e){return e+cjo}function Omm(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function Bmm(e,t){let r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);let i=Math.max(t-60,0);i<5&&(i=0);let o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r=`...${r}`),o<n&&(r+="..."),r}var iit=require("path");function dRu(e=process.cwd()){let t=iit.sep==="\\",r=i=>t?i.replace(/\\/g,"/"):i,n=r(e);return async i=>{for(let o of i)!o.filename||o.filename.startsWith("node:")||o.filename.startsWith("data:")||(0,iit.isAbsolute)(o.filename)&&(o.filename=r((0,iit.relative)(n,r(o.filename))));return i}}function Pmm(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 mRu(e,t){globalThis.process?.on("uncaughtException",Pmm(e,t))}function hRu(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var Dmm=2e3,sH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new nqr({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return CUt(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()&&(mRu(this.onException.bind(this),this.onFatalError.bind(this)),hRu(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(Dmm),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var gRu="5.35.1";var dfe={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};var oit=class e{constructor(t){this._host=t.host,this._distinctId=t.distinctId,this._groups=t.groups,this._disableGeoip=t.disableGeoip,this._flags=t.flags,this._requestId=t.requestId,this._evaluatedAt=t.evaluatedAt,this._flagDefinitionsLoadedAt=t.flagDefinitionsLoadedAt,this._errorsWhileComputing=t.errorsWhileComputing??!1,this._quotaLimited=t.quotaLimited??!1,this._accessed=t.accessed??new Set,this._isSlice=t.isSlice??!1}isEnabled(t){let r=this._flags[t];return this._recordAccess(t),r?.enabled??!1}getFlag(t){let r=this._flags[t];if(this._recordAccess(t),!!r)return r.enabled?r.variant??!0:!1}getFlagPayload(t){return this._flags[t]?.payload}onlyAccessed(){let t={};for(let r of this._accessed){let n=this._flags[r];n&&(t[r]=n)}return this._cloneWith(t)}only(t){let r={},n=[];for(let i of t){let o=this._flags[i];o?r[i]=o:n.push(i)}return n.length>0&&this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${n.join(", ")}`),this._cloneWith(r)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let t={},r=[];for(let[n,i]of Object.entries(this._flags)){let o=i.enabled===!1?!1:i.variant??!0;t[`$feature/${n}`]=o,i.enabled&&r.push(n)}return r.length>0&&(r.sort(),t.$active_feature_flags=r),t}_cloneWith(t){return new e({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:t,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(t){if(this._accessed.add(t),this._distinctId===""||this._isSlice&&!(t in this._flags))return;let r=this._flags[t],n=r===void 0?void 0:r.enabled===!1?!1:r.variant??!0,i={$feature_flag:t,$feature_flag_response:n,$feature_flag_id:r?.id,$feature_flag_version:r?.version,$feature_flag_reason:r?.reason,locally_evaluated:r?.locallyEvaluated??!1,[`$feature/${t}`]:n,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:r?.locallyEvaluated?Date.now():this._evaluatedAt};r?.locallyEvaluated&&this._flagDefinitionsLoadedAt!==void 0&&(i.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt);let o=[];this._errorsWhileComputing&&o.push(dfe.ERRORS_WHILE_COMPUTING),this._quotaLimited&&o.push(dfe.QUOTA_LIMITED),r===void 0&&o.push(dfe.FLAG_MISSING),o.length>0&&(i.$feature_flag_error=o.join(",")),this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:t,response:n,groups:this._groups,disableGeoip:this._disableGeoip,properties:i})}};async function ARu(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 Rmm=6e4,Fmm=1152921504606847e3,kmm=["is_not","is_set"],sit=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},Od=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},hee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},Iqr=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 hee||u instanceof Od?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 hee||u instanceof Od?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.active)return!1;if(t.ensure_experience_continuity)throw new Od("Flag has experience continuity enabled");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 Od("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 Od(`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 Od("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Od(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Od(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Od(`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 Od(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new Od(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Od(`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=o.aggregation_group_type_index,{groups:c,groupProperties:u}=i,l=!1,p;for(let d of s)try{let f=d.aggregation_group_type_index!==void 0?d.aggregation_group_type_index:a,m=n,g=r;if(f!==a&&f!=null){let A=this.groupTypeMapping[String(f)];if(!A||!(A in c)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${t.key}': group type index ${f} not available`));continue}if(!(A in u)){l=!0;continue}m=u[A],g=c[A]}if(await this.isConditionMatch(t,g,d,m,i)){let A=d.variant,y=o.multivariate?.variants||[];p=A&&y.some(E=>E.key===A)?A:await this.getMatchingVariant(t,g)||!0;break}}catch(f){if(f instanceof hee)throw f;if(f instanceof Od)l=!0;else throw f}if(p!==void 0)return p;if(l)throw new Od("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"?await vRu(c,i,this.cohorts,this.debugMode,p=>this.evaluateFlagDependency(p,i,o)):u==="flag"?await this.evaluateFlagDependency(c,i,o):IRu(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await yRu(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await yRu(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(Rmm,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 sit(`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 sit(`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 sit(`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 sit&&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}/flags/definitions?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=dee(()=>{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 yRu(e,t,r=""){let n=await ARu(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/Fmm}function IRu(e,t,r){let n=e.key,i=e.value,o=e.operator||"exact";if(n in t){if(o==="is_not_set")return!1}else{if(o==="is_not_set")return!0;throw new Od(`Property ${n} not found in propertyValues`)}let s=t[n];if(s==null&&!kmm.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 bRu(String(i))&&String(s).match(String(i))!==null;case"not_regex":return bRu(String(i))&&String(s).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof i=="number"?i:parseFloat(String(i)),l;return l=typeof s=="number"?s:s!=null?parseFloat(String(s)):NaN,Number.isFinite(u)&&Number.isFinite(l)?c(l,u,o):c(String(s),String(i),o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new Od("Date operations cannot be performed on boolean values");let u=Mmm(String(i));if(u==null&&(u=ERu(i)),u==null)throw new Od(`Invalid date: ${i}`);let l=ERu(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return w_(CB(String(s)),CB(String(i)))===0;case"semver_neq":return w_(CB(String(s)),CB(String(i)))!==0;case"semver_gt":return w_(CB(String(s)),CB(String(i)))>0;case"semver_gte":return w_(CB(String(s)),CB(String(i)))>=0;case"semver_lt":return w_(CB(String(s)),CB(String(i)))<0;case"semver_lte":return w_(CB(String(s)),CB(String(i)))<=0;case"semver_tilde":{let u=CB(String(s)),{lower:l,upper:p}=jmm(String(i));return w_(u,l)>=0&&w_(u,p)<0}case"semver_caret":{let u=CB(String(s)),{lower:l,upper:p}=Qmm(String(i));return w_(u,l)>=0&&w_(u,p)<0}case"semver_wildcard":{let u=CB(String(s)),{lower:l,upper:p}=zmm(String(i));return w_(u,l)>=0&&w_(u,p)<0}default:throw new Od(`Unknown operator: ${o}`)}}function Nmm(e,t){if(!(e in t))throw new hee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}async function vRu(e,t,r,n=!1,i){let o=String(e.value);Nmm(o,r);let s=r[o];return xRu(s,t,r,n,i)}async function xRu(e,t,r,n=!1,i){if(!e)return!0;let o=e.type,s=e.values;if(!s||s.length===0)return!0;let a=!1;if("values"in s[0]){for(let c of s)try{let u=await xRu(c,t,r,n,i);if(o==="AND"){if(!u)return!1}else if(u)return!0}catch(u){if(u instanceof hee)throw u;if(u instanceof Od)n&&console.debug(`Failed to compute property ${c} locally: ${u}`),a=!0;else throw u}if(a)throw new Od("Can't match cohort without a given cohort property value");return o==="AND"}for(let c of s)try{let u;if(c.type==="cohort")u=await vRu(c,t,r,n,i);else if(c.type==="flag"){if(!i)throw new Od(`Flag dependency '${c.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);u=await i(c)}else u=IRu(c,t);let l=c.negation||!1;if(o==="AND"){if(!u&&!l||u&&l)return!1}else if(u&&!l||!u&&l)return!0}catch(u){if(u instanceof hee)throw u;if(u instanceof Od)n&&console.debug(`Failed to compute property ${c} locally: ${u}`),a=!0;else throw u}if(a)throw new Od("can't match cohort without a given cohort property value");return o==="AND"}function bRu(e){try{return new RegExp(e),!0}catch{return!1}}function CRu(e,t){if(!/^\d+$/.test(e))throw new Od(`Invalid semver: ${t}`);if(e.length>1&&e[0]==="0")throw new Od(`Invalid semver: ${t}`);return parseInt(e,10)}function CB(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new Od(`Invalid semver: ${e}`);let n=r.split("."),i=c=>c===void 0||c===""?0:CRu(c,e),o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function w_(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 jmm(e){let t=CB(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function Qmm(e){let t=CB(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 zmm(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new Od(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=c=>{try{return CRu(c,e)}catch{throw new Od(`Invalid wildcard semver: ${e}`)}},o=i(n[0]),s,a;if(n.length===1)s=[o,0,0],a=[o+1,0,0];else{let c=i(n[1]);s=[o,c,0],a=[o,c+1,0]}return{lower:s,upper:a}}function ERu(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 Od(`${e} is in an invalid date format`)}throw new Od(`The date provided ${e} must be a string, number, or date object`)}function Mmm(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 vqr=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var Lmm=100,wRu=3e4,Umm=5e4,Vmm=50,_mm=500,qmm="https://us.i.posthog.com",SRu=new Set;function xqr(e,t){SRu.has(e)||(SRu.add(e),console.warn(`[PostHog] ${t}`))}function Gmm(e){return typeof e=="string"?e.trim():""}function Wmm(e){return(typeof e=="string"?e.trim():"")||void 0}function Hmm(e){return(typeof e=="string"?e.trim():"")||qmm}function Kmm(e){if(!e)return{};let t={};for(let[n,i]of Object.entries(e))t[`$feature/${n}`]=i;let r=Object.keys(e).filter(n=>e[n]!==!1).sort();return r.length>0&&(t.$active_feature_flags=r),t}var Cqr=class extends OUt{constructor(t,r={}){let n=Gmm(t),i={...r,host:Hmm(r.host),personalApiKey:Wmm(r.personalApiKey)};if(super(n,i),this._memoryStorage=new vqr,this.options=i,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof i.featureFlagsPollingInterval=="number"?Math.max(i.featureFlagsPollingInterval,Lmm):wRu,typeof i.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(i.waitUntilDebounceMs,0)),typeof i.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(i.waitUntilMaxWaitMs,0)),i.personalApiKey){if(i.personalApiKey.includes("phc_"))throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');i.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new Iqr({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:i.personalApiKey,projectApiKey:n,timeout:i.requestTimeout??1e4,host:this.host,fetch:i.fetch,onError:s=>{this._events.emit("error",s)},onLoad:s=>{this._events.emit("localEvaluationFlagsLoaded",s)},customHeaders:this.getCustomHeaders(),cacheProvider:i.flagDefinitionCacheProvider,strictLocalEvaluation:i.strictLocalEvaluation}))}this.errorTracking=new sH(this,i,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=i.maxCacheSize||Umm}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??_mm,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??Vmm;this._waitUntilCycle.timer=dee(()=>{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 gRu}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};await 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=wRu){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 S=this._flagOverrides[t];if(S===void 0)return;let O=this._payloadOverrides?.[t];return{key:t,enabled:S!==!1,variant:typeof S=="string"?S: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,g,A,y,E,v,I;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let S=this.featureFlagsPoller?.featureFlagsByKey[t];if(S)try{let O=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(S,d,{matchValue:i});if(O){m=!0;let D=O.value;E=S.id,I="Evaluated locally",f={key:t,enabled:D!==!1,variant:typeof D=="string"?D:void 0,payload:O.payload??void 0}}}catch(O){if(O instanceof hee||O instanceof Od)this._logger?.info(`${O.name} when computing flag locally: ${t}: ${O.message}`);else throw O}}if(!m&&!c){let S=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(S===void 0)y=dfe.UNKNOWN_ERROR;else{g=S.requestId,A=S.evaluatedAt;let O=[];S.errorsWhileComputingFlags&&O.push(dfe.ERRORS_WHILE_COMPUTING),S.quotaLimited?.includes("feature_flags")&&O.push(dfe.QUOTA_LIMITED);let D=S.flags[t];if(D===void 0)O.push(dfe.FLAG_MISSING);else{E=D.metadata?.id,v=D.metadata?.version,I=D.reason?.description??D.reason?.code;let T;if(D.metadata?.payload!==void 0)try{T=JSON.parse(D.metadata.payload)}catch{T=D.metadata.payload}f={key:t,enabled:D.enabled,variant:D.variant,payload:T}}O.length>0&&(y=O.join(","))}}if(o){let S=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,O={$feature_flag:t,$feature_flag_response:S,$feature_flag_id:E,$feature_flag_version:v,$feature_flag_reason:I,locally_evaluated:m,[`$feature/${t}`]:S,$feature_flag_request_id:g,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let D=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();D!==void 0&&(O.$feature_flag_definitions_loaded_at=D)}y&&(O.$feature_flag_error=y),this._captureFlagCalledEventIfNeeded({distinctId:r,key:t,response:S,groups:s,disableGeoip:a,properties:O})}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){xqr("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(xqr("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request."),this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(!this.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){xqr("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});return i===void 0?void 0:i.enabled===!1?!1:!!(i.variant??!0)||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};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={},g={},A=!0;if(f&&(m=f.response,g=f.payloads,A=f.fallbackToFlags),A&&!c){let y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...y.flags||{}},g={...g,...y.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(g={...g,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:g}}async evaluateFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags \u2014 pass it explicitly or use withContext()"),new oit({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});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={},m,g,A=!1,y=!1,E=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),v=new Set;if(E)for(let[C,S]of Object.entries(E.response)){let O=this.featureFlagsPoller?.featureFlagsByKey[C];f[C]={key:C,enabled:S!==!1,variant:typeof S=="string"?S:void 0,payload:E.payloads[C],id:O?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0},v.add(C)}if((E?E.fallbackToFlags:!0)&&!c){let C=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);if(C){m=C.requestId,g=C.evaluatedAt,A=!!C.errorsWhileComputingFlags,y=Array.isArray(C.quotaLimited)&&C.quotaLimited.includes("feature_flags");for(let[S,O]of Object.entries(C.flags)){if(v.has(S))continue;let D;if(O.metadata?.payload!==void 0)try{D=JSON.parse(O.metadata.payload)}catch{D=O.metadata.payload}f[S]={key:S,enabled:O.enabled,variant:O.variant,payload:D,id:O.metadata?.id,version:O.metadata?.version,reason:O.reason?.description??O.reason?.code,locallyEvaluated:!1}}}}if(this._flagOverrides!==void 0)for(let[C,S]of Object.entries(this._flagOverrides)){if(S===void 0){delete f[C];continue}let O=f[C];f[C]={key:C,enabled:S!==!1,variant:typeof S=="string"?S:void 0,payload:O?.payload,id:O?.id,version:O?.version,reason:O?.reason,locallyEvaluated:O?.locallyEvaluated??!1}}if(this._payloadOverrides!==void 0)for(let[C,S]of Object.entries(this._payloadOverrides)){let O=f[C];O&&(f[C]={...O,payload:S})}return new oit({host:this._getFeatureFlagEvaluationsHost(),distinctId:n,groups:o,disableGeoip:s,flags:f,requestId:m,evaluatedAt:g,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:A,quotaLimited:y})}_captureFlagCalledEventIfNeeded(t){let{distinctId:r,key:n,response:i,groups:o,disableGeoip:s,properties:a}=t,c=`${n}_${i}`;r in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[r].includes(c)||(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(c):this.distinctIdHasSentFlagCalls[r]=[c],this.capture({distinctId:r,event:"$feature_flag_called",properties:a,groups:o,disableGeoip:s}))}_getFeatureFlagEvaluationsHost(){return this._featureFlagEvaluationsHost||(this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:t=>this._captureFlagCalledEventIfNeeded(t),logWarning:t=>{this.options.featureFlagsLogWarnings!==!1&&console.warn(`[PostHog] ${t}`)}}),this._featureFlagEvaluationsHost}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){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=dee(()=>{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(DDu(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,o){if(!sH.isPreviouslyCapturedError(t)){let s=new Error("PostHog syntheticException");this.addPendingPromise(sH.buildEventMessage(t,{syntheticException:s},r,n).then(a=>this.capture({...a,uuid:i,flags:o})))}}async captureExceptionImmediate(t,r,n,i){if(!sH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");return this.addPendingPromise(sH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.captureImmediate({...s,flags:i})))}}async prepareEventMessage(t){let{distinctId:r,event:n,properties:i,groups:o,flags:s,sendFeatureFlags:a,timestamp:c,disableGeoip:u,uuid:l}=t,p=this.context?.get(),d=r||p?.distinctId,f={...this.props,...p?.properties||{},...i||{}};d||(d=fee(),f.$process_person_profile=!1),p?.sessionId&&!f.$session_id&&(f.$session_id=p.sessionId);let m=this._runBeforeSend({distinctId:d,event:n,properties:f,groups:o,flags:s,sendFeatureFlags:a,timestamp:c,disableGeoip:u,uuid:l});if(!m)return Promise.reject(null);let g=await Promise.resolve().then(async()=>{if(s)return a&&console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`."),s._getEventProperties();if(a){xqr("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead \u2014 it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");let A=typeof a=="object"?a:void 0,y=await this.getFeatureFlagsForEvent(m.distinctId,o,u,A);return Kmm(y)}return{}}).catch(()=>({})).then(A=>({...A,...m.properties||{},$groups:m.groups||o}));return m.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof g.$raw_user_agent=="string"&&TDu(g.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(m.event="$bot_pageview",g.$browser_type="bot"),{distinctId:m.distinctId,event:m.event,properties:g,options:{timestamp:m.timestamp,disableGeoip:m.disableGeoip,uuid:m.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 TRu=require("async_hooks"),wqr=class{constructor(){this.storage=new TRu.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 ORu="posthog-node";function Jmm(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[ujo.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(g=>({...g,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 ujo=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=ORu,this.name=ORu,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(Jmm(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};sH.errorPropertiesBuilder=new MQ.ErrorPropertiesBuilder([new MQ.EventCoercer,new MQ.ErrorCoercer,new MQ.ObjectCoercer,new MQ.StringCoercer,new MQ.PrimitiveCoercer],MQ.createStackParser("node:javascript",MQ.nodeStackLineParser),[CDu(),lRu,dRu()]);var Fve=class extends Cqr{getLibraryId(){return"posthog-node"}initializeContext(){return new wqr}};var Sqr=class{posthog;constructor({posthogApiKey:t}){this.posthog=new Fve(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.74.2",usingAccessToken:!0,...ece()}})}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 PUt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};om();Xt();var ait=require("fs/promises"),BRu=require("os"),PRu=require("path");Wtt();var Ymm="id",Xmm=".fern",DUt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new Fve(r),this.userId=t==null?void 0:RPo(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.74.2",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...ece()}})}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 xf({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=vD(),r=We(Vt.of((0,BRu.homedir)()),we.of(Xmm),we.of(Ymm));try{await rr(r)?this.persistedDistinctId=(await(0,ait.readFile)(r)).toString():(await(0,ait.mkdir)((0,PRu.dirname)(r),{recursive:!0}),await(0,ait.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var ljo;async function RUt(){return ljo==null&&(ljo=await Zmm()),ljo}async function Zmm(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new PUt;let r=await vrt();return r!=null?new DUt({token:r,posthogApiKey:e}):await u_()!=null?new Sqr({posthogApiKey:e}):new DUt({token:void 0,posthogApiKey:e})}catch{return new PUt}}En();Dt();Qt();OW();var FUt=ye(require("process"),1);fGe();var FRu=ye(ovo(),1),kRu=ye(RRu(),1);function N1(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=QG(e),e.length===0))return 0;e=e.replace((0,kRu.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(FRu.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}En();function Tqr(e){let t=0;for(let r of e.split(`
3084
+ `);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=$Du.test(a)?a.replace($Du,"$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>=eRu)break}}return tRu(i)}}var XNo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=Rve(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 pLe(t,"DOMException")}isDOMError(t){return pLe(t,"DOMError")}};var ZNo=class{match(t){return LNo(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 $No=class{constructor(){}match(t){return PDu(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 dmm=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,ejo=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(dmm);return i&&(r=i[1],n=i[2]),[r,n]}};var nRu=["fatal","error","warning","log","info","debug"];function yqr(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 tjo=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 tit(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=yqr(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return Rve(t)&&!BDu(t)&&nRu.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(qDu(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var rjo=class{match(t){return tit(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${yqr(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var njo=class{match(t){return rqr(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var ijo=class{match(t){return pLe(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!tit(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 rqr(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 ojo=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 BUt={MESSAGE:"$message",TIMESTAMP:"$timestamp"},mmm=new Set([BUt.MESSAGE,BUt.TIMESTAMP]),bqr={enabled:!0,max_bytes:32768};function sjo(e){return e?{enabled:e.enabled??bqr.enabled,max_bytes:gmm(e.max_bytes,bqr.max_bytes)}:{...bqr}}function hmm(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,i)=>mmm.has(i)?(t.push(i),n):(n[i]=e[i],n),{}),droppedKeys:t}}var ajo=class{constructor(t){this._entries=[],this._totalBytes=0,this._config=sjo(t)}setConfig(t){this._config=sjo(t),this._trimToMaxBytes()}add(t){let r=Amm(t);if(!r)return;let n=iRu(r.json);n>this._config.max_bytes||(this._entries.push({step:r.step,bytes:n}),this._totalBytes+=n,this._trimToMaxBytes())}getAttachable(){return this._entries.map(t=>t.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){for(;this._totalBytes>this._config.max_bytes&&this._entries.length>0;){let t=this._entries.shift();t&&(this._totalBytes-=t.bytes)}}};function gmm(e,t){if(!wUt(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);return r<0?t:r}function Amm(e){let t=ymm(e);if(t)try{let r=JSON.parse(t);if(!CUt(r))return;let n=r,i=n[BUt.MESSAGE],o=n[BUt.TIMESTAMP];return!Rve(i)||i.trim().length===0||!Rve(o)&&!wUt(o)?void 0:{step:n,json:t}}catch{return}}function ymm(e){let t=new WeakSet;try{return JSON.stringify(e,(r,n)=>{if(typeof n=="bigint")return n.toString();if(!(typeof n=="function"||typeof n=="symbol")){if(n instanceof Date)return n.toISOString();if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(n&&typeof n=="object"){if(t.has(n))return"[Circular]";t.add(n)}return n}})}catch{return}}function iRu(e){if(typeof TextEncoder<"u")return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),r=0;for(let n=0;n<t.length;n++)t[n]==="%"?(r+=1,n+=2):r+=1;return r}var aRu=require("fs"),cRu=require("readline"),Eqr=new MQ.ReduceableCache(25),uRu=new MQ.ReduceableCache(20),cjo=7,bmm=1e3,Emm=1e4;async function lRu(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"||Cmm(s)||wmm(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(uRu.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=Tmm(o);if(s.every(c=>Smm(i,c)))continue;let a=Omm(Eqr,i,{});n.push(Imm(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&vmm(e,Eqr),Eqr.reduce(),e}function Imm(e,t,r){return new Promise(n=>{let i=(0,aRu.createReadStream)(e),o=(0,cRu.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(){uRu.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]=Bmm(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 vmm(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;xmm(r.lineno,r,n)}}function xmm(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=pRu(e);i<e;i++){let o=r[i];if(o===void 0)return void oRu(t);t.pre_context.push(o)}if(r[e]===void 0)return void oRu(t);t.context_line=r[e];let n=fRu(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 oRu(e){delete e.pre_context,delete e.context_line,delete e.post_context}function Cmm(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function wmm(e){return e.lineno!==void 0&&e.lineno>Emm||e.colno!==void 0&&e.colno>bmm}function Smm(e,t){let r=Eqr.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 Tmm(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=sRu(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+cjo:(i.push(n),n=sRu(o)),t++}return i}function sRu(e){return[pRu(e),fRu(e)]}function pRu(e){return Math.max(1,e-cjo)}function fRu(e){return e+cjo}function Omm(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function Bmm(e,t){let r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);let i=Math.max(t-60,0);i<5&&(i=0);let o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r=`...${r}`),o<n&&(r+="..."),r}var iit=require("path");function dRu(e=process.cwd()){let t=iit.sep==="\\",r=i=>t?i.replace(/\\/g,"/"):i,n=r(e);return async i=>{for(let o of i)!o.filename||o.filename.startsWith("node:")||o.filename.startsWith("data:")||(0,iit.isAbsolute)(o.filename)&&(o.filename=r((0,iit.relative)(n,r(o.filename))));return i}}function Pmm(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 mRu(e,t){globalThis.process?.on("uncaughtException",Pmm(e,t))}function hRu(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var Dmm=2e3,sH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new nqr({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return CUt(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()&&(mRu(this.onException.bind(this),this.onFatalError.bind(this)),hRu(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(Dmm),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var gRu="5.35.1";var dfe={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};var oit=class e{constructor(t){this._host=t.host,this._distinctId=t.distinctId,this._groups=t.groups,this._disableGeoip=t.disableGeoip,this._flags=t.flags,this._requestId=t.requestId,this._evaluatedAt=t.evaluatedAt,this._flagDefinitionsLoadedAt=t.flagDefinitionsLoadedAt,this._errorsWhileComputing=t.errorsWhileComputing??!1,this._quotaLimited=t.quotaLimited??!1,this._accessed=t.accessed??new Set,this._isSlice=t.isSlice??!1}isEnabled(t){let r=this._flags[t];return this._recordAccess(t),r?.enabled??!1}getFlag(t){let r=this._flags[t];if(this._recordAccess(t),!!r)return r.enabled?r.variant??!0:!1}getFlagPayload(t){return this._flags[t]?.payload}onlyAccessed(){let t={};for(let r of this._accessed){let n=this._flags[r];n&&(t[r]=n)}return this._cloneWith(t)}only(t){let r={},n=[];for(let i of t){let o=this._flags[i];o?r[i]=o:n.push(i)}return n.length>0&&this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${n.join(", ")}`),this._cloneWith(r)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let t={},r=[];for(let[n,i]of Object.entries(this._flags)){let o=i.enabled===!1?!1:i.variant??!0;t[`$feature/${n}`]=o,i.enabled&&r.push(n)}return r.length>0&&(r.sort(),t.$active_feature_flags=r),t}_cloneWith(t){return new e({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:t,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(t){if(this._accessed.add(t),this._distinctId===""||this._isSlice&&!(t in this._flags))return;let r=this._flags[t],n=r===void 0?void 0:r.enabled===!1?!1:r.variant??!0,i={$feature_flag:t,$feature_flag_response:n,$feature_flag_id:r?.id,$feature_flag_version:r?.version,$feature_flag_reason:r?.reason,locally_evaluated:r?.locallyEvaluated??!1,[`$feature/${t}`]:n,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:r?.locallyEvaluated?Date.now():this._evaluatedAt};r?.locallyEvaluated&&this._flagDefinitionsLoadedAt!==void 0&&(i.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt);let o=[];this._errorsWhileComputing&&o.push(dfe.ERRORS_WHILE_COMPUTING),this._quotaLimited&&o.push(dfe.QUOTA_LIMITED),r===void 0&&o.push(dfe.FLAG_MISSING),o.length>0&&(i.$feature_flag_error=o.join(",")),this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:t,response:n,groups:this._groups,disableGeoip:this._disableGeoip,properties:i})}};async function ARu(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 Rmm=6e4,Fmm=1152921504606847e3,kmm=["is_not","is_set"],sit=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},Od=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},hee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},Iqr=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 hee||u instanceof Od?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 hee||u instanceof Od?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.active)return!1;if(t.ensure_experience_continuity)throw new Od("Flag has experience continuity enabled");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 Od("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 Od(`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 Od("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Od(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Od(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Od(`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 Od(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new Od(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Od(`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=o.aggregation_group_type_index,{groups:c,groupProperties:u}=i,l=!1,p;for(let d of s)try{let f=d.aggregation_group_type_index!==void 0?d.aggregation_group_type_index:a,m=n,g=r;if(f!==a&&f!=null){let A=this.groupTypeMapping[String(f)];if(!A||!(A in c)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${t.key}': group type index ${f} not available`));continue}if(!(A in u)){l=!0;continue}m=u[A],g=c[A]}if(await this.isConditionMatch(t,g,d,m,i)){let A=d.variant,y=o.multivariate?.variants||[];p=A&&y.some(E=>E.key===A)?A:await this.getMatchingVariant(t,g)||!0;break}}catch(f){if(f instanceof hee)throw f;if(f instanceof Od)l=!0;else throw f}if(p!==void 0)return p;if(l)throw new Od("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"?await vRu(c,i,this.cohorts,this.debugMode,p=>this.evaluateFlagDependency(p,i,o)):u==="flag"?await this.evaluateFlagDependency(c,i,o):IRu(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await yRu(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await yRu(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(Rmm,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 sit(`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 sit(`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 sit(`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 sit&&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}/flags/definitions?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=dee(()=>{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 yRu(e,t,r=""){let n=await ARu(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/Fmm}function IRu(e,t,r){let n=e.key,i=e.value,o=e.operator||"exact";if(n in t){if(o==="is_not_set")return!1}else{if(o==="is_not_set")return!0;throw new Od(`Property ${n} not found in propertyValues`)}let s=t[n];if(s==null&&!kmm.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 bRu(String(i))&&String(s).match(String(i))!==null;case"not_regex":return bRu(String(i))&&String(s).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof i=="number"?i:parseFloat(String(i)),l;return l=typeof s=="number"?s:s!=null?parseFloat(String(s)):NaN,Number.isFinite(u)&&Number.isFinite(l)?c(l,u,o):c(String(s),String(i),o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new Od("Date operations cannot be performed on boolean values");let u=Mmm(String(i));if(u==null&&(u=ERu(i)),u==null)throw new Od(`Invalid date: ${i}`);let l=ERu(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return w_(CB(String(s)),CB(String(i)))===0;case"semver_neq":return w_(CB(String(s)),CB(String(i)))!==0;case"semver_gt":return w_(CB(String(s)),CB(String(i)))>0;case"semver_gte":return w_(CB(String(s)),CB(String(i)))>=0;case"semver_lt":return w_(CB(String(s)),CB(String(i)))<0;case"semver_lte":return w_(CB(String(s)),CB(String(i)))<=0;case"semver_tilde":{let u=CB(String(s)),{lower:l,upper:p}=jmm(String(i));return w_(u,l)>=0&&w_(u,p)<0}case"semver_caret":{let u=CB(String(s)),{lower:l,upper:p}=Qmm(String(i));return w_(u,l)>=0&&w_(u,p)<0}case"semver_wildcard":{let u=CB(String(s)),{lower:l,upper:p}=zmm(String(i));return w_(u,l)>=0&&w_(u,p)<0}default:throw new Od(`Unknown operator: ${o}`)}}function Nmm(e,t){if(!(e in t))throw new hee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}async function vRu(e,t,r,n=!1,i){let o=String(e.value);Nmm(o,r);let s=r[o];return xRu(s,t,r,n,i)}async function xRu(e,t,r,n=!1,i){if(!e)return!0;let o=e.type,s=e.values;if(!s||s.length===0)return!0;let a=!1;if("values"in s[0]){for(let c of s)try{let u=await xRu(c,t,r,n,i);if(o==="AND"){if(!u)return!1}else if(u)return!0}catch(u){if(u instanceof hee)throw u;if(u instanceof Od)n&&console.debug(`Failed to compute property ${c} locally: ${u}`),a=!0;else throw u}if(a)throw new Od("Can't match cohort without a given cohort property value");return o==="AND"}for(let c of s)try{let u;if(c.type==="cohort")u=await vRu(c,t,r,n,i);else if(c.type==="flag"){if(!i)throw new Od(`Flag dependency '${c.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);u=await i(c)}else u=IRu(c,t);let l=c.negation||!1;if(o==="AND"){if(!u&&!l||u&&l)return!1}else if(u&&!l||!u&&l)return!0}catch(u){if(u instanceof hee)throw u;if(u instanceof Od)n&&console.debug(`Failed to compute property ${c} locally: ${u}`),a=!0;else throw u}if(a)throw new Od("can't match cohort without a given cohort property value");return o==="AND"}function bRu(e){try{return new RegExp(e),!0}catch{return!1}}function CRu(e,t){if(!/^\d+$/.test(e))throw new Od(`Invalid semver: ${t}`);if(e.length>1&&e[0]==="0")throw new Od(`Invalid semver: ${t}`);return parseInt(e,10)}function CB(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new Od(`Invalid semver: ${e}`);let n=r.split("."),i=c=>c===void 0||c===""?0:CRu(c,e),o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function w_(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 jmm(e){let t=CB(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function Qmm(e){let t=CB(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 zmm(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new Od(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=c=>{try{return CRu(c,e)}catch{throw new Od(`Invalid wildcard semver: ${e}`)}},o=i(n[0]),s,a;if(n.length===1)s=[o,0,0],a=[o+1,0,0];else{let c=i(n[1]);s=[o,c,0],a=[o,c+1,0]}return{lower:s,upper:a}}function ERu(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 Od(`${e} is in an invalid date format`)}throw new Od(`The date provided ${e} must be a string, number, or date object`)}function Mmm(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 vqr=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var Lmm=100,wRu=3e4,Umm=5e4,Vmm=50,_mm=500,qmm="https://us.i.posthog.com",SRu=new Set;function xqr(e,t){SRu.has(e)||(SRu.add(e),console.warn(`[PostHog] ${t}`))}function Gmm(e){return typeof e=="string"?e.trim():""}function Wmm(e){return(typeof e=="string"?e.trim():"")||void 0}function Hmm(e){return(typeof e=="string"?e.trim():"")||qmm}function Kmm(e){if(!e)return{};let t={};for(let[n,i]of Object.entries(e))t[`$feature/${n}`]=i;let r=Object.keys(e).filter(n=>e[n]!==!1).sort();return r.length>0&&(t.$active_feature_flags=r),t}var Cqr=class extends OUt{constructor(t,r={}){let n=Gmm(t),i={...r,host:Hmm(r.host),personalApiKey:Wmm(r.personalApiKey)};if(super(n,i),this._memoryStorage=new vqr,this.options=i,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof i.featureFlagsPollingInterval=="number"?Math.max(i.featureFlagsPollingInterval,Lmm):wRu,typeof i.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(i.waitUntilDebounceMs,0)),typeof i.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(i.waitUntilMaxWaitMs,0)),i.personalApiKey){if(i.personalApiKey.includes("phc_"))throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');i.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new Iqr({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:i.personalApiKey,projectApiKey:n,timeout:i.requestTimeout??1e4,host:this.host,fetch:i.fetch,onError:s=>{this._events.emit("error",s)},onLoad:s=>{this._events.emit("localEvaluationFlagsLoaded",s)},customHeaders:this.getCustomHeaders(),cacheProvider:i.flagDefinitionCacheProvider,strictLocalEvaluation:i.strictLocalEvaluation}))}this.errorTracking=new sH(this,i,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=i.maxCacheSize||Umm}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??_mm,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??Vmm;this._waitUntilCycle.timer=dee(()=>{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 gRu}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};await 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=wRu){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 S=this._flagOverrides[t];if(S===void 0)return;let O=this._payloadOverrides?.[t];return{key:t,enabled:S!==!1,variant:typeof S=="string"?S: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,g,A,y,E,v,I;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let S=this.featureFlagsPoller?.featureFlagsByKey[t];if(S)try{let O=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(S,d,{matchValue:i});if(O){m=!0;let D=O.value;E=S.id,I="Evaluated locally",f={key:t,enabled:D!==!1,variant:typeof D=="string"?D:void 0,payload:O.payload??void 0}}}catch(O){if(O instanceof hee||O instanceof Od)this._logger?.info(`${O.name} when computing flag locally: ${t}: ${O.message}`);else throw O}}if(!m&&!c){let S=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(S===void 0)y=dfe.UNKNOWN_ERROR;else{g=S.requestId,A=S.evaluatedAt;let O=[];S.errorsWhileComputingFlags&&O.push(dfe.ERRORS_WHILE_COMPUTING),S.quotaLimited?.includes("feature_flags")&&O.push(dfe.QUOTA_LIMITED);let D=S.flags[t];if(D===void 0)O.push(dfe.FLAG_MISSING);else{E=D.metadata?.id,v=D.metadata?.version,I=D.reason?.description??D.reason?.code;let T;if(D.metadata?.payload!==void 0)try{T=JSON.parse(D.metadata.payload)}catch{T=D.metadata.payload}f={key:t,enabled:D.enabled,variant:D.variant,payload:T}}O.length>0&&(y=O.join(","))}}if(o){let S=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,O={$feature_flag:t,$feature_flag_response:S,$feature_flag_id:E,$feature_flag_version:v,$feature_flag_reason:I,locally_evaluated:m,[`$feature/${t}`]:S,$feature_flag_request_id:g,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let D=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();D!==void 0&&(O.$feature_flag_definitions_loaded_at=D)}y&&(O.$feature_flag_error=y),this._captureFlagCalledEventIfNeeded({distinctId:r,key:t,response:S,groups:s,disableGeoip:a,properties:O})}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){xqr("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(xqr("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request."),this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(!this.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){xqr("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});return i===void 0?void 0:i.enabled===!1?!1:!!(i.variant??!0)||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};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={},g={},A=!0;if(f&&(m=f.response,g=f.payloads,A=f.fallbackToFlags),A&&!c){let y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...y.flags||{}},g={...g,...y.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(g={...g,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:g}}async evaluateFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags \u2014 pass it explicitly or use withContext()"),new oit({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});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={},m,g,A=!1,y=!1,E=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),v=new Set;if(E)for(let[C,S]of Object.entries(E.response)){let O=this.featureFlagsPoller?.featureFlagsByKey[C];f[C]={key:C,enabled:S!==!1,variant:typeof S=="string"?S:void 0,payload:E.payloads[C],id:O?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0},v.add(C)}if((E?E.fallbackToFlags:!0)&&!c){let C=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);if(C){m=C.requestId,g=C.evaluatedAt,A=!!C.errorsWhileComputingFlags,y=Array.isArray(C.quotaLimited)&&C.quotaLimited.includes("feature_flags");for(let[S,O]of Object.entries(C.flags)){if(v.has(S))continue;let D;if(O.metadata?.payload!==void 0)try{D=JSON.parse(O.metadata.payload)}catch{D=O.metadata.payload}f[S]={key:S,enabled:O.enabled,variant:O.variant,payload:D,id:O.metadata?.id,version:O.metadata?.version,reason:O.reason?.description??O.reason?.code,locallyEvaluated:!1}}}}if(this._flagOverrides!==void 0)for(let[C,S]of Object.entries(this._flagOverrides)){if(S===void 0){delete f[C];continue}let O=f[C];f[C]={key:C,enabled:S!==!1,variant:typeof S=="string"?S:void 0,payload:O?.payload,id:O?.id,version:O?.version,reason:O?.reason,locallyEvaluated:O?.locallyEvaluated??!1}}if(this._payloadOverrides!==void 0)for(let[C,S]of Object.entries(this._payloadOverrides)){let O=f[C];O&&(f[C]={...O,payload:S})}return new oit({host:this._getFeatureFlagEvaluationsHost(),distinctId:n,groups:o,disableGeoip:s,flags:f,requestId:m,evaluatedAt:g,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:A,quotaLimited:y})}_captureFlagCalledEventIfNeeded(t){let{distinctId:r,key:n,response:i,groups:o,disableGeoip:s,properties:a}=t,c=`${n}_${i}`;r in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[r].includes(c)||(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(c):this.distinctIdHasSentFlagCalls[r]=[c],this.capture({distinctId:r,event:"$feature_flag_called",properties:a,groups:o,disableGeoip:s}))}_getFeatureFlagEvaluationsHost(){return this._featureFlagEvaluationsHost||(this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:t=>this._captureFlagCalledEventIfNeeded(t),logWarning:t=>{this.options.featureFlagsLogWarnings!==!1&&console.warn(`[PostHog] ${t}`)}}),this._featureFlagEvaluationsHost}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){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=dee(()=>{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(DDu(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,o){if(!sH.isPreviouslyCapturedError(t)){let s=new Error("PostHog syntheticException");this.addPendingPromise(sH.buildEventMessage(t,{syntheticException:s},r,n).then(a=>this.capture({...a,uuid:i,flags:o})))}}async captureExceptionImmediate(t,r,n,i){if(!sH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");return this.addPendingPromise(sH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.captureImmediate({...s,flags:i})))}}async prepareEventMessage(t){let{distinctId:r,event:n,properties:i,groups:o,flags:s,sendFeatureFlags:a,timestamp:c,disableGeoip:u,uuid:l}=t,p=this.context?.get(),d=r||p?.distinctId,f={...this.props,...p?.properties||{},...i||{}};d||(d=fee(),f.$process_person_profile=!1),p?.sessionId&&!f.$session_id&&(f.$session_id=p.sessionId);let m=this._runBeforeSend({distinctId:d,event:n,properties:f,groups:o,flags:s,sendFeatureFlags:a,timestamp:c,disableGeoip:u,uuid:l});if(!m)return Promise.reject(null);let g=await Promise.resolve().then(async()=>{if(s)return a&&console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`."),s._getEventProperties();if(a){xqr("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead \u2014 it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");let A=typeof a=="object"?a:void 0,y=await this.getFeatureFlagsForEvent(m.distinctId,o,u,A);return Kmm(y)}return{}}).catch(()=>({})).then(A=>({...A,...m.properties||{},$groups:m.groups||o}));return m.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof g.$raw_user_agent=="string"&&TDu(g.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(m.event="$bot_pageview",g.$browser_type="bot"),{distinctId:m.distinctId,event:m.event,properties:g,options:{timestamp:m.timestamp,disableGeoip:m.disableGeoip,uuid:m.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 TRu=require("async_hooks"),wqr=class{constructor(){this.storage=new TRu.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 ORu="posthog-node";function Jmm(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[ujo.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(g=>({...g,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 ujo=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=ORu,this.name=ORu,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(Jmm(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};sH.errorPropertiesBuilder=new MQ.ErrorPropertiesBuilder([new MQ.EventCoercer,new MQ.ErrorCoercer,new MQ.ObjectCoercer,new MQ.StringCoercer,new MQ.PrimitiveCoercer],MQ.createStackParser("node:javascript",MQ.nodeStackLineParser),[CDu(),lRu,dRu()]);var Fve=class extends Cqr{getLibraryId(){return"posthog-node"}initializeContext(){return new wqr}};var Sqr=class{posthog;constructor({posthogApiKey:t}){this.posthog=new Fve(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.74.3",usingAccessToken:!0,...ece()}})}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 PUt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};om();Xt();var ait=require("fs/promises"),BRu=require("os"),PRu=require("path");Wtt();var Ymm="id",Xmm=".fern",DUt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new Fve(r),this.userId=t==null?void 0:RPo(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.74.3",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...ece()}})}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 xf({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=vD(),r=We(Vt.of((0,BRu.homedir)()),we.of(Xmm),we.of(Ymm));try{await rr(r)?this.persistedDistinctId=(await(0,ait.readFile)(r)).toString():(await(0,ait.mkdir)((0,PRu.dirname)(r),{recursive:!0}),await(0,ait.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var ljo;async function RUt(){return ljo==null&&(ljo=await Zmm()),ljo}async function Zmm(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new PUt;let r=await vrt();return r!=null?new DUt({token:r,posthogApiKey:e}):await u_()!=null?new Sqr({posthogApiKey:e}):new DUt({token:void 0,posthogApiKey:e})}catch{return new PUt}}En();Dt();Qt();OW();var FUt=ye(require("process"),1);fGe();var FRu=ye(ovo(),1),kRu=ye(RRu(),1);function N1(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=QG(e),e.length===0))return 0;e=e.replace((0,kRu.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(FRu.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}En();function Tqr(e){let t=0;for(let r of e.split(`
3085
3085
  `))t=Math.max(t,N1(r));return t}var eFu=ye(fjo(),1);var ehm=/[\p{Lu}]/u,thm=/[\p{Ll}]/u,QRu=/^[\p{Lu}](?![\p{Lu}])/gu,LRu=/([\p{Alpha}\p{N}_]|$)/u,djo=/[_.\- ]+/,rhm=new RegExp("^"+djo.source),zRu=new RegExp(djo.source+LRu.source,"gu"),MRu=new RegExp("\\d+"+LRu.source,"gu"),nhm=(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&&ehm.test(u)?(e=e.slice(0,c)+"-"+e.slice(c),i=!1,s=o,o=!0,c++):o&&s&&thm.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},ihm=(e,t)=>(QRu.lastIndex=0,e.replace(QRu,r=>t(r))),ohm=(e,t)=>(zRu.lastIndex=0,MRu.lastIndex=0,e.replace(zRu,(r,n)=>t(n)).replace(MRu,r=>t(r)));function mjo(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?djo.test(e)?"":t.pascalCase?n(e):r(e):(e!==r(e)&&(e=nhm(e,r,n,t.preserveConsecutiveUppercase)),e=e.replace(rhm,""),e=t.preserveConsecutiveUppercase?ihm(e,r):r(e),t.pascalCase&&(e=n(e.charAt(0))+e.slice(1)),ohm(e,n))}var yjo=ye(VRu(),1);fGe();var _Ru=(e=0)=>t=>`\x1B[${t+e}m`,qRu=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,GRu=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,P0={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]}},GvI=Object.keys(P0.modifier),uhm=Object.keys(P0.color),lhm=Object.keys(P0.bgColor),WvI=[...uhm,...lhm];function phm(){let e=new Map;for(let[t,r]of Object.entries(P0)){for(let[n,i]of Object.entries(r))P0[n]={open:`\x1B[${i[0]}m`,close:`\x1B[${i[1]}m`},r[n]=P0[n],e.set(i[0],i[1]);Object.defineProperty(P0,t,{value:r,enumerable:!1})}return Object.defineProperty(P0,"codes",{value:e,enumerable:!1}),P0.color.close="\x1B[39m",P0.bgColor.close="\x1B[49m",P0.color.ansi=_Ru(),P0.color.ansi256=qRu(),P0.color.ansi16m=GRu(),P0.bgColor.ansi=_Ru(10),P0.bgColor.ansi256=qRu(10),P0.bgColor.ansi16m=GRu(10),Object.defineProperties(P0,{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=>P0.rgbToAnsi256(...P0.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)=>P0.ansi256ToAnsi(P0.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>P0.ansi256ToAnsi(P0.hexToAnsi256(t)),enumerable:!1}}),P0}var fhm=phm(),WRu=fhm;var Oqr=new Set(["\x1B","\x9B"]),dhm=39,gjo="\x07",JRu="[",mhm="]",YRu="m",Ajo=`${mhm}8;;`,HRu=e=>`${Oqr.values().next().value}${JRu}${e}${YRu}`,KRu=e=>`${Oqr.values().next().value}${Ajo}${e}${gjo}`,hhm=e=>e.split(" ").map(t=>N1(t)),hjo=(e,t,r)=>{let n=[...t],i=!1,o=!1,s=N1(QG(e[e.length-1]));for(let[a,c]of n.entries()){let u=N1(c);if(s+u<=r?e[e.length-1]+=c:(e.push(c),s=0),Oqr.has(c)&&(i=!0,o=n.slice(a+1).join("").startsWith(Ajo)),i){o?c===gjo&&(i=!1,o=!1):c===YRu&&(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())},ghm=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(N1(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},Ahm=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i,o,s=hhm(e),a=[""];for(let[u,l]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let p=N1(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(""),hjo(a,l,t);continue}if(p+s[u]>t&&p>0&&s[u]>0){if(r.wordWrap===!1&&p<t){hjo(a,l,t);continue}a.push("")}if(p+s[u]>t&&r.wordWrap===!1){hjo(a,l,t);continue}a[a.length-1]+=l}r.trim!==!1&&(a=a.map(u=>ghm(u)));let c=[...a.join(`
3086
3086
  `)];for(let[u,l]of c.entries()){if(n+=l,Oqr.has(l)){let{groups:d}=new RegExp(`(?:\\${JRu}(?<code>\\d+)m|\\${Ajo}(?<uri>.*)${gjo})`).exec(c.slice(u).join(""))||{groups:{}};if(d.code!==void 0){let f=Number.parseFloat(d.code);i=f===dhm?void 0:f}else d.uri!==void 0&&(o=d.uri.length===0?void 0:d.uri)}let p=WRu.codes.get(Number(i));c[u+1]===`
3087
3087
  `?(o&&(n+=KRu("")),i&&p&&(n+=HRu(p))):l===`
@@ -3653,7 +3653,7 @@ Hint: Values starting with "@" (such as scoped npm packages) must be wrapped in
3653
3653
  Add a 'docs:' section to your fern.yml to get started.`,code:B.Code.ConfigError});let o=await new iPe({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&&G$m(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 B({code:B.Code.ValidationError});return}if(c.length>0)for(let p of c){let d=p.severity==="warning"?de.yellow:de.red;process.stderr.write(`${d(`${p.displayRelativeFilepath}:${p.line}:${p.column}: ${p.message}`)}
3654
3654
  `)}let l=0;if(o.mdxParseErrors.length>0){for(let p of o.mdxParseErrors)t.stderr.info(`
3655
3655
  ${p.toString()}
3656
- `);r.fix?l+=await Wei(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!yXn()&&await Hei(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new fbt({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new B({code:B.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${Pr.warning} ${de.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(de.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${Pr.success} ${de.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=>Eee(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 G$m(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 SYo(e){let t=new wYo;Xn(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}))}Ab();Qt();var qil=ye(require("net"),1),Gil=ye(require("os"),1),Yei=class extends Error{constructor(t){super(`${t} is locked`)}},gbt={old:new Set,young:new Set},W$m=1e3*15,Wil=new Set;var I9t,H$m=()=>{let e=Gil.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},Vil=e=>new Promise((t,r)=>{let n=qil.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),_il=async(e,t)=>{if(e.host||e.port===0)return Vil(e);for(let r of t)try{await Vil({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},K$m=e=>gbt.old.has(e)||gbt.young.has(e)||Wil.has(e),J$m=function*(e){e&&(yield*e),yield 0};async function sPe(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??{};I9t===void 0&&(I9t=setTimeout(()=>{I9t=void 0,gbt.old=gbt.young,gbt.young=new Set},W$m),I9t.unref&&I9t.unref());let o=H$m();for(let s of J$m(t))try{if(r.has(s))continue;let a=await _il({...i,port:s},o);for(;K$m(a);){if(s!==0)throw new Yei(s);a=await _il({...i,port:s},o)}return n?Wil.add(a):gbt.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof Yei))throw a}throw new Error("No available ports found")}Qt();var Jil=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,Hil="docs.buildwithfern.com",Kil=62;function E4e(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)),Jil.test(t)}function Yil(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function v9t({orgId:e,previewId:t}){let r=Yil(t),n=`${e}-preview-${r}.${Hil}`;if(n.length<=Kil)return n;let i=`${e}-preview-`,o=Kil-i.length;if(o<8)throw new B({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:B.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${Hil}`}Dt();SC();Lm();Xt();iC();Qt();En();var fes=require("child_process"),EAl=ye(BYo(),1),des=ye(jti(),1),mes=ye(require("fs"),1),W4e=require("fs/promises"),IAl=ye(require("http"),1),vAl=ye(require("os"),1),wni=ye(require("path"),1);Xti();Xt();var B9=require("fs/promises"),kll=require("os"),gZo=ye(require("path"),1),jch=".fern",Qch="logs",hZo=100*1024*1024;function zch(){return"cli@5.74.2"}var k4e=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??We(We(Vt.of((0,kll.homedir)()),we.of(jch)),we.of(Qch));await rr(n)||await(0,B9.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=We(n,we.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${gZo.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
3656
+ `);r.fix?l+=await Wei(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!yXn()&&await Hei(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new fbt({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new B({code:B.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${Pr.warning} ${de.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(de.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${Pr.success} ${de.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=>Eee(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 G$m(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 SYo(e){let t=new wYo;Xn(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}))}Ab();Qt();var qil=ye(require("net"),1),Gil=ye(require("os"),1),Yei=class extends Error{constructor(t){super(`${t} is locked`)}},gbt={old:new Set,young:new Set},W$m=1e3*15,Wil=new Set;var I9t,H$m=()=>{let e=Gil.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},Vil=e=>new Promise((t,r)=>{let n=qil.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),_il=async(e,t)=>{if(e.host||e.port===0)return Vil(e);for(let r of t)try{await Vil({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},K$m=e=>gbt.old.has(e)||gbt.young.has(e)||Wil.has(e),J$m=function*(e){e&&(yield*e),yield 0};async function sPe(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??{};I9t===void 0&&(I9t=setTimeout(()=>{I9t=void 0,gbt.old=gbt.young,gbt.young=new Set},W$m),I9t.unref&&I9t.unref());let o=H$m();for(let s of J$m(t))try{if(r.has(s))continue;let a=await _il({...i,port:s},o);for(;K$m(a);){if(s!==0)throw new Yei(s);a=await _il({...i,port:s},o)}return n?Wil.add(a):gbt.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof Yei))throw a}throw new Error("No available ports found")}Qt();var Jil=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,Hil="docs.buildwithfern.com",Kil=62;function E4e(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)),Jil.test(t)}function Yil(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function v9t({orgId:e,previewId:t}){let r=Yil(t),n=`${e}-preview-${r}.${Hil}`;if(n.length<=Kil)return n;let i=`${e}-preview-`,o=Kil-i.length;if(o<8)throw new B({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:B.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${Hil}`}Dt();SC();Lm();Xt();iC();Qt();En();var fes=require("child_process"),EAl=ye(BYo(),1),des=ye(jti(),1),mes=ye(require("fs"),1),W4e=require("fs/promises"),IAl=ye(require("http"),1),vAl=ye(require("os"),1),wni=ye(require("path"),1);Xti();Xt();var B9=require("fs/promises"),kll=require("os"),gZo=ye(require("path"),1),jch=".fern",Qch="logs",hZo=100*1024*1024;function zch(){return"cli@5.74.3"}var k4e=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??We(We(Vt.of((0,kll.homedir)()),we.of(jch)),we.of(Qch));await rr(n)||await(0,B9.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=We(n,we.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${gZo.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
3657
3657
  `);await(0,B9.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)+`
3658
3658
  `;try{await(0,B9.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:zch(),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,B9.readdir)(t)).filter(c=>c.endsWith(".log")),i=[];for(let c of n){let u=gZo.default.join(t,c);try{let l=await(0,B9.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=hZo/1024/1024;if(o<=hZo){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<=hZo)break;if(!(this.logFilePath!=null&&c.fullPath===this.logFilePath))try{await(0,B9.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 Zti={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function Nll(e){let t=Mch();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:Zti});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",...Zti}})}catch{return new Response(JSON.stringify(i()),{headers:{"Content-Type":"application/json",...Zti}})}let d=/^\/_local\/(.*)/.exec(p.pathname);return u.method==="GET"&&d!=null?new Response(t.file(`/${d[1]}`),{headers:Zti}):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 k4e.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 Mch(){return globalThis.Bun}Qt();var epl=require("events"),nri=ye(require("fs"),1),j4e=ye(require("path"),1);var jll=ye(require("os"),1),Qll=300,hPe=20,tqt=1e7,zll=jll.default.platform();var Lch=zll==="darwin",AZo=zll==="win32",gPe=Lch||AZo,Mll=3e3,Lll=2e4,yZo=1250;var Cie;(function(e){e[e.DIR=1]="DIR",e[e.FILE=2]="FILE"})(Cie||(Cie={}));var N4e;(function(e){e.CHANGE="change",e.RENAME="rename"})(N4e||(N4e={}));var rqt;(function(e){e.CHANGE="change",e.ERROR="error"})(rqt||(rqt={}));var Sc;(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"})(Sc||(Sc={}));var rN;(function(e){e.ALL="all",e.CLOSE="close",e.ERROR="error",e.READY="ready"})(rN||(rN={}));var Uch=(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 I=Date.now(),C=I-c,S=I-u,O=C>=t||S>=o;return[I,O]},p=I=>{if(u=I,!s)return;let C=s;s=void 0,e.apply(void 0,C)},d=()=>{E(0)},f=()=>{a&&(d(),p(Date.now()))},m=I=>{if(u=I,n)return p(I)},g=I=>{if(i&&s)return p(I);s=void 0},A=()=>{a=void 0;let[I,C]=l();return C?g(I):y(I)},y=I=>{let C=I-c,S=I-u,O=t-C,D=o-S,T=Math.min(O,D);return E(T)},E=I=>{a&&clearTimeout(a),!(I<=0)&&(a=setTimeout(A,I))},v=(...I)=>{let[C,S]=l(),O=!!a;if(s=I,c=C,(S||!a)&&E(t),S)return O?p(C):m(C)};return v.cancel=d,v.flush=f,v},$ti=Uch;var vZo=ye(require("fs"),1),tri=ye(require("path"),1);var Dd=ye(require("fs"),1),LB=require("util");var Wde=(e,t)=>function(...n){return e.apply(void 0,n).catch(t)},wie=(e,t)=>function(...n){try{return e.apply(void 0,n)}catch(i){return t(i)}};var bZo=ye(require("process"),1),Ull=bZo.default.getuid?!bZo.default.getuid():!1,Vll=1e4,iM=()=>{};var nqt={isChangeErrorOk:e=>{if(!nqt.isNodeError(e))return!1;let{code:t}=e;return t==="ENOSYS"||!Ull&&(t==="EINVAL"||t==="EPERM")},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!nqt.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(!nqt.isNodeError(e))throw e;if(!nqt.isChangeErrorOk(e))throw e}},Zv=nqt;var EZo=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=Vll,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()}}}}},_ll=new EZo;var Hde=(e,t)=>function(n){return function i(...o){return _ll.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)})}},Kde=(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 Vch={attempt:{chmod:Wde((0,LB.promisify)(Dd.default.chmod),Zv.onChangeError),chown:Wde((0,LB.promisify)(Dd.default.chown),Zv.onChangeError),close:Wde((0,LB.promisify)(Dd.default.close),iM),fsync:Wde((0,LB.promisify)(Dd.default.fsync),iM),mkdir:Wde((0,LB.promisify)(Dd.default.mkdir),iM),realpath:Wde((0,LB.promisify)(Dd.default.realpath),iM),stat:Wde((0,LB.promisify)(Dd.default.stat),iM),unlink:Wde((0,LB.promisify)(Dd.default.unlink),iM),chmodSync:wie(Dd.default.chmodSync,Zv.onChangeError),chownSync:wie(Dd.default.chownSync,Zv.onChangeError),closeSync:wie(Dd.default.closeSync,iM),existsSync:wie(Dd.default.existsSync,iM),fsyncSync:wie(Dd.default.fsync,iM),mkdirSync:wie(Dd.default.mkdirSync,iM),realpathSync:wie(Dd.default.realpathSync,iM),statSync:wie(Dd.default.statSync,iM),unlinkSync:wie(Dd.default.unlinkSync,iM)},retry:{close:Hde((0,LB.promisify)(Dd.default.close),Zv.isRetriableError),fsync:Hde((0,LB.promisify)(Dd.default.fsync),Zv.isRetriableError),open:Hde((0,LB.promisify)(Dd.default.open),Zv.isRetriableError),readFile:Hde((0,LB.promisify)(Dd.default.readFile),Zv.isRetriableError),rename:Hde((0,LB.promisify)(Dd.default.rename),Zv.isRetriableError),stat:Hde((0,LB.promisify)(Dd.default.stat),Zv.isRetriableError),write:Hde((0,LB.promisify)(Dd.default.write),Zv.isRetriableError),writeFile:Hde((0,LB.promisify)(Dd.default.writeFile),Zv.isRetriableError),closeSync:Kde(Dd.default.closeSync,Zv.isRetriableError),fsyncSync:Kde(Dd.default.fsyncSync,Zv.isRetriableError),openSync:Kde(Dd.default.openSync,Zv.isRetriableError),readFileSync:Kde(Dd.default.readFileSync,Zv.isRetriableError),renameSync:Kde(Dd.default.renameSync,Zv.isRetriableError),statSync:Kde(Dd.default.statSync,Zv.isRetriableError),writeSync:Kde(Dd.default.writeSync,Zv.isRetriableError),writeFileSync:Kde(Dd.default.writeFileSync,Zv.isRetriableError)}},qll=Vch;var eri=ye(require("fs"),1),iqt=ye(require("path"),1);var IZo=()=>{};var _ch=()=>{let e=IZo,t=IZo,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}},Gll=_ch;var qch=()=>{let{promise:e,resolve:t,isPending:r}=Gll(),n=0,i=()=>{n+=1},o=()=>{n-=1,!n&&t()};return i(),queueMicrotask(o),{promise:e,isPending:r,increment:i,decrement:o}},Wll=qch;var Hll={then:e=>{e()}};var Kll=e=>Array.isArray(e)?e:[e],Jll=e=>typeof e=="function";var Gch=(e,t)=>{let r=t?.followSymlinks??!1,n=t?.depth??1/0,i=t?.limit??1/0,o=t?.ignore??[],s=Kll(o).map(oe=>Jll(oe)?oe:me=>oe.test(me)),a=oe=>s.some(me=>me(oe)),c=t?.signal??{aborted:!1},u=t?.onDirents||(()=>{}),l=[],p=new Set,d={},f=[],m=new Set,g={},A=[],y=new Set,E={},v={},I=new Set,C={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{},map:{}},S={directories:l,directoriesNames:p,directoriesNamesToPaths:d,files:f,filesNames:m,filesNamesToPaths:g,symlinks:A,symlinksNames:y,symlinksNamesToPaths:E,map:v},{promise:O,increment:D,decrement:T}=Wll(),M=0,K=(oe,me,Oe,ve)=>{I.has(me)||M>=i||(M+=1,oe.directories.push(me),oe.directoriesNames.add(Oe),l.push(me),p.add(Oe),d.propertyIsEnumerable(Oe)||(d[Oe]=[]),d[Oe].push(me),I.add(me),!(ve>=n)&&(M>=i||fe(me,ve+1)))},Y=(oe,me,Oe)=>{I.has(me)||M>=i||(M+=1,oe.files.push(me),oe.filesNames.add(Oe),f.push(me),m.add(Oe),g.propertyIsEnumerable(Oe)||(g[Oe]=[]),g[Oe].push(me),I.add(me))},Z=(oe,me,Oe,ve)=>{I.has(me)||M>=i||(M+=1,oe.symlinks.push(me),oe.symlinksNames.add(Oe),A.push(me),y.add(Oe),E.propertyIsEnumerable(Oe)||(E[Oe]=[]),E[Oe].push(me),I.add(me),r&&(ve>=n||M>=i||Ce(me,ve+1)))},ae=(oe,me,Oe,ve,ze)=>{c.aborted||a(me)||(ve.isDirectory()?K(oe,me,Oe,ze):ve.isFile()?Y(oe,me,Oe):ve.isSymbolicLink()&&Z(oe,me,Oe,ze))},le=(oe,me,Oe,ve)=>{if(c.aborted)return;let ze=me===iqt.default.sep?"":iqt.default.sep,et=Oe.name,ot=`${me}${ze}${et}`;a(ot)||(Oe.isDirectory()?K(oe,ot,et,ve):Oe.isFile()?Y(oe,ot,et):Oe.isSymbolicLink()&&Z(oe,ot,et,ve))},ne=(oe,me,Oe,ve)=>{for(let ze=0,et=Oe.length;ze<et;ze++)le(oe,me,Oe[ze],ve)},fe=(oe,me)=>{c.aborted||me>n||M>=i||(D(),eri.default.readdir(oe,{withFileTypes:!0},(Oe,ve)=>{if(Oe||c.aborted||!ve.length)return T();(u(ve)||Hll).then(()=>{let et=v[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};ne(et,oe,ve,me),T()})}))},Ce=(oe,me)=>{D(),eri.default.realpath(oe,(Oe,ve)=>{if(Oe||c.aborted)return T();eri.default.stat(ve,(ze,et)=>{if(ze||c.aborted)return T();let ot=iqt.default.basename(ve),ht=v[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};ae(ht,ve,ot,et,me),T()})})};return(async(oe,me=1)=>(oe=iqt.default.normalize(oe),I.add(oe),fe(oe,me),await O,c.aborted?C:S))(e)},Yll=Gch;var Sie={lang:{debounce:$ti,attempt:e=>{try{return e()}catch(t){return Sie.lang.castError(t)}},castArray:e=>Sie.lang.isArray(e)?e:[e],castError:e=>Sie.lang.isError(e)?e:Sie.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(Sie.lang.isNaN(e))return Sie.lang.isNaN(t);if(Sie.lang.isPrimitive(e)||Sie.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(tri.default.sep).length-1),getRealPath:(e,t)=>{try{return t?vZo.default.realpathSync.native(e):vZo.default.realpathSync(e)}catch{return}},isSubPath:(e,t)=>t.startsWith(e)&&t[e.length]===tri.default.sep&&t.length-e.length>tri.default.sep.length,poll:(e,t=Lll)=>qll.retry.stat(t)(e,{bigint:!0}).catch(Sie.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 Yll(e,{depth:r,limit:n,ignore:t,signal:i});return[s.directories,s.files]}}}},Zl=Sie;var rri=ye(require("path"),1);var xZo=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||Zl.fs.isSubPath(this.folderPath,t)}_makeHandlerBatched(t=Qll){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=Zl.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===Sc.CHANGE&&a===Sc.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===Sc.ADD_DIR?await this.eventsPopulateAddDir(t,i,r,n):s===Sc.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??hPe:Math.min(1,this.options.depth??hPe),s=this.options.limit??tqt,[a,c]=await Zl.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())Zl.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(Sc.ADD,t))}onTargetAddDir(t){t!==this.folderPath&&this.options.recursive&&!gPe&&this.options.native!==!1&&this.watcher.watchDirectory(t,this.options,this.handler,void 0,this.base||this),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAddDir(t,this.options.renameTimeout):this.watcher.event(Sc.ADD_DIR,t))}onTargetChange(t){this._isSubRoot(t)&&this.watcher.event(Sc.CHANGE,t)}onTargetUnlink(t){this.watcher.watchersClose(rri.default.dirname(t),t,!1),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlink(t,this.options.renameTimeout):this.watcher.event(Sc.UNLINK,t))}onTargetUnlinkDir(t){this.watcher.watchersClose(rri.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(Sc.UNLINK_DIR,t))}onTargetEvent(t){let[r,n]=t;r===Sc.ADD?this.onTargetAdd(n):r===Sc.ADD_DIR?this.onTargetAddDir(n):r===Sc.CHANGE?this.onTargetChange(n):r===Sc.UNLINK?this.onTargetUnlink(n):r===Sc.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=N4e.CHANGE,r){if(this.watcher.isClosed())return;let n=rri.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){AZo&&t.code==="EPERM"?this.onWatcherChange(N4e.CHANGE,""):this.watcher.error(t)}async init(){await this.initWatcherEvents(),await this.initInitialEvents()}async initWatcherEvents(){let t=this.onWatcherChange.bind(this);this.fswatcher.on(rqt.CHANGE,t);let r=this.onWatcherError.bind(this);this.fswatcher.on(rqt.ERROR,r)}async initInitialEvents(){let t=!this.watcher.isReady();if(this.filePath){if(this.watcher._poller.stats.has(this.filePath))return;await this.onWatcherEvent(N4e.CHANGE,this.filePath,t)}else{let r=this.options.recursive&&gPe&&this.options.native!==!1?this.options.depth??hPe:Math.min(1,this.options.depth??hPe),n=this.options.limit??tqt,[i,o]=await Zl.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(N4e.CHANGE,a,t)}))}}},Xll=xZo;var nN={interval:100,intervalId:void 0,fns:new Map,init:()=>{nN.intervalId||(nN.intervalId=setInterval(nN.resolve,nN.interval))},reset:()=>{nN.intervalId&&(clearInterval(nN.intervalId),delete nN.intervalId)},add:(e,t)=>{nN.fns.set(e,Date.now()+t),nN.init()},remove:e=>{nN.fns.delete(e)},resolve:()=>{if(!nN.fns.size)return nN.reset();let e=Date.now();for(let[t,r]of nN.fns)r>=e||(nN.remove(t),t())}},oqt=nN;var sqt=class e{constructor(t){this._watcher=t,this.reset()}getLockAdd(t,r=yZo){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(Zl.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),oqt.remove(u)},u=()=>{c(),a()};oqt.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=yZo){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),oqt.remove(u)},u=()=>{c(),a()};oqt.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,Sc.ADD,Cie.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,Sc.ADD_DIR,Cie.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,Sc.UNLINK,Cie.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,Sc.UNLINK_DIR,Cie.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}}};sqt.DIR_EVENTS={add:Sc.ADD_DIR,rename:Sc.RENAME_DIR,unlink:Sc.UNLINK_DIR};sqt.FILE_EVENTS={add:Sc.ADD,change:Sc.CHANGE,rename:Sc.RENAME,unlink:Sc.UNLINK};var Zll=sqt;var CZo=class{constructor(){this.map=new Map}clear(){this.map.clear()}delete(t,r){if(Zl.lang.isUndefined(r))return this.map.delete(t);if(this.map.has(t)){let n=this.map.get(t);if(Zl.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(Zl.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(Zl.lang.isUndefined(r))return this.map.has(t);if(this.map.has(t)){let n=this.map.get(t);return Zl.lang.isSet(n)?n.has(r):n===r}return!1}set(t,r){if(this.map.has(t)){let n=this.map.get(t);Zl.lang.isSet(n)?n.add(r):n!==r&&this.map.set(t,new Set([n,r]))}else this.map.set(t,r);return this}},wZo=CZo;var SZo=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}},$ll=SZo;var TZo=class{constructor(){this.inos={},this.paths=new wZo,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 Zl.fs.poll(t,r);if(!(!n||!(n.isFile()||n.isDirectory())))return new $ll(n)}reset(){this.inos={},this.paths=new wZo,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,Sc.ADD,i),[Sc.ADD];if(i.isDirectory())return this.updateIno(t,Sc.ADD_DIR,i),[Sc.ADD_DIR]}else if(n&&!i){if(n.isFile())return this.updateIno(t,Sc.UNLINK,n),[Sc.UNLINK];if(n.isDirectory())return this.updateIno(t,Sc.UNLINK_DIR,n),[Sc.UNLINK_DIR]}else if(n&&i){if(n.isFile()){if(i.isFile())return n.ino===i.ino&&!n.size&&!i.size?[]:(this.updateIno(t,Sc.CHANGE,i),[Sc.CHANGE]);if(i.isDirectory())return this.updateIno(t,Sc.UNLINK,n),this.updateIno(t,Sc.ADD_DIR,i),[Sc.UNLINK,Sc.ADD_DIR]}else if(n.isDirectory()){if(i.isFile())return this.updateIno(t,Sc.UNLINK_DIR,n),this.updateIno(t,Sc.ADD,i),[Sc.UNLINK_DIR,Sc.ADD];if(i.isDirectory())return n.ino===i.ino?[]:(this.updateIno(t,Sc.UNLINK_DIR,n),this.updateIno(t,Sc.ADD_DIR,i),[Sc.UNLINK_DIR,Sc.ADD_DIR])}}return[]}updateIno(t,r,n){let i=this.inos[r]=this.inos[r]||(this.inos[r]={}),o=n.isFile()?Cie.FILE:Cie.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)}}},OZo=TZo;var BZo=class e extends epl.EventEmitter{constructor(t,r,n){super(),this._closed=!1,this._ready=!1,this._closeAborter=new AbortController,this._closeSignal=this._closeAborter.signal,this.on(rN.CLOSE,()=>this._closeAborter.abort()),this._closeWait=new Promise(i=>this.on(rN.CLOSE,i)),this._readyWait=new Promise(i=>this.on(rN.READY,i)),this._locker=new Zll(this),this._roots=new Set,this._poller=new OZo,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&&(Zl.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(rN.CLOSE))}error(t){if(this.isClosed())return!1;let r=Zl.lang.castError(t);return this.emit(rN.ERROR,r)}event(t,r,n){return this.isClosed()?!1:(this.emit(rN.ALL,t,r,n),this.emit(t,r,n))}ready(){return this.isClosed()||this.isReady()?!1:(this._ready=!0,this.emit(rN.READY))}pollerExists(t,r){for(let n of this._pollers)if(n.targetPath===t&&Zl.lang.isShallowEqual(n.options,r))return!0;return!1}subwatcherExists(t,r){for(let n of this._subwatchers)if(n.targetPath===t&&Zl.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)Zl.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 Xll(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=Zl.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=j4e.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??hPe))&&l.handler===n&&(!l.filePath||l.filePath===i)&&l.options.ignore===r.ignore&&!!l.options.native==!!r.native&&(!r.recursive||l.options.recursive&&gPe&&l.options.native!==!1)))return!0;if(!gPe)break;let u=j4e.default.dirname(t);if(s===u)break;s=u}return!1}async watchDirectories(t,r,n,i,o){if(this.isClosed())return;t=Zl.lang.uniq(t).sort();let s;for(let a of t)if(!this.isIgnored(a,r.ignore)&&!this.watcherExists(a,r,n,i))try{let c=!r.recursive||gPe&&r.native!==!1?r:{...r,recursive:!1},l={watcher:nri.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=j4e.default.dirname(a),g=a;await this.watchDirectories([m],f,n,g,p)}}catch(c){this.error(c)}return s}async watchDirectory(t,r,n,i,o){if(!this.isClosed()&&!this.isIgnored(t,r.ignore)){if(!r.recursive||gPe&&r.native!==!1)return this.watchersLock(()=>this.watchDirectories([t],r,n,i,o));{r={...r,recursive:!0};let s=r.depth??hPe,a=r.limit??tqt,[c]=await Zl.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=Zl.fs.getDepth(t);for(let p of c){let d=Zl.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(rN.CLOSE,c),s.watchFile(t,r,o)},c=()=>{this._subwatchers.delete(i),this.removeListener(rN.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=j4e.default.dirname(t);return this.watchDirectory(i,r,n,t)}async watchPollingOnce(t,r,n){if(this.isClosed())return;let i=!1,o=new OZo,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 Zl.lang.noop;if(this.pollerExists(t,r))return Zl.lang.noop;let i={...r,interval:r.pollingInterval??Mll},o={targetPath:t,options:r},s=()=>{this._pollers.add(o),this.on(rN.CLOSE,a),nri.default.watchFile(t,i,n)},a=()=>{this._pollers.delete(o),this.removeListener(rN.CLOSE,a),nri.default.unwatchFile(t,n)};return Zl.lang.attempt(s),()=>Zl.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=Zl.lang.uniq(t).sort(),t.every((o,s)=>t.every((a,c)=>c===s||!Zl.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=j4e.default.resolve(t),this.isIgnored(t,r.ignore)))return;let i=await Zl.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=j4e.default.dirname(t);return(await Zl.fs.poll(o,r.pollingTimeout))?.isDirectory()?this.watchUnknownChild(t,r,n):this.watchUnknownTarget(t,r,n)}}async watch(t,r,n=Zl.lang.noop){if(Zl.lang.isFunction(t))return this.watch([],{},t);if(Zl.lang.isUndefined(t))return this.watch([],r,n);if(Zl.lang.isFunction(r))return this.watch(t,{},r);if(Zl.lang.isUndefined(r))return this.watch(t,{},n);if(this.isClosed())return;this.isReady()&&(r.readdirMap=void 0);let i=Zl.lang.castArray(t);i.forEach(o=>this._roots.add(o)),await this.watchPaths(i,r,n),!this.isClosed()&&(n!==Zl.lang.noop&&this.on(rN.ALL,n),r.readdirMap=void 0,this.ready())}},tpl=BZo;function Wch(e){return"code"in e&&typeof e.code=="string"}function rpl(e){return e instanceof Error?e:new Error(String(e))}function npl(e){return Wch(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 iri({absoluteFilePathToFern:e,additionalFilepaths:t,context:r}){let n=new tpl([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(rpl(c))};n.once("ready",s),n.once("error",a)});return i!=null&&(n.close(),r.failAndThrow(npl(i),i,{code:B.Code.EnvironmentError})),n.on("error",o=>{let s=rpl(o);r.failWithoutThrowing(npl(s),s,{code:B.Code.EnvironmentError}),n.close()}),n}Xt();iC();Qt();En();var oAl=require("child_process"),Ani=ye(zZo(),1),sAl=ye(X$o(),1),GE=require("fs"),GB=require("fs/promises"),aAl=require("os"),oN=ye(require("path"),1),cAl=ye(lE(),1),uAl=ye(iAl(),1),G4e=process.platform==="win32",gni=de.cyan("[docs]:"),vdh="etag",xdh=23,ces=e=>e.padEnd(xdh," "),Cdh="preview",wdh="app-preview",Sdh="bundle",Tdh=".next",Odh="standalone",Bdh=".fern",Pdh="packages/fern-docs/bundle/.next/server/instrumentation.js",Ddh='Cannot find matching keyid: {"signatures":',Rdh="ERR_PNPM_IGNORED_BUILDS";function Fdh(e){try{let r=(0,oAl.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 B({message:`Windows long path support is not enabled. The docs bundle contains deeply nested .pnpm paths that exceed the 260-character MAX_PATH limit.
3659
3659
 
@@ -4222,10 +4222,10 @@ ${i.error?.message??"Unknown error"}`,code:B.Code.ParseError})}lW();var djl=requ
4222
4222
  Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`,void 0,{code:B.Code.AuthError}),orgNotConfiguredForWhitelabel:()=>o.failAndThrow("Your org is not configured for white-labeling. Please reach out to support@buildwithfern.com.",void 0,{code:B.Code.AuthError}),branchDoesNotExist:O=>o.failAndThrow(`Branch ${O.branch} does not exist in repository ${O.repositoryOwner}/${O.repositoryName}`,void 0,{code:B.Code.ConfigError}),rateLimitExceeded:()=>{throw new iVe},_other:O=>{o.logger.debug(`Failed to create job: ${JSON.stringify(O)}`);let D=ykh(O);return D!=null?o.failAndThrow(D,void 0,{code:B.Code.NetworkError}):o.failAndThrow("Failed to create job. Please try again or contact support@buildwithfern.com for assistance.",void 0,{code:B.Code.NetworkError})}})}return I.body}async function Akh({intermediateRepresentation:e,generatorInvocation:t,job:r,context:n,irVersionOverride:i,specsTarGzBuffer:o}){let s=await xMe(t).then(m=>m==null?void 0:"v"+m.toString()),a=i??s,c=a==null?await V5t({intermediateRepresentation:e,context:n,targetGenerator:{name:t.name,version:t.version}}):await Iqo({intermediateRepresentation:e,context:n,irVersion:a,targetGenerator:{name:t.name,version:t.version}}),u=new kPl.default,l=await Rsr(c,{onWrite:m=>{n.logger.debug("Wrote IR to disk: "+m)}}),p=new TextEncoder().encode(l),d=await hkh(p);n.logger.debug(`Compressed IR from ${p.byteLength} bytes to ${d.length} bytes (${((1-d.length/p.byteLength)*100).toFixed(1)}% reduction)`),u.append("ir",d,{filename:"ir.json",contentType:"application/octet-stream"}),o!=null&&(u.append("specs",o,{filename:"specs.tar.gz",contentType:"application/gzip"}),n.logger.debug(`Appended specs tar.gz (${o.length} bytes)`));let f=(0,NPl.default)(CMe(),`/api/remote-gen/jobs/${r.jobId}/start`);try{await dy.post(f,u,{headers:u.getHeaders(),maxBodyLength:1/0})}catch(m){let g=m instanceof Auu?m.response?.data:m;n.logger.debug(`POST ${f} failed with ${JSON.stringify(m)}`),n.failAndThrow("Failed to start job",g,{code:B.Code.NetworkError})}}function ykh(e){let t;if(e?.reason==="status-code"?t=e.body:e?.content?.reason==="status-code"&&(t=e.content.body),typeof t?.content?.message=="string")return t.content.message;if(typeof t?.message=="string")return t.message}function bkh(e){let t=e?.content?.reason==="status-code"?e.content.body:void 0;return t?.error!=="GithubAppNotInstalled"?void 0:typeof t?.content?.message=="string"?t.content.message:`The Fern GitHub App is not installed on ${typeof t?.content?.repositoryName=="string"?t.content.repositoryName:"the target repository"}. Please install it (https://github.com/apps/fern-api) and try again.`}function Ekh(e){let t=e?.content?.body?.content?.retryAfter;return typeof t=="number"&&t>0?t:void 0}function Ikh(e){if(e?.content?.reason==="status-code"){let t=e.content.body;switch(t?.error){case"IllegalApiNameError":return Vr.remoteGen.createJobV3.Error.illegalApiNameError();case"IllegalApiVersionError":return Vr.remoteGen.createJobV3.Error.illegalApiVersionError(t.content);case"GeneratorsDoNotExistError":return Vr.remoteGen.createJobV3.Error.generatorsDoNotExistError(t.content);case"CannotPublishToNpmScope":return Vr.remoteGen.createJobV3.Error.cannotPublishToNpmScope(t.content);case"CannotPublishToMavenScope":return Vr.remoteGen.createJobV3.Error.cannotPublishToMavenGroup(t.content);case"CannotPublishPypiPackage":return Vr.remoteGen.createJobV3.Error.cannotPublishPypiPackage(t.content);case"InsufficientPermissions":return Vr.remoteGen.createJobV3.Error.insufficientPermissions(t.content);case"OrgNotConfiguredForWhitelabel":return Vr.remoteGen.createJobV3.Error.orgNotConfiguredForWhitelabel(t.content);case"BranchDoesNotExist":return Vr.remoteGen.createJobV3.Error.branchDoesNotExist(t.content)}}return e}function vkh({outputMode:e,generatorInvocation:t,absolutePathToPreview:r,shouldLogS3Url:n}){return e.type==="downloadFiles"||t.absolutePathToLocalSnippets!=null||r!=null||n}Qt();om();var MPl=xpe();var xkh=3;function LPl({job:e,taskId:t,taskHandler:r,context:n}){let i=0,o=async()=>{let s=await MPl.remoteGen.getJobStatus(e.jobId);if(s.ok)return s.body[t];n.logger.debug("Failed to get job status.",JSON.stringify(s.error.content))};return new Promise((s,a)=>{c();async function c(){try{let u=await o();if(u==null)i++,i===xkh&&n.failAndThrow(`Failed to get job status after ${i} attempts.`,void 0,{code:B.Code.NetworkError}),setTimeout(c,2e3+1e3*i);else{i=0;let l=await r.processUpdate(u);r.isFinished?s(l):setTimeout(c,2e3)}}catch(u){a(u)}}})}Va();Dt();Xt();var ijl=ye(opi(),1);Ab();iC();Qt();OW();En();var cpi=require("fs"),CM=require("fs/promises"),gVe=ye(require("path"),1),Jps=require("stream/promises");xzr();var spi=ye(njl(),1);function Lme(e,t,{target:r="stdout",...n}={}){return spi.default[r]?AW.link(e,t):n.fallback===!1?e:typeof n.fallback=="function"?n.fallback(e,t):`${e} (\u200B${t}\u200B)`}Lme.isSupported=spi.default.stdout;Lme.stderr=(e,t,r={})=>Lme(e,t,{target:"stderr",...r});Lme.stderr.isSupported=spi.default.stderr;var upi=ye(lE(),1),ojl=ye(Zri(),1);var mLh=/^Pipeline: raw result \(\d+ bytes\): (\{.*\})$/,api=class{context;generatorInvocation;absolutePathToPreview;telemetryContext;lengthOfLastLogs=0;cachedReplayResult;replayEventEmitted=!1;taskStartedAtMs=Date.now();constructor({interactiveTaskContext:t,generatorInvocation:r,absolutePathToPreview:n,telemetryContext:i}){this.context=t,this.generatorInvocation=r,this.absolutePathToPreview=n,this.telemetryContext=i}async processUpdate(t){t==null&&this.context.failAndThrow("Task is missing on job status",void 0,{code:B.Code.InternalError});let r=t.packages.map(i=>i.coordinate._visit({npm:o=>`${o.name}@${o.version}`,maven:o=>`${o.group}:${o.artifact}:${o.version}`,pypi:o=>`${o.name} ${o.version}`,ruby:o=>`${o.name}:${o.version}`,nuget:o=>`${o.name} ${o.version}`,crates:o=>`${o.name} ${o.version}`,_other:()=>"<unknown package>"}));t.packages.length>0&&this.#n==null&&(this.#n=t.packages[0]?.coordinate._visit({npm:i=>i.version,maven:i=>i.version,pypi:i=>i.version,ruby:i=>i.version,nuget:i=>i.version,crates:i=>i.version,_other:()=>{}})),this.#i==null&&(this.#i=sPl(t.packages)),this.absolutePathToPreview==null&&this.context.setSubtitle(r.length>0?r.map(i=>`\u25E6 ${i}`).join(`
4223
4223
  `):void 0);for(let i of t.logs.slice(this.lengthOfLastLogs))this.context.logger.log(vLh(i.level),i.message),this.#n==null&&(this.#n=gLh(i.message)??this.#n),this.cachedReplayResult==null&&(this.cachedReplayResult=ALh(i.message));this.lengthOfLastLogs=t.logs.length;let n=i=>{this.context.logger.debug(`Generated files. ${Lme("View here",i,{fallback:(o,s)=>`${o}: ${s}`})}`)};return await t.status._visit({notStarted:gt,running:gt,failed:({message:i,s3PreSignedReadUrl:o})=>{o!=null&&n(o),this.context.failAndThrow(i,void 0,{code:B.Code.ContainerError})},finished:async i=>{if(i.s3PreSignedReadUrlV2!=null){n(i.s3PreSignedReadUrlV2);let o=this.getAbsolutePathToLocalOutput();o!=null&&await ELh({s3PreSignedReadUrl:i.s3PreSignedReadUrlV2,absolutePathToLocalOutput:o,context:this.context})}if(this.absolutePathToPreview==null)for(let o of r)this.context.logger.info(`Published ${o}`);this.#e=!0,this.#t=i.createdSnippets!=null?i.createdSnippets:!1,this.#r=i.snippetsS3PreSignedReadUrl,this.#o=i.pullRequestUrl,this.#s=i.noChangesDetected,i.actualVersion!=null&&(this.#n=i.actualVersion),this.emitReplayTelemetryIfReady()},_other:()=>{this.context.logger.warn("Received unknown update type: "+t.status.type)}}),this.#e?{createdSnippets:this.#t,snippetsS3PreSignedReadUrl:this.#r,actualVersion:this.#n,pullRequestUrl:this.#o,noChangesDetected:this.#s,publishTarget:this.#i}:void 0}getAbsolutePathToLocalOutput(){return this.absolutePathToPreview!=null?We(this.absolutePathToPreview,we.of(gVe.default.basename(this.generatorInvocation.name))):this.generatorInvocation.absolutePathToLocalOutput}emitReplayTelemetryIfReady(){if(!this.replayEventEmitted&&this.cachedReplayResult!=null&&!this.telemetryContext.disableTelemetry)try{let t={success:!0,steps:{replay:this.cachedReplayResult},warnings:[]},n={...(0,ijl.buildReplayTelemetryProps)({pipelineResult:t,generatorName:this.generatorInvocation.name,generatorVersion:this.generatorInvocation.version,cliVersion:this.telemetryContext.cliVersion,repoUri:yLh(this.generatorInvocation),automationMode:this.telemetryContext.automationMode,autoMerge:this.telemetryContext.autoMerge,skipIfNoDiff:this.telemetryContext.skipIfNoDiff,hasBreakingChanges:!1,versionArg:this.telemetryContext.versionArg,versionBump:this.telemetryContext.versionBump,replayConfigEnabled:this.telemetryContext.replayConfigEnabled,noReplayFlag:this.telemetryContext.noReplayFlag,githubMode:bLh(this.generatorInvocation),previewMode:this.absolutePathToPreview!=null,durationMs:Date.now()-this.taskStartedAtMs}),surface:"fiddle",org_id:this.telemetryContext.orgId};this.context.instrumentPostHogEvent({command:"replay",properties:n}),this.context.logger.debug(`[telemetry] replay event sent: ${JSON.stringify(n)}`),this.replayEventEmitted=!0}catch(t){this.context.logger.debug(`[telemetry] failed to send replay event: ${String(t)}`)}}#e=!1;get isFinished(){return this.#e}#t=!1;get createdSnippets(){return this.#t}#r=void 0;get snippetsS3PreSignedReadUrl(){return this.#r}#n=void 0;get actualVersion(){return this.#n}#i=void 0;get publishTarget(){return this.#i}#o=void 0;get pullRequestUrl(){return this.#o}#s=void 0;get noChangesDetected(){return this.#s}},hLh=/Tagging release (v?\d+\.\d+\.\d+(?:-[\w.-]+)?)/;function gLh(e){let t=e.match(hLh);if(t?.[1]!=null)return t[1].replace(/^v/,"")}function ALh(e){let t=e.match(mLh);if(t?.[1]!=null)try{return JSON.parse(t[1])?.steps?.replay}catch{return}}function yLh(e){let t=e.raw?.github;return t==null?"":"uri"in t&&typeof t.uri=="string"?t.uri:"repository"in t&&typeof t.repository=="string"?t.repository:""}function bLh(e){let t=e.raw?.github;if(t!=null&&"mode"in t){if(t.mode==="pull-request")return"pull-request";if(t.mode==="commit-and-release")return"commit-and-release"}return"push"}async function ELh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){try{let n=await xLh(t),i=await CLh(t);n&&i?await wLh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}):n&&!i?await SLh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}):await ILh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}),r.logger.info(de.green(`Downloaded to ${t}`))}catch(n){r.failAndThrow("Failed to download files",n,{code:B.Code.NetworkError})}}var sjl=300*1e3;async function ILh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}){let r=await dy.get(e,{responseType:"stream",timeout:6e4,signal:AbortSignal.timeout(sjl)}),n=await upi.default.dir({prefix:"fern",unsafeCleanup:!0}),i=gVe.default.join(n.path,"output.zip");await(0,Jps.pipeline)(r.data,(0,cpi.createWriteStream)(i)),await Kps(t),await(0,CM.mkdir)(t,{recursive:!0}),await ujl(i,t)}async function Kps(e){await rr(e)&&(await ajl(e),await(0,CM.rm)(e,{recursive:!0,force:!0}))}async function ajl(e){try{let t=await(0,CM.readdir)(e,{withFileTypes:!0});for(let r of t){let n=Vt.of(gVe.default.join(e,r.name));r.isDirectory()&&await ajl(n);try{await(0,CM.chmod)(n,493)}catch{}}await(0,CM.chmod)(e,493)}catch{}}function vLh(e){switch(e){case"DEBUG":return Un.Debug;case"INFO":return Un.Info;case"WARN":return Un.Warn;case"ERROR":return Un.Error;default:return Un.Info}}async function xLh(e){let t=We(e,we.of(VP));return await rr(t)}async function CLh(e){let t=We(e,we.of(".git"));return await rr(t)}async function wK(e,t,r){return(await xc(r.logger,"git",e,{cwd:t,doNotPipeOutput:!0})).stdout}async function wLh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){let n=We(t,we.of(VP)),i=await Gye({absolutePathToFernignore:n});await wK(["rm","-rf","."],t,r),await cjl({s3PreSignedReadUrl:e,outputPath:t}),await wK(["add","."],t,r),await wK(["reset","--",...i],t,r),await wK(["restore","."],t,r)}async function SLh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){let n=Vt.of((await upi.default.dir({})).path),i=We(t,we.of(VP)),o=await Gye({absolutePathToFernignore:i});await(0,CM.cp)(t,n,{recursive:!0}),await wK(["init"],n,r),await wK(["add","."],n,r),await wK(["-c","user.name=fern","-c","user.email=hey@buildwithfern.com","-c","commit.gpgsign=false","commit","--allow-empty","--no-verify","-m","init"],n,r),await wK(["rm","-rf","."],n,r),await cjl({s3PreSignedReadUrl:e,outputPath:n}),await wK(["add","."],n,r),await wK(["reset","--",...o],n,r),await wK(["restore","."],n,r),await Kps(We(n,we.of(".git"))),await Kps(t),await(0,CM.cp)(n,t,{recursive:!0})}async function cjl({s3PreSignedReadUrl:e,outputPath:t}){let r=await dy.get(e,{responseType:"stream",timeout:6e4,signal:AbortSignal.timeout(sjl)}),n=await upi.default.dir({prefix:"fern",unsafeCleanup:!0}),i=gVe.default.join(n.path,"output.zip");await(0,Jps.pipeline)(r.data,(0,cpi.createWriteStream)(i)),await ujl(i,t)}async function ujl(e,t){return new Promise((r,n)=>{ojl.default.open(e,{lazyEntries:!0},(i,o)=>{if(i||!o){n(i??new Error("Failed to open zip file"));return}o.on("error",n),o.on("end",r),o.on("entry",s=>{let a=gVe.default.join(t,s.fileName);if(s.fileName.endsWith("/")){(0,CM.mkdir)(a,{recursive:!0}).then(()=>o.readEntry()).catch(n);return}(0,CM.mkdir)(gVe.default.dirname(a),{recursive:!0}).then(()=>{o.openReadStream(s,(c,u)=>{if(c||!u){n(c??new Error("Failed to open read stream"));return}u.pipe((0,cpi.createWriteStream)(a)).on("finish",()=>o.readEntry()).on("error",n)})}).catch(n)}),o.readEntry()})})}Xt();Ln();iC();Qt();var lpi=require("fs/promises"),ljl=ye(lE(),1),TLh="proto.zip",lWt=class{sourceTypes;context;sources;constructor(t,r){this.context=t,this.sources=Object.fromEntries(r.map(n=>[n.id,n])),this.sourceTypes=new Set(Object.values(this.sources).map(n=>n.type))}async uploadSources(t){for(let[r,n]of Object.entries(t)){let i=this.getSourceOrThrow(r);await this.uploadSource(i,n.uploadUrl)}return this.convertFdrSourceUploadsToSourceConfig(t)}async uploadSource(t,r){let n=await this.getUploadCommand(t),i=await(0,lpi.readFile)(n.absoluteFilePath),o;try{o=await fetch(r,{method:"PUT",body:i,headers:{"Content-Type":"application/octet-stream"}})}catch(s){await n.cleanup(),this.context.failAndThrow(`Network error uploading source file: ${t.absoluteFilePath}`,s,{code:B.Code.NetworkError});return}await n.cleanup(),o.ok||this.context.failAndThrow(`Failed to upload source file: ${t.absoluteFilePath}. Status: ${o.status}, ${o.statusText}`,void 0,{code:B.Code.NetworkError})}async getUploadCommand(t){if(t.type==="protobuf"){let r=await this.zipSource(t.absoluteFilePath);return{absoluteFilePath:r,cleanup:async()=>{this.context.logger.debug(`Removing ${r}`),await(0,lpi.unlink)(r)}}}return{absoluteFilePath:t.absoluteFilePath,cleanup:async()=>{}}}async zipSource(t){let r=await ljl.default.dir(),n=We(Vt.of(r.path),we.of(TLh));return this.context.logger.debug(`Zipping source ${t} into ${n}`),await xc(this.context.logger,"zip",["-r",n,"."],{cwd:t,doNotPipeOutput:!0}),n}convertFdrSourceUploadsToSourceConfig(t){let r=[];for(let[n,i]of Object.entries(t))switch(this.getSourceOrThrow(n).type){case"protobuf":r.push(hj.proto({id:n,protoRootUrl:i.downloadUrl}));continue;case"openapi":r.push(hj.openapi());continue;case"asyncapi":continue}return{sources:r}}getSourceOrThrow(t){let r=this.sources[t];return r==null&&this.context.failAndThrow(`Internal error; server responded with source id "${t}" which does not exist in the workspace.`,void 0,{code:B.Code.InternalError}),r}};async function fjl({projectConfig:e,organization:t,workspace:r,interactiveTaskContext:n,generatorInvocation:i,version:o,audiences:s,shouldLogS3Url:a,token:c,whitelabel:u,replay:l,irVersionOverride:p,absolutePathToPreview:d,isPreview:f,fiddlePreview:m,pushPreviewBranch:g,readme:A,fernignorePath:y,skipFernignore:E,dynamicIrOnly:v,retryRateLimited:I,requireEnvVars:C,automationMode:S,autoMerge:O,skipIfNoDiff:D,verify:T,noReplay:M,disableTelemetry:K,loginCommand:Y,specsTarGzBuffer:Z}){let ae=Nk({token:c.value}),ne=await o3t("https://registry.buildwithfern.com/health",n.logger),fe=Nn.getPackageName({generatorInvocation:i}),Ce=f??d!=null,Fe=nt=>XA(nt,{onError:He=>{!Ce&&C&&n.failAndThrow(void 0,He,{code:B.Code.EnvironmentError})}},{substituteAsEmpty:Ce}),oe=Fe(i),me=rVe({apiName:r.definition.rootApiFile.contents.name,organization:t,generatorInvocation:oe}),Oe=o??await xyr({packageName:fe,generatorInvocation:i});o!=null&&(Ce?n.logger.warn(`Skipping version availability check in preview mode. Version ${o} may already exist on the package registry.`):await cAr({version:o,packageName:fe,generatorInvocation:i,context:n}));let ve=Oe!=null&&(0,pWt.isAutoVersion)(Oe)?pWt.MAGIC_VERSION:Oe,ze=Eye(i),et=Iye(i),ot=Og({workspace:r,generationLanguage:i.language,keywords:i.keywords,smartCasing:i.smartCasing,exampleGeneration:{disabled:i.disableExamples,skipAutogenerationIfManualExamplesExist:!0,skipErrorAutogenerationIfManualErrorExamplesExist:!1},audiences:s,readme:A,packageName:fe,userAgentTemplate:ze,idempotencyKeyGeneration:et,organization:t,version:ve,context:n,sourceResolver:new wh(n,r),dynamicGeneratorConfig:me,generationMetadata:{cliVersion:r.cliVersion,generatorName:i.name,generatorVersion:i.version,generatorConfig:i.config,originGitCommit:DY(),originGitCommitIsDirty:RY(),invokedBy:BY(),requestedVersion:o,ciProvider:PY()}}),ht=xf({token:c.value});if(!ne){let nt=await ht.organization.get({orgId:e.organization});nt.ok&&(nt.body.isWhitelabled&&(ot.readmeConfig==null&&(ot.readmeConfig=PLh),ot.readmeConfig.whiteLabel=!0),ot.selfHosted=nt.body.selfHostedSdKs)}let pt=r.getSources(),Zt,fr,Ae=TT({ir:ot,snippetsConfig:{typescriptSdk:void 0,pythonSdk:void 0,javaSdk:void 0,rubySdk:void 0,goSdk:void 0,csharpSdk:void 0,phpSdk:void 0,swiftSdk:void 0,rustSdk:void 0},context:n});try{let nt=await ae.api.register.registerApiDefinition({orgId:un.OrgId(t),apiId:un.ApiId(Mr(ot.apiName)),definition:Ae,sources:pt.length>0?BLh(pt):void 0});Zt=nt.apiDefinitionId,fr=nt.sources??void 0}catch(nt){new lWt(n,pt).sourceTypes.has("protobuf")&&n.failAndThrow(`Failed to register API definition: ${JSON.stringify(nt)}`)}let ce=new lWt(n,pt);if(fr==null&&ce.sourceTypes.has("protobuf")&&n.failAndThrow("Did not successfully upload Protobuf source files.",void 0,{code:B.Code.NetworkError}),fr!=null){n.logger.debug("Uploading source files ...");let nt=await ce.uploadSources(fr);n.logger.debug("Setting IR source configuration ..."),ot.sourceConfig=nt}if(v){if(n.logger.info("Dynamic IR only mode: skipping SDK generation and uploading dynamic IR only"),o==null){n.failAndThrow("Version is required for dynamic IR only mode",void 0,{code:B.Code.ConfigError});return}if(i.language==null){n.failAndThrow("Language is required for dynamic IR only mode",void 0,{code:B.Code.ConfigError});return}if(fe==null){n.failAndThrow("Package name is required for dynamic IR only mode",void 0,{code:B.Code.ConfigError});return}try{await pjl({fdr:ae,organization:t,version:o,language:i.language,packageName:fe,ir:ot,smartCasing:i.smartCasing,dynamicGeneratorConfig:me,context:n})}catch(nt){n.failAndThrow(`Failed to upload dynamic IR: ${Mn(nt)}`,void 0,{code:B.Code.NetworkError})}return{createdSnippets:!1,snippetsS3PreSignedReadUrl:void 0,actualVersion:o,pullRequestUrl:void 0,noChangesDetected:void 0,publishTarget:void 0}}let Ge=await zPl({projectConfig:e,workspace:r,organization:t,generatorInvocation:oe,context:n,version:Oe,intermediateRepresentation:{...ot,fdrApiDefinitionId:Zt,publishConfig:OLh({generatorInvocation:oe})},shouldLogS3Url:a,token:c,whitelabel:u!=null?Fe(u):void 0,replay:l,irVersionOverride:p,absolutePathToPreview:d,fiddlePreview:m,pushPreviewBranch:g,fernignorePath:y,skipFernignore:E,retryRateLimited:I,automationMode:S,autoMerge:O,skipIfNoDiff:D,verify:T,loginCommand:Y,specsTarGzBuffer:Z});n.logger.debug(`Job ID: ${Ge.jobId}`);let lt=Ge.taskIds[0];if(lt==null){n.failAndThrow("Did not receive a task ID.",void 0,{code:B.Code.NetworkError});return}n.logger.debug(`Task ID: ${lt}`);let Ee=new api({job:Ge,taskId:lt,generatorInvocation:i,interactiveTaskContext:n,absolutePathToPreview:d,telemetryContext:{cliVersion:r.cliVersion,orgId:e.organization,automationMode:S===!0,autoMerge:O===!0,skipIfNoDiff:D===!0,versionArg:o==null?"none":(0,pWt.isAutoVersion)(o)?"auto":"explicit",versionBump:void 0,replayConfigEnabled:l?.enabled===!0,noReplayFlag:M===!0,disableTelemetry:K===!0}}),De=await LPl({job:Ge,taskHandler:Ee,taskId:lt,context:n});if(De!=null&&De.actualVersion==null){let nt=DLh(Oe);nt!=null&&(De={...De,actualVersion:nt})}let dt=De?.actualVersion??Oe;if(De!=null&&dt!=null&&i.language!=null&&fe!=null&&!Ce)try{await pjl({fdr:ae,organization:t,version:dt,language:i.language,packageName:fe,ir:ot,smartCasing:i.smartCasing,dynamicGeneratorConfig:me,context:n})}catch(nt){n.logger.warn(`Failed to upload dynamic IR for SDK generation: ${Mn(nt)}`)}return De}function OLh({generatorInvocation:e}){return e.outputMode._visit({downloadFiles:()=>{},github:()=>{},githubV2:()=>{},publish:()=>{},publishV2:t=>t._visit({mavenOverride:()=>{},pypiOverride:()=>{},nugetOverride:()=>{},npmOverride:()=>{},rubyGemsOverride:()=>{},cratesOverride:()=>{},postman:r=>{let n;return e.raw?.output?.location==="postman"&&(n=e.raw.output?.["collection-id"]),Ut.PublishingConfig.direct({target:Ut.PublishTarget.postman({apiKey:r.apiKey,workspaceId:r.workspaceId,collectionId:n})})},_other:()=>{}}),_other:()=>{}})}function BLh(e){return Object.fromEntries(Object.values(e).map(t=>[t.id,{type:t.type==="protobuf"?"proto":t.type}]))}var PLh={defaultEndpoint:void 0,bannerLink:void 0,introduction:void 0,apiReferenceLink:void 0,apiName:void 0,disabledFeatures:void 0,whiteLabel:void 0,customSections:void 0,features:void 0,exampleStyle:void 0};async function pjl({fdr:e,organization:t,version:r,language:n,packageName:i,ir:o,smartCasing:s,dynamicGeneratorConfig:a,context:c}){c.logger.debug(`Uploading dynamic IR for ${n} SDK...`);let u;try{u=await e.api.register.getSdkDynamicIrUploadUrls({orgId:un.OrgId(t),version:r,snippetConfiguration:{[n]:i}})}catch(f){c.logger.warn(`Failed to get dynamic IR upload URLs (non-fatal, dynamic snippets may be stale): ${f}`);return}let l=u.uploadUrls[n]?.uploadUrl;if(l==null){c.logger.warn(`No upload URL returned for ${n}`);return}let p=oMe({ir:o,disableExamples:!0,smartCasing:s,generationLanguage:n,generatorConfig:a}),d=JSON.stringify(p);try{let f=await fetch(l,{method:"PUT",body:d,headers:{"Content-Type":"application/octet-stream","Content-Length":d.length.toString()}});f.ok?c.logger.debug(`Uploaded dynamic IR for ${n}:${i} (${r})`):c.logger.warn(`Failed to upload dynamic IR for ${n}: ${f.status}`)}catch(f){c.logger.warn(`Network error uploading dynamic IR for ${n}: ${f}`)}}function DLh(e){if(e!=null&&e.toUpperCase()!=="AUTO")return e}async function kDe({projectConfig:e,organization:t,workspace:r,context:n,generatorGroup:i,version:o,shouldLogS3Url:s,token:a,whitelabel:c,replay:u,absolutePathToPreview:l,isPreview:p,fiddlePreview:d,pushPreviewBranch:f,mode:m,fernignorePath:g,skipFernignore:A,dynamicIrOnly:y,validateWorkspace:E,retryRateLimited:v,requireEnvVars:I,automationMode:C,autoMerge:S,skipIfNoDiff:O,verify:D,noReplay:T,disableTelemetry:M,automation:K,occurrenceTracker:Y,loginCommand:Z,getSpecsTarGzBuffer:ae}){if(i.generators.length===0)return n.logger.warn("No generators specified."),null;let le=[],ne=Y??new $Ue;Y==null&&ne.recordOccurrences(i.generators);let fe=r.generatorsConfiguration?.absolutePathToConfiguration,Ce=await Promise.all(i.generators.map(Fe=>n.runInteractiveTask({name:Fe.name},oe=>RLh({generatorInvocation:Fe,interactiveTaskContext:oe,projectConfig:e,organization:t,workspace:r,context:n,generatorGroup:i,version:o,shouldLogS3Url:s,token:a,whitelabel:c,replay:u,absolutePathToPreview:l,isPreview:p,fiddlePreview:d,pushPreviewBranch:f,mode:m,fernignorePath:g,skipFernignore:A,dynamicIrOnly:y,validateWorkspace:E,retryRateLimited:v,requireEnvVars:I,automationMode:C,autoMerge:S,skipIfNoDiff:O,verify:D,noReplay:T,disableTelemetry:M,automation:K,generatorsYmlAbsolutePath:fe,occurrenceTracker:ne,loginCommand:Z,getSpecsTarGzBuffer:ae,onSnippetsProduced:me=>le.push(me)}))));if(K==null&&Ce.some(Fe=>!Fe))throw new tu;return{snippetsProducedBy:le}}async function RLh({generatorInvocation:e,interactiveTaskContext:t,projectConfig:r,organization:n,workspace:i,context:o,generatorGroup:s,version:a,shouldLogS3Url:c,token:u,whitelabel:l,replay:p,absolutePathToPreview:d,isPreview:f,fiddlePreview:m,pushPreviewBranch:g,mode:A,fernignorePath:y,skipFernignore:E,dynamicIrOnly:v,validateWorkspace:I,retryRateLimited:C,requireEnvVars:S,automationMode:O,autoMerge:D,skipIfNoDiff:T,verify:M,noReplay:K,disableTelemetry:Y,automation:Z,generatorsYmlAbsolutePath:ae,occurrenceTracker:le,loginCommand:ne,getSpecsTarGzBuffer:fe,onSnippetsProduced:Ce}){let Fe=Date.now();try{let oe=PXe(e),me=await i.toFernWorkspace({context:o},oe,e.apiOverride?.specs);I&&await vK({workspace:me,context:o,logWarnings:!1,ossWorkspace:i instanceof Ep?i:void 0});let Oe=E?void 0:y??await CPl({generatorInvocation:e,context:t}),ve=await fjl({projectConfig:r,organization:n,workspace:me,interactiveTaskContext:t,generatorInvocation:{...e,outputMode:e.outputMode._visit({downloadFiles:()=>e.outputMode,github:ze=>Vr.OutputMode.github({...ze,makePr:A==="pull-request"}),githubV2:ze=>A==="pull-request"?Vr.OutputMode.githubV2(Vr.GithubOutputModeV2.pullRequest(ze)):e.outputMode,publish:()=>e.outputMode,publishV2:()=>e.outputMode,_other:()=>e.outputMode})},version:a,audiences:s.audiences,shouldLogS3Url:c,token:u,whitelabel:l,replay:p,readme:e.readme,irVersionOverride:e.irVersionOverride,absolutePathToPreview:d,isPreview:f,fiddlePreview:m,pushPreviewBranch:g,fernignorePath:Oe,skipFernignore:E,dynamicIrOnly:v,retryRateLimited:C,requireEnvVars:S,automationMode:O,autoMerge:D,skipIfNoDiff:T,verify:M,noReplay:K,disableTelemetry:Y,loginCommand:ne,specsTarGzBuffer:await fe?.(e.name)});if(ve?.createdSnippets&&(Ce(e),e.absolutePathToLocalSnippets!=null&&ve.snippetsS3PreSignedReadUrl!=null&&await xPl({snippetsS3PreSignedReadUrl:ve.snippetsS3PreSignedReadUrl,absolutePathToLocalSnippetJSON:e.absolutePathToLocalSnippets,context:t})),Z!=null){let ze=ae!=null?await tVe(ae,e.name,le.lookup(e)):void 0;Z.recorder.recordSuccess({apiName:i.workspaceName,groupName:s.groupName,generatorName:e.name,version:ve?.actualVersion??null,durationMs:Date.now()-Fe,pullRequestUrl:ve?.pullRequestUrl,noChangesDetected:ve?.noChangesDetected,publishTarget:ve?.publishTarget,outputRepoUrl:eVe(e),generatorsYmlAbsolutePath:ae,generatorsYmlLineNumber:ze})}await FLh({pullRequestUrl:ve?.pullRequestUrl,publishTarget:ve?.publishTarget,noChangesDetected:ve?.noChangesDetected,version:ve?.actualVersion,generatorName:e.name,groupName:s.groupName,apiName:i.workspaceName,isAutomation:Z!=null})}catch(oe){if(Z==null)throw oe;if(oe instanceof tu){let ve=ae!=null?await tVe(ae,e.name,le.lookup(e)):void 0;throw Z.recorder.recordFailure({apiName:i.workspaceName,groupName:s.groupName,generatorName:e.name,errorMessage:t.getLastFailureMessage()??"Generator failed",durationMs:Date.now()-Fe,outputRepoUrl:eVe(e),generatorsYmlAbsolutePath:ae,generatorsYmlLineNumber:ve}),oe}let me=Mn(oe),Oe=ae!=null?await tVe(ae,e.name,le.lookup(e)):void 0;Z.recorder.recordFailure({apiName:i.workspaceName,groupName:s.groupName,generatorName:e.name,errorMessage:me,durationMs:Date.now()-Fe,outputRepoUrl:eVe(e),generatorsYmlAbsolutePath:ae,generatorsYmlLineNumber:Oe}),t.failWithoutThrowing(me,oe,{code:Gke(oe)})}}async function FLh(e){if(!dMe())return;let t=[];if(e.pullRequestUrl!=null&&t.push({event:"PR created",body:e.pullRequestUrl,summaryLine:`\u{1F500} **${e.generatorName}** \u2192 [PR](${e.pullRequestUrl})`}),e.publishTarget!=null&&t.push({event:`Published to ${e.publishTarget.label}`,body:`${e.publishTarget.version} \u2192 ${e.publishTarget.url}`,summaryLine:`\u{1F4E6} **${e.generatorName}** \u2192 [${e.publishTarget.label} ${e.publishTarget.version}](${e.publishTarget.url})`}),e.noChangesDetected&&t.push({event:"No changes detected",body:"SDK repo is already up to date",summaryLine:`\u2705 **${e.generatorName}** \u2192 No changes detected`}),e.version!=null&&e.publishTarget==null&&e.pullRequestUrl==null&&t.push({event:`Version ${e.version}`,body:`Generated version ${e.version}`,summaryLine:`\u{1F3F7}\uFE0F **${e.generatorName}** \u2192 Version ${e.version}`}),t.length===0)return;let r=[`group=${e.groupName}`];e.apiName!=null&&e.apiName.length>0&&r.push(`api=${e.apiName}`);let n=`${e.generatorName} (${r.join(", ")})`;for(let i of t){let o=`${n} \u2192 ${i.event}`,s=mMe("notice",i.body,{title:o});s!=null&&process.stdout.write(s)}if(!e.isAutomation){let i=process.env.GITHUB_STEP_SUMMARY;if(i!=null&&i.length>0){let o=t.map(s=>`${s.summaryLine}
4224
4224
  `).join("");try{await(0,djl.appendFile)(i,o,"utf8")}catch(s){process.stderr.write(`[warn] Failed to append to GITHUB_STEP_SUMMARY: ${s}
4225
- `)}}}}Dt();Qt();Qt();var ppi="https://",Yps="http://";function hjl(e){return e.startsWith(ppi)?e.slice(ppi.length):e.startsWith(Yps)?e.slice(Yps.length):e}function mjl(e){try{let t=e.startsWith(ppi)||e.startsWith(Yps)?e:`${ppi}${e}`;return kLh(new URL(t).pathname)}catch{return"/"}}function kLh(e){return e===""||e==="/"?"/":e.endsWith("/")?e.slice(0,-1):e}function gjl(e,t,r){let n=mjl(e);for(let i of t){let o=mjl(i);n!==o&&r.failAndThrow(`Basepath mismatch between Fern url and custom-domain. The instance 'url' and 'custom-domain' must share the same basepath, since navigation links and redirects are generated relative to the basepath and would break on a custom domain with a different one. Instance url '${e}' has basepath '${n}' but custom-domain '${i}' has basepath '${o}'.`,void 0,{code:B.Code.ConfigError})}}Yk();Va();om();Dt();SC();Lm();SC();Xt();Yl();Ja();am();Nde();Qt();OW();En();var BUl=require("crypto"),zWt=require("fs/promises");_i();var QWt=ye(XEe(),1),ths=require("path");var NLh=new Set(["legacy","ledger"]);function Ajl(){if(process.env.FERN_SELF_HOSTED==="true")return"legacy";let e=process.env.FERN_DOCS_DEPLOY_MODE?.toLowerCase().trim();return e==null||e===""?"ledger":jLh(e)?e:(console.warn(`[fern] Unrecognized FERN_DOCS_DEPLOY_MODE="${e}" \u2014 falling back to "ledger". Valid values: ledger, legacy.`),"ledger")}function jLh(e){return NLh.has(e)}Dt();var nQl=ye(rQl(),1);_i();var iQl=require("util"),x4h=(0,iQl.promisify)(nQl.default);async function oQl(e,t,r){let n=DBt(e,t),i=[];for(let o of n){let s=await Promise.all(o.map(async a=>{try{let c=await x4h(a);return c==null||c.height==null||c.width==null?void 0:{filePath:a,width:c.width,height:c.height,blurDataUrl:void 0}}catch(c){r.logger.error(`Failed to measure image size for ${a}. ${c?.message}`);return}}));i.push(...s.filter(Oa))}return new Map(i.map(o=>[o.filePath,o]))}Dt();function sQl(e,t){if(e.startsWith("https://")||e.startsWith("http://"))return e;switch(t){case"github":return`https://github.com/${e}`;case"gitlab":return`https://gitlab.com/${e}`;case"bitbucket":return`https://bitbucket.org/${e}`;default:be(t)}}SC();Lm();Nde();var mUl=require("crypto"),hUl=require("fs/promises"),gUl=ye(XEe(),1);Dt();function gvt(e,t){if(e==null)return;let r=t?.get(e);return r??e}function C4h(e,t,r){let n=gvt(e,r);if(n==null)return;let i=t?.[n];if(!(i?.width==null||i?.height==null))return{path:n,width:i.width,height:i.height}}function mWt(e,t){if(e==null)return;if(e.type==="url")return{type:"url",value:e.value};let r=gvt(e.value,t);if(r!=null)return{type:"path",value:r}}function Afs(e,t,r){let n=e.background!=null?{type:"solid",...e.background}:void 0,i=gvt(e.backgroundImage,r);return{logo:C4h(e.logo,t,r),backgroundImage:i,accentPrimary:e.accentPrimary,background:n,border:e.border,sidebarBackground:e.sidebarBackground,headerBackground:e.headerBackground,cardBackground:e.cardBackground}}function w4h(e,t,r){if(e!=null)switch(e.type){case"dark":case"light":return{type:e.type,...Afs(e,t,r)};case"darkAndLight":return{type:"darkAndLight",dark:Afs(e.dark,t,r),light:Afs(e.light,t,r)};default:be(e)}}function S4h(e,t){if(e==null)return;let{"og:image":r,"og:logo":n,"twitter:image":i,"og:background-image":o,"og:dynamic:background-image":s,...a}=e;return{...a,"og:image":mWt(r,t)??void 0,"og:logo":mWt(n,t)??void 0,"twitter:image":mWt(i,t)??void 0,"og:background-image":mWt(o,t)??void 0,"og:dynamic:background-image":mWt(s,t)??void 0}}function T4h(e,t){if(e==null)return;let r=[];for(let n of e.files){let i=gvt(n.fileId,t);i!=null&&r.push({path:i,strategy:n.strategy})}return{remote:e.remote?.map(n=>({url:n.url,strategy:n.strategy,disableSri:n.disableSri})),files:r,inline:e.inline}}function O4h(e,t){if(e==null)return;let r=n=>{if(n!=null)return{type:"custom",name:n.name,variants:n.variants.map(i=>({fontFile:gvt(i.fontFile,t)??i.fontFile,weight:i.weight,style:i.style})),display:n.display,fallback:n.fallback,fontVariationSettings:n.fontVariationSettings}};return{headingsFont:r(e.headingsFont),bodyFont:r(e.bodyFont),codeFont:r(e.codeFont)}}function B4h(e){if(e!=null)return{pageDirective:e.pageDirective,pageDescriptionSource:e.pageDescriptionSource,siteDescription:e.siteDescription}}function P4h(e){if(e!=null)return{intercom:e.intercom}}function aQl({docsConfig:e,fileManifest:t,fileIdToPath:r,editThisPage:n}){return{title:e.title,defaultLanguage:e.defaultLanguage,translations:e.translations,announcement:e.announcement,navbarLinks:e.navbarLinks,footerLinks:e.footerLinks,logoHeight:e.logoHeight,logoHref:e.logoHref,logoRightText:e.logoRightText,favicon:gvt(e.favicon,r),agents:B4h(e.agents),metadata:S4h(e.metadata,r),redirects:e.redirects,colorsV3:w4h(e.colorsV3,t,r),layout:e.layout,theme:e.theme,settings:e.settings,typographyV2:O4h(e.typographyV2,r),analyticsConfig:e.analyticsConfig,css:e.css,js:T4h(e.js,r),aiChatConfig:e.aiChatConfig,pageActions:e.pageActions,editThisPageLaunch:e.editThisPageLaunch,editThisPageGithub:n?.github!=null?{owner:n.github.owner,repo:n.github.repo,branch:n.github.branch??"main",host:n.github.host??"https://github.com"}:void 0,integrations:P4h(e.integrations),header:e.header,footer:e.footer}}async function Avt(e,t,r){let n=new Array(t.length),i=new Set;for(let o=0;o<t.length;o++){let s=t[o];if(s===void 0)continue;let a=(async()=>{let c=await r(s,o);n[o]=c})().then(()=>{i.delete(a)});i.add(a),i.size>=e&&await Promise.race(i)}return await Promise.all(i),n}var f8h=10,d8h=4,Zms=3,m8h=1e3;function AUl(e){return(0,mUl.createHash)("sha256").update(e).digest("hex")}var yUl=/file:([^\s"'<>)}\]]+)/g;function h8h(e){let t=new Set;for(let r of e.matchAll(yUl)){let n=r[1];n!=null&&t.add(n)}return[...t]}function g8h(e,t){return t==null||t.size===0?e:e.replace(yUl,(r,n)=>`file:${t.get(n)??n}`)}function A8h(e){return JSON.stringify(e,(t,r)=>r!=null&&typeof r=="object"&&!Array.isArray(r)?Object.fromEntries(Object.entries(r).sort(([n],[i])=>n<i?-1:n>i?1:0)):r)}function fUl(e){let t=Buffer.from(A8h(e),"utf-8"),r=AUl(t);return{ref:{hash:r,contentType:"application/json",contentLength:t.length},hash:r,buf:t}}function vfi({docsDefinition:e,git:t,apiDefinitions:r,fileManifest:n,fileIdToPath:i,editThisPage:o,locale:s="en"}){let a=new Map,c={};for(let[f,m]of Object.entries(e.pages)){if(m==null)continue;let g=g8h(m.markdown,i),A=Buffer.from(g,"utf-8"),y=AUl(A),E=h8h(g);c[f]={hash:y,contentType:"text/markdown",contentLength:A.length,...E.length>0?{referencedFiles:E}:{}},a.set(y,A)}let u=aQl({docsConfig:e.config,fileManifest:n,fileIdToPath:i,editThisPage:o}),l=null;if(r.size>0){let f=Object.fromEntries(r),m=fUl(f);a.set(m.hash,m.buf),l=m.ref}let p=null;if(e.jsFiles!=null&&Object.keys(e.jsFiles).length>0){let f=fUl(e.jsFiles);a.set(f.hash,f.buf),p=f.ref}return{localeEntry:{root:e.config.root??e.config.navigation,pages:c,config:u,apiManifest:l,jsFiles:p,fileManifest:n,redirects:null,locale:s,git:t},blobs:a}}async function bUl({docsDefinition:e,organization:t,domain:r,basepath:n,basepathAware:i,previewId:o,customDomains:s,git:a,token:c,fdrOrigin:u,headers:l,context:p,apiDefinitions:d,fileManifest:f,filePaths:m,fileIdToPath:g,editThisPage:A,resolver:y}){let{localeEntry:E,blobs:v}=vfi({docsDefinition:e,git:a,apiDefinitions:d,fileManifest:f,fileIdToPath:g,editThisPage:A}),I=await ehs({docsDefinition:e,git:a,apiDefinitions:d,fileManifest:f,fileIdToPath:g,editThisPage:A,resolver:y,context:p});for(let le of I)for(let[ne,fe]of le.blobs)v.set(ne,fe);let{createDocsLedgerClient:C}=await Promise.resolve().then(()=>(Yms(),uUl)),S=C({baseUrl:u,token:c,headers:l}),O=[E,...I.map(le=>le.localeEntry)],D={orgId:t,domain:r,basepath:n??"",...i&&{basepathAware:!0},customDomains:s??[],previewId:o??null,defaultLocale:E.locale,locales:O};p.logger.debug("[ledger] Registering deployment...");let T=performance.now(),M=await S.register(D),K=performance.now()-T;p.logger.debug(`[ledger] Registered in ${K.toFixed(0)}ms \u2014 hash=${M.deploymentHash}, missing=${M.missingContent.length} blobs`),await $ms(M.missingContent,v,p,m),p.logger.debug("[ledger] Finishing deployment...");let Y=performance.now(),Z=await S.finish(D),ae=performance.now()-Y;if(p.logger.debug(`[ledger] Finished in ${ae.toFixed(0)}ms \u2014 deploymentId=${Z.deploymentId}, reused=${Z.reusedDeployment}`),Z.translationsProcessed!=null)for(let le of Z.translationsProcessed)p.logger.info(`[ledger] Locale "${le.locale}": ${le.segmentsAdded} segment(s) added`);return Z}async function $ms(e,t,r,n){if(e.length>0){r.logger.debug(`[ledger] Uploading ${e.length} missing blobs...`);let i=performance.now(),o=await Avt(f8h,[...e],async({hash:u,uploadUrl:l})=>{let p=t.get(u),d="application/octet-stream";if(p==null&&n!=null){let f=n.get(u);if(f!=null){p=await(0,hUl.readFile)(f);let m=gUl.lookup(f);m!==!1&&(d=m)}}return p==null?(r.logger.warn(`[ledger] Server requested blob ${u} but we don't have it \u2014 skipping`),"skipped"):y8h(p,l,u,d,r)}),s=o.filter(u=>u==="uploaded").length,a=o.filter(u=>u==="already_exists").length,c=performance.now()-i;r.logger.debug(`[ledger] Upload complete in ${c.toFixed(0)}ms \u2014 ${s} uploaded, ${a} already in store`)}else r.logger.debug("[ledger] All content already in CAS \u2014 no uploads needed")}async function y8h(e,t,r,n,i){let o=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);for(let s=0;s<=Zms;s++){let a=await fetch(t,{method:"PUT",headers:{"Content-Type":n},body:o});if(a.ok)return"uploaded";if(a.status===412)return i.logger.debug(`[ledger] Blob ${r} already exists in store \u2014 skipping`),"already_exists";if(a.status===403){let l=await a.text();throw new Error(`[ledger] Presigned URL rejected for ${r} (expired or signature mismatch): ${l}`)}if(a.status===400){let l=await a.text();throw new Error(`[ledger] Content integrity check failed for ${r}: ${l}`)}if((a.status===429||a.status>=500)&&s<Zms){let l=m8h*2**s;i.logger.debug(`[ledger] Upload ${r} got ${a.status}, retrying in ${l}ms (attempt ${s+1}/${Zms})`),await new Promise(p=>setTimeout(p,l));continue}let u=await a.text();throw new Error(`[ledger] S3 upload failed for ${r}: ${a.status} ${u}`)}throw new Error(`[ledger] Upload exhausted retries for ${r}`)}function dUl(e,t,r){try{let n=Jle(e,un.ApiDefinitionId(t),new Yle({snippetsConfigWithSdkId:{},snippetsBySdkId:{},snippetTemplatesByEndpoint:{},snippetTemplatesByEndpointId:{},snippetsBySdkIdAndEndpointId:{}}));return Xle(n)}catch(n){r.logger.debug(`[ledger] Failed to convert API definition "${t}" to read form: ${String(n)}`);return}}function b8h({baseApiDefinitions:e,translatedSpecs:t,context:r}){let n=new Map(e);for(let[i,o]of t)try{let s=TT({ir:o.ir,snippetsConfig:o.snippetsConfig,playgroundConfig:o.playgroundConfig,graphqlOperations:o.graphqlOperations,graphqlTypes:o.graphqlTypes,context:r,apiNameOverride:o.apiName});n.set(i,s)}catch(s){r.logger.warn(`[ledger] Failed to convert translated API definition for API "${i}": ${String(s)}. Falling back to base (untranslated) API.`)}return n}async function ehs({docsDefinition:e,git:t,apiDefinitions:r,fileManifest:n,fileIdToPath:i,editThisPage:o,resolver:s,context:a}){if(s==null)return[];let c=s.getTranslationPages(),u=s.getTranslationNavigationOverlays();if(c==null||Object.keys(c).length===0)return[];let l=s.getTranslatedApiSpecs(),p={};if(l.size>0)for(let[m,g]of r){let A=dUl(g,m,a);A!=null&&(p[m]=A)}let d=Object.entries(c);a.logger.info(`[ledger] Building ${d.length} translation locale(s)...`);let{buildTranslatedDocsDefinition:f}=await Promise.resolve().then(()=>(pUl(),lUl));return Avt(d8h,d,async([m,g])=>{let A=await f({docsDefinition:e,locale:m,localePages:g,translationNavigationOverlays:u,resolver:s,context:a}),y=l.get(m),E=r;if(y!=null&&y.size>0&&(E=b8h({baseApiDefinitions:r,translatedSpecs:y,context:a}),A.config.root!=null)){let C={};for(let[D]of y){let T=E.get(D);if(T!=null){let M=dUl(T,D,a);M!=null&&(C[D]=M)}}let S=X3e(A.config.root,p,C);if(S.size>0){a.logger.warn(`Translated API definition(s) [${Array.from(S).join(", ")}] for locale "${m}" diverge from the default-locale spec (e.g. changed OpenAPI tag names, operationIds, or paths, or a missing/added endpoint), so they can't be fully matched to the navigation tree. Serving the default-locale API for those (localized sidebar titles are still applied where they can be matched). For fully localized API reference content, translate only human-readable text and keep tag names/operationIds/paths identical to the base spec.`);for(let D of S){let T=r.get(D);T!=null&&E.set(D,T)}}let O=new Set(Object.keys(C).filter(D=>!S.has(D)));Object.keys(C).length>0&&(A.config.root=Z3e(A.config.root,p,C,{rewritableApiIds:O}))}let{localeEntry:v,blobs:I}=vfi({docsDefinition:A,git:t,apiDefinitions:E,fileManifest:n,fileIdToPath:i,editThisPage:o,locale:m});return{locale:m,localePages:g,translatedDefinition:A,localeEntry:v,blobs:I}})}Yms();async function EUl({docsDefinition:e,organization:t,basePath:r,previewId:n,git:i,token:o,fdrOrigin:s,headers:a,context:c,apiDefinitions:u,fileManifest:l,filePaths:p,fileIdToPath:d,editThisPage:f,resolver:m}){let{localeEntry:g,blobs:A}=vfi({docsDefinition:e,git:i,apiDefinitions:u,fileManifest:l,fileIdToPath:d,editThisPage:f}),y=await ehs({docsDefinition:e,git:i,apiDefinitions:u,fileManifest:l,fileIdToPath:d,editThisPage:f,resolver:m,context:c});for(let K of y)for(let[Y,Z]of K.blobs)A.set(Y,Z);let E=[g,...y.map(K=>K.localeEntry)],v=Ifi({baseUrl:s,token:o,headers:a});c.logger.debug("[ledger-preview] Registering preview deployment...");let I=performance.now(),C={orgId:t,previewId:n??null,basePath:r??"",defaultLocale:g.locale,locales:E,root:g.root,pages:g.pages,apiManifest:g.apiManifest,config:g.config,fileManifest:g.fileManifest,jsFiles:g.jsFiles,redirects:g.redirects,locale:g.locale,version:g.version,repo:g.repo,git:i},S=await v.previewRegister(C),O=performance.now()-I;c.logger.debug(`[ledger-preview] Registered in ${O.toFixed(0)}ms \u2014 hash=${S.deploymentHash}, preview=${S.previewUrl}, missing=${S.missingContent.length} blobs`),await $ms(S.missingContent,A,c,p),c.logger.debug("[ledger-preview] Finishing preview deployment...");let D=performance.now(),T=await v.finish({orgId:t,domain:S.domain,basepath:S.basepath,customDomains:[],previewId:S.previewId,defaultLocale:g.locale,locales:E}),M=performance.now()-D;if(c.logger.debug(`[ledger-preview] Finished in ${M.toFixed(0)}ms \u2014 deploymentId=${T.deploymentId}, reused=${T.reusedDeployment}`),T.translationsProcessed!=null)for(let K of T.translationsProcessed)c.logger.info(`[ledger-preview] Locale "${K.locale}": ${K.segmentsAdded} segment(s) added`);return{previewUrl:S.previewUrl,deploymentId:T.deploymentId}}async function IUl({fn:e,maxRetries:t,baseDelayMs:r,jitterFactor:n=0,isRetryable:i=()=>!0,logger:o,label:s,delayFn:a=c=>new Promise(u=>setTimeout(u,c))}){let c;for(let u=0;u<=t;u++)try{return await e()}catch(l){if(c=l,!i(l)||u>=t)throw l;let p=n>0?1+(Math.random()-.5)*n:1,d=Math.round(r*2**u*p);s!=null&&o.warn(`${s} (attempt ${u+1}/${t+1}), retrying in ${d}ms...`),await a(d)}throw c}var E8h=10,vUl=10,xfi=parseInt(process.env.FERN_DOCS_ASSET_HASH_CONCURRENCY??"32",10),I8h=3,v8h=1e3,x8h=.5;function xUl(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function C8h(e){if(e==null)return"Unknown error";let t=e instanceof Error?e.message:String(e),r=e.data;if(r?.issues!=null&&Array.isArray(r.issues)&&r.issues.length>0){let n=r.issues.map(i=>{let o=i.path?.join(".")??"",s=i.message??"invalid";return o?` - ${o}: ${s}`:` - ${s}`}).join(`
4225
+ `)}}}}Dt();Qt();Qt();var ppi="https://",Yps="http://";function hjl(e){return e.startsWith(ppi)?e.slice(ppi.length):e.startsWith(Yps)?e.slice(Yps.length):e}function mjl(e){try{let t=e.startsWith(ppi)||e.startsWith(Yps)?e:`${ppi}${e}`;return kLh(new URL(t).pathname)}catch{return"/"}}function kLh(e){return e===""||e==="/"?"/":e.endsWith("/")?e.slice(0,-1):e}function gjl(e,t,r){let n=mjl(e);for(let i of t){let o=mjl(i);n!==o&&r.failAndThrow(`Basepath mismatch between Fern url and custom-domain. The instance 'url' and 'custom-domain' must share the same basepath, since navigation links and redirects are generated relative to the basepath and would break on a custom domain with a different one. Instance url '${e}' has basepath '${n}' but custom-domain '${i}' has basepath '${o}'.`,void 0,{code:B.Code.ConfigError})}}Yk();Va();om();Dt();SC();Lm();SC();Xt();Yl();Ja();am();Nde();Qt();OW();En();var BUl=require("crypto"),zWt=require("fs/promises");_i();var QWt=ye(XEe(),1),ths=require("path");var NLh=new Set(["legacy","ledger"]);function Ajl(){if(process.env.FERN_SELF_HOSTED==="true")return"legacy";let e=process.env.FERN_DOCS_DEPLOY_MODE?.toLowerCase().trim();return e==null||e===""?"ledger":jLh(e)?e:(console.warn(`[fern] Unrecognized FERN_DOCS_DEPLOY_MODE="${e}" \u2014 falling back to "ledger". Valid values: ledger, legacy.`),"ledger")}function jLh(e){return NLh.has(e)}Dt();var nQl=ye(rQl(),1);_i();var iQl=require("util"),x4h=(0,iQl.promisify)(nQl.default);async function oQl(e,t,r){let n=DBt(e,t),i=[];for(let o of n){let s=await Promise.all(o.map(async a=>{try{let c=await x4h(a);return c==null||c.height==null||c.width==null?void 0:{filePath:a,width:c.width,height:c.height,blurDataUrl:void 0}}catch(c){r.logger.error(`Failed to measure image size for ${a}. ${c?.message}`);return}}));i.push(...s.filter(Oa))}return new Map(i.map(o=>[o.filePath,o]))}Dt();function sQl(e,t){if(e.startsWith("https://")||e.startsWith("http://"))return e;switch(t){case"github":return`https://github.com/${e}`;case"gitlab":return`https://gitlab.com/${e}`;case"bitbucket":return`https://bitbucket.org/${e}`;default:be(t)}}SC();Lm();Nde();var mUl=require("crypto"),hUl=require("fs/promises"),gUl=ye(XEe(),1);Dt();function gvt(e,t){if(e==null)return;let r=t?.get(e);return r??e}function C4h(e,t,r){let n=gvt(e,r);if(n==null)return;let i=t?.[n];if(!(i?.width==null||i?.height==null))return{path:n,width:i.width,height:i.height}}function mWt(e,t){if(e==null)return;if(e.type==="url")return{type:"url",value:e.value};let r=gvt(e.value,t);if(r!=null)return{type:"path",value:r}}function Afs(e,t,r){let n=e.background!=null?{type:"solid",...e.background}:void 0,i=gvt(e.backgroundImage,r);return{logo:C4h(e.logo,t,r),backgroundImage:i,accentPrimary:e.accentPrimary,background:n,border:e.border,sidebarBackground:e.sidebarBackground,headerBackground:e.headerBackground,cardBackground:e.cardBackground}}function w4h(e,t,r){if(e!=null)switch(e.type){case"dark":case"light":return{type:e.type,...Afs(e,t,r)};case"darkAndLight":return{type:"darkAndLight",dark:Afs(e.dark,t,r),light:Afs(e.light,t,r)};default:be(e)}}function S4h(e,t){if(e==null)return;let{"og:image":r,"og:logo":n,"twitter:image":i,"og:background-image":o,"og:dynamic:background-image":s,...a}=e;return{...a,"og:image":mWt(r,t)??void 0,"og:logo":mWt(n,t)??void 0,"twitter:image":mWt(i,t)??void 0,"og:background-image":mWt(o,t)??void 0,"og:dynamic:background-image":mWt(s,t)??void 0}}function T4h(e,t){if(e==null)return;let r=[];for(let n of e.files){let i=gvt(n.fileId,t);i!=null&&r.push({path:i,strategy:n.strategy})}return{remote:e.remote?.map(n=>({url:n.url,strategy:n.strategy,disableSri:n.disableSri})),files:r,inline:e.inline}}function O4h(e,t){if(e==null)return;let r=n=>{if(n!=null)return{type:"custom",name:n.name,variants:n.variants.map(i=>({fontFile:gvt(i.fontFile,t)??i.fontFile,weight:i.weight,style:i.style})),display:n.display,fallback:n.fallback,fontVariationSettings:n.fontVariationSettings}};return{headingsFont:r(e.headingsFont),bodyFont:r(e.bodyFont),codeFont:r(e.codeFont)}}function B4h(e){if(e!=null)return{pageDirective:e.pageDirective,pageDescriptionSource:e.pageDescriptionSource,siteDescription:e.siteDescription}}function P4h(e){if(e!=null)return{intercom:e.intercom}}function aQl({docsConfig:e,fileManifest:t,fileIdToPath:r,editThisPage:n}){return{title:e.title,defaultLanguage:e.defaultLanguage,translations:e.translations,announcement:e.announcement,navbarLinks:e.navbarLinks,footerLinks:e.footerLinks,logoHeight:e.logoHeight,logoHref:e.logoHref,logoRightText:e.logoRightText,favicon:gvt(e.favicon,r),agents:B4h(e.agents),metadata:S4h(e.metadata,r),redirects:e.redirects,colorsV3:w4h(e.colorsV3,t,r),layout:e.layout,theme:e.theme,settings:e.settings,typographyV2:O4h(e.typographyV2,r),analyticsConfig:e.analyticsConfig,css:e.css,js:T4h(e.js,r),aiChatConfig:e.aiChatConfig,pageActions:e.pageActions,editThisPageLaunch:e.editThisPageLaunch,editThisPageGithub:n?.github!=null?{owner:n.github.owner,repo:n.github.repo,branch:n.github.branch??"main",host:n.github.host??"https://github.com"}:void 0,integrations:P4h(e.integrations),header:e.header,footer:e.footer}}async function Avt(e,t,r){let n=new Array(t.length),i=new Set;for(let o=0;o<t.length;o++){let s=t[o];if(s===void 0)continue;let a=(async()=>{let c=await r(s,o);n[o]=c})().then(()=>{i.delete(a)});i.add(a),i.size>=e&&await Promise.race(i)}return await Promise.all(i),n}var f8h=10,d8h=4,Zms=3,m8h=1e3;function AUl(e){return(0,mUl.createHash)("sha256").update(e).digest("hex")}var yUl=/file:([^\s"'<>)}\]]+)/g;function h8h(e){let t=new Set;for(let r of e.matchAll(yUl)){let n=r[1];n!=null&&t.add(n)}return[...t]}function g8h(e,t){return t==null||t.size===0?e:e.replace(yUl,(r,n)=>`file:${t.get(n)??n}`)}function A8h(e){return JSON.stringify(e,(t,r)=>r!=null&&typeof r=="object"&&!Array.isArray(r)?Object.fromEntries(Object.entries(r).sort(([n],[i])=>n<i?-1:n>i?1:0)):r)}function fUl(e){let t=Buffer.from(A8h(e),"utf-8"),r=AUl(t);return{ref:{hash:r,contentType:"application/json",contentLength:t.length},hash:r,buf:t}}function vfi({docsDefinition:e,git:t,apiDefinitions:r,fileManifest:n,fileIdToPath:i,editThisPage:o,locale:s="en"}){let a=new Map,c={};for(let[f,m]of Object.entries(e.pages)){if(m==null)continue;let g=g8h(m.markdown,i),A=Buffer.from(g,"utf-8"),y=AUl(A),E=h8h(g);c[f]={hash:y,contentType:"text/markdown",contentLength:A.length,...E.length>0?{referencedFiles:E}:{}},a.set(y,A)}let u=aQl({docsConfig:e.config,fileManifest:n,fileIdToPath:i,editThisPage:o}),l=null;if(r.size>0){let f=Object.fromEntries(r),m=fUl(f);a.set(m.hash,m.buf),l=m.ref}let p=null;if(e.jsFiles!=null&&Object.keys(e.jsFiles).length>0){let f=fUl(e.jsFiles);a.set(f.hash,f.buf),p=f.ref}return{localeEntry:{root:e.config.root??e.config.navigation,pages:c,config:u,apiManifest:l,jsFiles:p,fileManifest:n,redirects:null,locale:s,git:t},blobs:a}}async function bUl({docsDefinition:e,organization:t,domain:r,basepath:n,basepathAware:i,previewId:o,customDomains:s,git:a,token:c,fdrOrigin:u,headers:l,context:p,apiDefinitions:d,fileManifest:f,filePaths:m,fileIdToPath:g,editThisPage:A,resolver:y}){let{localeEntry:E,blobs:v}=vfi({docsDefinition:e,git:a,apiDefinitions:d,fileManifest:f,fileIdToPath:g,editThisPage:A}),I=await ehs({docsDefinition:e,git:a,apiDefinitions:d,fileManifest:f,fileIdToPath:g,editThisPage:A,resolver:y,context:p});for(let le of I)for(let[ne,fe]of le.blobs)v.set(ne,fe);let{createDocsLedgerClient:C}=await Promise.resolve().then(()=>(Yms(),uUl)),S=C({baseUrl:u,token:c,headers:l}),O=[E,...I.map(le=>le.localeEntry)],D={orgId:t,domain:r,basepath:n??"",...i&&{basepathAware:!0},customDomains:s??[],previewId:o??null,defaultLocale:E.locale,locales:O};p.logger.debug("[ledger] Registering deployment...");let T=performance.now(),M=await S.register(D),K=performance.now()-T;p.logger.debug(`[ledger] Registered in ${K.toFixed(0)}ms \u2014 hash=${M.deploymentHash}, missing=${M.missingContent.length} blobs`),await $ms(M.missingContent,v,p,m),p.logger.debug("[ledger] Finishing deployment...");let Y=performance.now(),Z=await S.finish(D),ae=performance.now()-Y;if(p.logger.debug(`[ledger] Finished in ${ae.toFixed(0)}ms \u2014 deploymentId=${Z.deploymentId}, reused=${Z.reusedDeployment}`),Z.translationsProcessed!=null)for(let le of Z.translationsProcessed)p.logger.debug(`[ledger] Locale "${le.locale}": ${le.segmentsAdded} segment(s) added`);return Z}async function $ms(e,t,r,n){if(e.length>0){r.logger.debug(`[ledger] Uploading ${e.length} missing blobs...`);let i=performance.now(),o=await Avt(f8h,[...e],async({hash:u,uploadUrl:l})=>{let p=t.get(u),d="application/octet-stream";if(p==null&&n!=null){let f=n.get(u);if(f!=null){p=await(0,hUl.readFile)(f);let m=gUl.lookup(f);m!==!1&&(d=m)}}return p==null?(r.logger.warn(`[ledger] Server requested blob ${u} but we don't have it \u2014 skipping`),"skipped"):y8h(p,l,u,d,r)}),s=o.filter(u=>u==="uploaded").length,a=o.filter(u=>u==="already_exists").length,c=performance.now()-i;r.logger.debug(`[ledger] Upload complete in ${c.toFixed(0)}ms \u2014 ${s} uploaded, ${a} already in store`)}else r.logger.debug("[ledger] All content already in CAS \u2014 no uploads needed")}async function y8h(e,t,r,n,i){let o=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);for(let s=0;s<=Zms;s++){let a=await fetch(t,{method:"PUT",headers:{"Content-Type":n},body:o});if(a.ok)return"uploaded";if(a.status===412)return i.logger.debug(`[ledger] Blob ${r} already exists in store \u2014 skipping`),"already_exists";if(a.status===403){let l=await a.text();throw new Error(`[ledger] Presigned URL rejected for ${r} (expired or signature mismatch): ${l}`)}if(a.status===400){let l=await a.text();throw new Error(`[ledger] Content integrity check failed for ${r}: ${l}`)}if((a.status===429||a.status>=500)&&s<Zms){let l=m8h*2**s;i.logger.debug(`[ledger] Upload ${r} got ${a.status}, retrying in ${l}ms (attempt ${s+1}/${Zms})`),await new Promise(p=>setTimeout(p,l));continue}let u=await a.text();throw new Error(`[ledger] S3 upload failed for ${r}: ${a.status} ${u}`)}throw new Error(`[ledger] Upload exhausted retries for ${r}`)}function dUl(e,t,r){try{let n=Jle(e,un.ApiDefinitionId(t),new Yle({snippetsConfigWithSdkId:{},snippetsBySdkId:{},snippetTemplatesByEndpoint:{},snippetTemplatesByEndpointId:{},snippetsBySdkIdAndEndpointId:{}}));return Xle(n)}catch(n){r.logger.debug(`[ledger] Failed to convert API definition "${t}" to read form: ${String(n)}`);return}}function b8h({baseApiDefinitions:e,translatedSpecs:t,context:r}){let n=new Map(e);for(let[i,o]of t)try{let s=TT({ir:o.ir,snippetsConfig:o.snippetsConfig,playgroundConfig:o.playgroundConfig,graphqlOperations:o.graphqlOperations,graphqlTypes:o.graphqlTypes,context:r,apiNameOverride:o.apiName});n.set(i,s)}catch(s){r.logger.warn(`[ledger] Failed to convert translated API definition for API "${i}": ${String(s)}. Falling back to base (untranslated) API.`)}return n}async function ehs({docsDefinition:e,git:t,apiDefinitions:r,fileManifest:n,fileIdToPath:i,editThisPage:o,resolver:s,context:a}){if(s==null)return[];let c=s.getTranslationPages(),u=s.getTranslationNavigationOverlays();if(c==null||Object.keys(c).length===0)return[];let l=s.getTranslatedApiSpecs(),p={};if(l.size>0)for(let[m,g]of r){let A=dUl(g,m,a);A!=null&&(p[m]=A)}let d=Object.entries(c);a.logger.debug(`[ledger] Building ${d.length} translation locale(s)...`);let{buildTranslatedDocsDefinition:f}=await Promise.resolve().then(()=>(pUl(),lUl));return Avt(d8h,d,async([m,g])=>{let A=await f({docsDefinition:e,locale:m,localePages:g,translationNavigationOverlays:u,resolver:s,context:a}),y=l.get(m),E=r;if(y!=null&&y.size>0&&(E=b8h({baseApiDefinitions:r,translatedSpecs:y,context:a}),A.config.root!=null)){let C={};for(let[D]of y){let T=E.get(D);if(T!=null){let M=dUl(T,D,a);M!=null&&(C[D]=M)}}let S=X3e(A.config.root,p,C);if(S.size>0){a.logger.warn(`Translated API definition(s) [${Array.from(S).join(", ")}] for locale "${m}" diverge from the default-locale spec (e.g. changed OpenAPI tag names, operationIds, or paths, or a missing/added endpoint), so they can't be fully matched to the navigation tree. Serving the default-locale API for those (localized sidebar titles are still applied where they can be matched). For fully localized API reference content, translate only human-readable text and keep tag names/operationIds/paths identical to the base spec.`);for(let D of S){let T=r.get(D);T!=null&&E.set(D,T)}}let O=new Set(Object.keys(C).filter(D=>!S.has(D)));Object.keys(C).length>0&&(A.config.root=Z3e(A.config.root,p,C,{rewritableApiIds:O}))}let{localeEntry:v,blobs:I}=vfi({docsDefinition:A,git:t,apiDefinitions:E,fileManifest:n,fileIdToPath:i,editThisPage:o,locale:m});return{locale:m,localePages:g,translatedDefinition:A,localeEntry:v,blobs:I}})}Yms();async function EUl({docsDefinition:e,organization:t,basePath:r,previewId:n,git:i,token:o,fdrOrigin:s,headers:a,context:c,apiDefinitions:u,fileManifest:l,filePaths:p,fileIdToPath:d,editThisPage:f,resolver:m}){let{localeEntry:g,blobs:A}=vfi({docsDefinition:e,git:i,apiDefinitions:u,fileManifest:l,fileIdToPath:d,editThisPage:f}),y=await ehs({docsDefinition:e,git:i,apiDefinitions:u,fileManifest:l,fileIdToPath:d,editThisPage:f,resolver:m,context:c});for(let K of y)for(let[Y,Z]of K.blobs)A.set(Y,Z);let E=[g,...y.map(K=>K.localeEntry)],v=Ifi({baseUrl:s,token:o,headers:a});c.logger.debug("[ledger-preview] Registering preview deployment...");let I=performance.now(),C={orgId:t,previewId:n??null,basePath:r??"",defaultLocale:g.locale,locales:E,root:g.root,pages:g.pages,apiManifest:g.apiManifest,config:g.config,fileManifest:g.fileManifest,jsFiles:g.jsFiles,redirects:g.redirects,locale:g.locale,version:g.version,repo:g.repo,git:i},S=await v.previewRegister(C),O=performance.now()-I;c.logger.debug(`[ledger-preview] Registered in ${O.toFixed(0)}ms \u2014 hash=${S.deploymentHash}, preview=${S.previewUrl}, missing=${S.missingContent.length} blobs`),await $ms(S.missingContent,A,c,p),c.logger.debug("[ledger-preview] Finishing preview deployment...");let D=performance.now(),T=await v.finish({orgId:t,domain:S.domain,basepath:S.basepath,customDomains:[],previewId:S.previewId,defaultLocale:g.locale,locales:E}),M=performance.now()-D;if(c.logger.debug(`[ledger-preview] Finished in ${M.toFixed(0)}ms \u2014 deploymentId=${T.deploymentId}, reused=${T.reusedDeployment}`),T.translationsProcessed!=null)for(let K of T.translationsProcessed)c.logger.debug(`[ledger-preview] Locale "${K.locale}": ${K.segmentsAdded} segment(s) added`);return{previewUrl:S.previewUrl,deploymentId:T.deploymentId}}async function IUl({fn:e,maxRetries:t,baseDelayMs:r,jitterFactor:n=0,isRetryable:i=()=>!0,logger:o,label:s,delayFn:a=c=>new Promise(u=>setTimeout(u,c))}){let c;for(let u=0;u<=t;u++)try{return await e()}catch(l){if(c=l,!i(l)||u>=t)throw l;let p=n>0?1+(Math.random()-.5)*n:1,d=Math.round(r*2**u*p);s!=null&&o.warn(`${s} (attempt ${u+1}/${t+1}), retrying in ${d}ms...`),await a(d)}throw c}var E8h=10,vUl=10,xfi=parseInt(process.env.FERN_DOCS_ASSET_HASH_CONCURRENCY??"32",10),I8h=3,v8h=1e3,x8h=.5;function xUl(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function C8h(e){if(e==null)return"Unknown error";let t=e instanceof Error?e.message:String(e),r=e.data;if(r?.issues!=null&&Array.isArray(r.issues)&&r.issues.length>0){let n=r.issues.map(i=>{let o=i.path?.join(".")??"",s=i.message??"invalid";return o?` - ${o}: ${s}`:` - ${s}`}).join(`
4226
4226
  `);return t+`
4227
- `+n}return t}var Dvt=class extends Error{constructor(){super("Another docs publish is currently in progress for this domain."),this.name="DocsPublishConflictError"}};async function CUl({fdrOrigin:e,token:t,domain:r,basepath:n}){try{await dy.post(`${e}/docs-deployment/unlock`,{domain:r,basepath:n},{headers:{Authorization:`Bearer ${t}`}})}catch{}}function w8h(e){return e.replace(/\.\.\//g,"_dot_dot_/")}async function wUl(e){let t=await(0,zWt.readFile)(e),r=(0,BUl.createHash)("sha256").update(new Uint8Array(t)).digest("hex");return{buffer:t,hash:r}}async function PUl({token:e,organization:t,docsWorkspace:r,domain:n,customDomains:i,apiWorkspaces:o,ossWorkspaces:s,context:a,preview:c,previewId:u,editThisPage:l,disableTemplates:p=!1,skipUpload:d=!1,withAiExamples:f=!0,excludeApis:m=!1,targetAudiences:g,docsUrl:A,cliVersion:y,ciSource:E,deployerAuthor:v,loginCommand:I="fern login",multiSource:C=!1}){let S=process.env.FERN_FDR_ORIGIN??process.env.OVERRIDE_FDR_ORIGIN??"https://registry.buildwithfern.com"??"https://registry.buildwithfern.com";await o3t(`${S}/health`,a.logger)&&a.logger.debug("Detected air-gapped environment - skipping external FDR service calls");let D={};y!=null&&(D["X-CLI-Version"]=y),E!=null&&(D["X-CI-Source"]=JSON.stringify(E),a.logger.debug(`CI source detected: ${E.type} (${E.repo??"unknown repo"})`)),v?.username!=null&&(D["X-Deployer-Author"]=v.username),v?.email!=null&&(D["X-Deployer-Author-Email"]=v.email);let T=Nk({token:e.value,...Object.keys(D).length>0&&{headers:D}}),M={type:"public"},K=Ajl();K!=="legacy"&&a.logger.info(`Docs deploy mode: ${K}`),m&&a.logger.debug("Experimental flag 'exclude-apis' is enabled - API references will be excluded from S3 upload");let Y,Z=i[0]??n,ae=F8h(n),le=r.config.experimental&&r.config.experimental.dynamicSnippets===!1;r.config.experimental?.basepathAware===!0&&a.logger.warn("experimental.basepath-aware is deprecated. Use 'multi-source: true' on the instance instead.");let ne=C||r.config.experimental?.basepathAware===!0;ne&&a.logger.debug("Basepath-aware mode is enabled - using basepath-aware S3 key format");let fe=!1,Ce=()=>{fe&&!c&&(fe=!1,a.logger.debug("Unlocking docs deploy due to early exit..."),CUl({fdrOrigin:S,token:e.value,domain:n,basepath:ae}))},Fe=async()=>{fe&&!c&&(fe=!1,a.logger.debug("Unlocking docs deploy due to signal..."),await CUl({fdrOrigin:S,token:e.value,domain:n,basepath:ae})),process.exit(1)};process.on("SIGINT",Fe),process.on("SIGTERM",Fe);try{let oe=await k8t({docsWorkspace:r,organization:t,fdrOrigin:S,token:e.value,taskContext:a}),me=r.config.translations!=null&&r.config.translations.length>1,Oe=new Map,ve={},ze=new Map,et=new Map,ot=new Map,ht=(Ft,pr)=>{if(me)try{let qe=Jle(Ft,un.ApiDefinitionId(pr),new Yle({snippetsConfigWithSdkId:{},snippetsBySdkId:{},snippetTemplatesByEndpoint:{},snippetTemplatesByEndpointId:{},snippetsBySdkIdAndEndpointId:{}}));ot.set(pr,Xle(qe))}catch(qe){a.logger.debug(`Failed to build read API definition for ${pr} (translated sidebar titles may stay in the default language): ${String(qe)}`)}},pt=async({ir:Ft,snippetsConfig:pr,playgroundConfig:qe,apiName:Le,workspace:_,graphqlOperations:Ie,graphqlTypes:tt})=>{let At=TT({ir:Ft,snippetsConfig:pr,playgroundConfig:qe,graphqlOperations:Ie,graphqlTypes:tt,context:a,apiNameOverride:Le}),xt=e.value==="dummy",_t=L8h(f&&!xt,r.config.aiExamples?.style??r.config.experimental?.aiExampleStyleInstructions);if(_t){let jt=_?.getSources()?.filter(Rt=>Rt.type==="openapi").map(Rt=>({absoluteFilePath:Rt.absoluteFilePath,absoluteFilePathToOverrides:Rt.absoluteFilePathToOverrides}));jt==null||jt.length===0?a.logger.debug("Skipping AI example enhancement: no OpenAPI source file paths available"):At=await zyt(At,_t,a,e,t,jt)}let Pe,qt=new Set;if(Object.keys(pr).length===0)a.logger.debug("No snippets configuration defined, skipping snippet generation...");else if(!le){let wt=await k8h({fdr:T,workspace:_,organization:t,context:a,snippetsConfig:pr});wt&&Object.keys(wt).length>0&&(Pe=wt,qt=new Set(Object.keys(wt)),a.logger.debug(`Using existing SDK dynamic IRs for: ${Object.keys(wt).join(", ")}`));let jt=await Q8h({workspace:_,organization:t,context:a,snippetsConfig:pr,skipLanguages:qt});jt&&(Pe={...Pe,...jt})}let Er=Le??Mr(Ft.apiName),vr;try{vr=await IUl({fn:()=>T.api.register.registerApiDefinition({orgId:un.OrgId(t),apiId:un.ApiId(Er),definition:At,dynamicIRs:Pe}),maxRetries:I8h,baseDelayMs:v8h,jitterFactor:x8h,isRetryable:U8h,logger:a.logger,label:`registerApiDefinition failed for ${Er}`})}catch(wt){let jt=FUl(wt);return a.logger.error(`FDR registerApiDefinition failed. Error details:
4228
- ${JSON.stringify(jt,void 0,2)}`),Le!=null?a.failAndThrow(`Failed to publish docs because API definition (${Le}) could not be uploaded. Please contact support@buildwithfern.com`,jt,{code:B.Code.NetworkError}):a.failAndThrow("Failed to publish docs because API definition could not be uploaded. Please contact support@buildwithfern.com",jt,{code:B.Code.NetworkError})}return a.logger.debug(`Registered API Definition ${Le}: ${vr.apiDefinitionId}`),vr.dynamicIRs&&Pe&&(d?a.logger.debug("Skip-upload mode: skipping dynamic IR uploads"):await z8h({dynamicIRs:Pe,dynamicIRUploadUrls:vr.dynamicIRs,context:a,apiId:vr.apiDefinitionId})),ht(At,vr.apiDefinitionId),Oe.set(vr.apiDefinitionId,At),vr.apiDefinitionId},Zt=new A3({domain:n,docsWorkspace:oe,ossWorkspaces:s,apiWorkspaces:o,taskContext:a,editThisPage:l,uploadFiles:async Ft=>{let pr=Ft.map(Rt=>({...Rt,sanitizedPath:w8h(Rt.relativeFilePath)})),qe=new Map(pr.map(Rt=>[Rt.absoluteFilePath,Rt])),Le=new Map(pr.map(Rt=>[Rt.sanitizedPath,Rt.absoluteFilePath])),Ie=pr.map(Rt=>({...Rt,mediaType:QWt.lookup(Rt.absoluteFilePath)})).filter(Rt=>Rt.mediaType!==!1).filter(Rt=>Df.parse(Rt.mediaType)?.isImage()??!1).map(Rt=>Rt.absoluteFilePath),tt=await oQl(Ie,E8h,a);a.logger.debug(`Hashing ${tt.size} image files with concurrency ${xfi}...`);let At=performance.now(),xt=Array.from(tt.values()),Pe=(await Avt(xfi,xt,async Rt=>{let Qr=qe.get(Rt.filePath);if(Qr==null)return null;let ie=Qr.sanitizedPath,{buffer:ke,hash:Be}=await wUl(Qr.absoluteFilePath),_e=QWt.lookup(Qr.absoluteFilePath)||"application/octet-stream";return ve[ie]={hash:Be,contentType:_e,contentLength:ke.byteLength,filename:(0,ths.basename)(Qr.sanitizedPath),width:Rt.width,height:Rt.height},ze.set(Be,Qr.absoluteFilePath),{filePath:un.docs.v1.write.FilePath(xPt(ie)),width:Rt.width,height:Rt.height,blurDataUrl:Rt.blurDataUrl,alt:void 0,fileHash:Be}})).filter(Rt=>Rt!=null),qt=performance.now()-At;a.logger.debug(`Hashed ${Pe.length} images in ${qt.toFixed(0)}ms`);let Er=pr.filter(({absoluteFilePath:Rt})=>!tt.has(Rt));a.logger.debug(`Hashing ${Er.length} non-image files with concurrency ${xfi}...`);let vr=performance.now(),wt=await Avt(xfi,Er,async Rt=>{let{buffer:Qr,hash:ie}=await wUl(Rt.absoluteFilePath),ke=QWt.lookup(Rt.absoluteFilePath)||"application/octet-stream";return ve[Rt.sanitizedPath]={hash:ie,contentType:ke,contentLength:Qr.byteLength,filename:(0,ths.basename)(Rt.sanitizedPath)},ze.set(ie,Rt.absoluteFilePath),{path:un.docs.v1.write.FilePath(xPt(Rt.sanitizedPath)),fileHash:ie}}),jt=performance.now()-vr;if(a.logger.debug(`Hashed ${wt.length} non-image files in ${jt.toFixed(0)}ms`),K==="ledger"){let Rt=[];for(let Qr of pr)ve[Qr.sanitizedPath]!=null&&(et.set(Qr.sanitizedPath,Qr.sanitizedPath),Rt.push({relativeFilePath:Qr.relativeFilePath,absoluteFilePath:Qr.absoluteFilePath,fileId:Qr.sanitizedPath}));return a.logger.debug(`[ledger] Skipping V2 startDocsRegister; resolved ${Rt.length} files by sanitizedPath`),Rt}if(c){let Rt;try{Rt=await T.docs.v2.write.startDocsPreviewRegister({orgId:un.OrgId(t),authConfig:M,filepaths:wt,images:Pe,basePath:ae,previewId:u!=null?xUl(u):void 0})}catch(Qr){return await OUl(Qr,a,t,n,I)}if(Z=Rt.previewUrl,Y=Rt.docsRegistrationId,a.logger.debug(`Received preview registration ID: ${Y}`),d)a.logger.debug("Skip-upload mode: skipping file uploads for docs preview");else{let Qr=new Set(Rt.skippedFiles||[]),ie=Object.fromEntries(Object.entries(Rt.uploadUrls).filter(([_e])=>!Qr.has(_e))),ke=Object.keys(ie).length,Be=Qr.size;ke>0?(a.logger.debug(`Uploading ${ke} files (${Be} skipped)...`),await SUl(ie,r.absoluteFilePath,a,vUl,Le)):a.logger.debug(`No files to upload (all ${Be} up to date)`)}return TUl(Rt.uploadUrls,r.absoluteFilePath,Le)}else{let Rt;try{Rt=await T.docs.v2.write.startDocsRegister({domain:n,customDomains:i,authConfig:M,orgId:un.OrgId(t),filepaths:wt,images:Pe,...ne&&{basepathAware:!0}})}catch(ie){return OUl(ie,a,t,n,I)}Y=Rt.docsRegistrationId,fe=!0,a.logger.debug(`Received production registration ID: ${Y}`);let Qr=Rt.skippedFiles?.length||0;if(Qr>0&&a.logger.info(`Skipped ${Qr} unchanged file${Qr===1?"":"s"} (already uploaded)`),d)a.logger.debug("Skip-upload mode: skipping file uploads for docs");else{let ie=new Set(Rt.skippedFiles||[]),ke=Object.fromEntries(Object.entries(Rt.uploadUrls).filter(([_e])=>!ie.has(_e))),Be=Object.keys(ke).length;Be>0?(a.logger.info(`\u2191 Uploading ${Be} files...`),await SUl(ke,r.absoluteFilePath,a,vUl,Le)):a.logger.info("No files to upload (all up to date)")}return TUl(Rt.uploadUrls,r.absoluteFilePath,Le)}},registerApi:pt,buildTranslatedApiDefinitions:me,targetAudiences:g});a.logger.info("Resolving docs definition...");let fr=performance.now(),Ae=await Zt.resolve(),ce=performance.now()-fr;if(r.config.settings?.substituteEnvVars){a.logger.debug("Applying environment variable substitution to docs definition...");let{jsFiles:Ft,...pr}=Ae;Ae={...XA(pr,{onError:Le=>a.failAndThrow(void 0,Le,{code:B.Code.EnvironmentError})},{substituteAsEmpty:!1}),jsFiles:Ft}}let Ge=Object.keys(Ae.pages).length,lt=o.length,Ee=process.memoryUsage();if(a.logger.info(`Resolved docs definition in ${ce.toFixed(0)}ms: ${Ge} pages${lt?`, ${lt} API workspaces`:""}`),a.logger.debug(`Memory after resolve: RSS=${(Ee.rss/1024/1024).toFixed(2)}MB, Heap=${(Ee.heapUsed/1024/1024).toFixed(2)}MB`),Y==null&&K!=="ledger")return Ce(),a.failAndThrow("Failed to publish docs.","Docs registration ID is missing.",{code:B.Code.InternalError});let De=E?.repo!=null&&E?.branch!=null?{repoUrl:sQl(E.repo,E.type),branch:E.branch,commitSha:E.commitSha}:void 0,dt=async()=>{if(Y==null)return;a.logger.info("Publishing docs to FDR...");let Ft=performance.now();await T.docs.v2.write.finishDocsRegister({docsRegistrationId:Y,docsDefinition:Ae,excludeApis:m,...ne&&!c&&{basepathAware:!0}});let pr=performance.now()-Ft;a.logger.debug(`Docs published to FDR in ${pr.toFixed(0)}ms`)},nt=async()=>{if(c){let Ft=await EUl({docsDefinition:Ae,organization:t,basePath:ae,previewId:u!=null?xUl(u):u,git:De,token:e.value,fdrOrigin:S,headers:D,context:a,apiDefinitions:Oe,fileManifest:Object.keys(ve).length>0?ve:void 0,filePaths:ze.size>0?ze:void 0,fileIdToPath:et.size>0?et:void 0,editThisPage:l,resolver:Zt});K==="ledger"&&(Z=Ft.previewUrl),a.logger.info(`[ledger] Preview deployment created: ${Ft.deploymentId}`)}else{let Ft=await bUl({docsDefinition:Ae,organization:t,domain:n,basepath:ae,basepathAware:ne,previewId:u,customDomains:i,git:De,token:e.value,fdrOrigin:S,headers:D,context:a,apiDefinitions:Oe,fileManifest:Object.keys(ve).length>0?ve:void 0,filePaths:ze.size>0?ze:void 0,fileIdToPath:et.size>0?et:void 0,editThisPage:l,resolver:Zt});a.logger.info(`[ledger] Deployment ${Ft.reusedDeployment?"reused":"created"}: ${Ft.deploymentId}`)}};if(K==="ledger")try{await nt()}catch(Ft){let pr=C8h(Ft);return a.failAndThrow("Failed to publish docs via ledger to "+n+": "+pr,Ft,{code:B.Code.NetworkError})}else if(Y!=null)try{await dt()}catch(Ft){return a.failAndThrow("Failed to publish docs to "+n,Ft,{code:B.Code.NetworkError})}let He=me?Zt.getTranslatedApiSpecs():new Map,er=new Map;if(He.size>0){a.logger.info(`Registering translated API definitions for ${He.size} locale(s)...`);for(let[Ft,pr]of He){let qe=new Map;for(let[Le,_]of pr)try{let Ie=await pt(_);Ie!==Le&&qe.set(Le,Ie)}catch(Ie){a.logger.warn(`Failed to register translated API definition for locale "${Ft}" (API reference will render in the default language): ${String(Ie)}`)}qe.size>0&&er.set(Ft,qe)}}let Wt=Zt.getTranslationPages(),dr=Zt.getTranslationNavigationOverlays(),ii=c?Z:n;K!=="ledger"&&Wt!=null&&Object.keys(Wt).length>0&&(a.logger.info(`Registering translations for ${Object.keys(Wt).length} locale(s)...`),await Promise.all(Object.entries(Wt).map(async([Ft,pr])=>{try{let qe=Zt.getCollectedFileIds(),Le=Zt.getDocsWorkspacePath(),_=Zt.getMarkdownFilesToPathName(),Ie=async ie=>{let ke=ko(Le,ie),Be=ti(Le,we.of(`translations/${Ft}/${ke}`));return await rr(Be)?Be:ie},tt=async ie=>{let ke=await Ie(ie),Be=await(0,zWt.readFile)(ke,"utf-8"),_e=Be.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return _e!=null?Be.slice(_e[0].length):Be},At=async ie=>{let ke=await Ie(ie);return(0,zWt.readFile)(ke,"utf-8")},xt=await Promise.all(Object.entries(pr).map(async([ie,ke])=>{try{let Be=Ae.pages[ie],_e=ti(Le,we.of(ie)),{markdown:yt}=await ST({markdown:ke,absolutePathToFernFolder:Le,absolutePathToMarkdownFile:_e,context:a,markdownLoader:tt}),Rr=await G2({markdown:yt,absolutePathToFernFolder:Le,absolutePathToMarkdownFile:_e,context:a,fileLoader:At}),hn=W2({markdown:Rr,absolutePathToFernFolder:Le,absolutePathToMarkdownFile:_e}),Qn=Uw(hn);Qn=q2(Qn,qe,_,{absolutePathToMarkdownFile:_e,absolutePathToFernFolder:Le},a);let Yi=Be?.editThisPageUrl;if(Yi!=null){let ep=`/fern/${ie}`,ib=`/fern/translations/${Ft}/${ie}`;Yi=Yi.replace(ep,ib)}return[ie,{markdown:Qn,rawMarkdown:Qn,editThisPageUrl:Yi,editThisPageLaunch:Be?.editThisPageLaunch}]}catch(Be){a.logger.warn(`Failed to process translated page "${ie}" for locale "${Ft}": ${String(Be)}. Falling back to base page.`);return}})),_t={...Ae.pages,...Object.fromEntries(xt.filter(ie=>ie!=null))},Pe=Pde(Ae.config.root,pr,a),qt=dr?.[Ft],Er=Ae.config.announcement,vr=Ae.config.navbarLinks;qt!=null&&(Pe=Dde(Pe,qt),Er=Rde(qt)??Er,qt.navbarLinks!=null&&(vr=qt.navbarLinks));let wt=er.get(Ft);if(wt!=null&&wt.size>0&&Pe!=null){let ie={},ke={};for(let[yt,Rr]of wt){let hn=ot.get(yt),Qn=ot.get(Rr);hn!=null&&(ie[yt]=hn),Qn!=null&&(ke[yt]=Qn)}let Be=X3e(Pe,ie,ke);Be.size>0&&a.logger.warn(`Translated API definition(s) [${Array.from(Be).join(", ")}] for locale "${Ft}" diverge from the default-locale spec (e.g. changed OpenAPI tag names, operationIds, or paths, or a missing/added endpoint), so they can't be fully matched to the navigation tree. Serving the default-locale API for those (localized sidebar titles are still applied where they can be matched). For fully localized API reference content, translate only human-readable text and keep tag names/operationIds/paths identical to the base spec.`);let _e=new Set(Object.keys(ke).filter(yt=>!Be.has(yt)));Pe=Object.keys(ke).length>0?Z3e(Pe,ie,ke,{rewritableApiIds:_e}):structuredClone(Pe);for(let[yt,Rr]of wt)Be.has(yt)||t4e(Pe,yt,Rr)}let jt={...Ae,pages:_t,config:{...Ae.config,root:Pe,announcement:Er,navbarLinks:vr}},Rt=Object.keys(pr).length;a.logger.debug(`Sending translation for locale "${Ft}" (${Rt} page${Rt===1?"":"s"})`);let Qr=await fetch(`${S}/v2/registry/docs/translations/register`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.value}`,...D},body:JSON.stringify({domain:ii,customDomains:c?[]:i,orgId:t,locale:Ft,docsDefinition:jt})});if(!Qr.ok){let ie=await Qr.text();throw new Error(`HTTP ${Qr.status}: ${ie}`)}a.logger.debug(`Registered translations for locale "${Ft}"`)}catch(qe){a.logger.warn(`Failed to register translations for locale "${Ft}": ${String(qe)}`)}})));let cn=K2(Z);await M8h({docsDefinition:Ae,isPreview:c,context:a});let bo=Lme(cn,cn);return a.logger.info(de.green(`Published docs to ${bo}`)),cn}catch(oe){throw Ce(),oe}finally{fe=!1,process.removeListener("SIGINT",Fe),process.removeListener("SIGTERM",Fe)}}function DUl(e){return typeof e=="object"&&e!==null&&"uploadUrl"in e&&typeof e.uploadUrl=="string"&&"fileId"in e&&typeof e.fileId=="string"}function S8h(e){if(typeof e=="string")return e;if(DUl(e))return e.uploadUrl;throw new Error(`Unexpected upload URL value: ${JSON.stringify(e)}`)}function T8h(e,t){return DUl(t)?vw.FileId(t.fileId):vw.FileId(e)}async function SUl(e,t,r,n,i){let o=Date.now(),s=Object.keys(e).length;r.logger.debug(`Start uploading ${s} files...`);let a=DBt(Object.entries(e),n),c=0;for(let l of a){await Promise.all(l.map(async([d,f])=>{let m=i.get(d)||ti(t,we.of(d));try{let g=S8h(f),A=QWt.lookup(m);await dy.put(g,await(0,zWt.readFile)(m),{headers:{"Content-Type":A===!1?"application/octet-stream":A,"Cache-Control":"public, max-age=31536000, immutable"}})}catch(g){r.failAndThrow(`Failed to upload ${m}`,g,{code:B.Code.NetworkError})}}));let p=Date.now();c+=l.length,r.logger.debug(`Uploaded ${c}/${s} files in ${p-o}ms`)}let u=Date.now();r.logger.debug(`Finished uploading ${s} files in ${u-o}ms`)}function TUl(e,t,r){let n=[];for(let[i,o]of Object.entries(e)){let s=we.of(i),a=r?.get(i)||ti(t,s);n.push({relativeFilePath:s,absoluteFilePath:a,fileId:T8h(i,o)})}return n}async function OUl(e,t,r,n,i){t.instrumentPostHogEvent({command:"docs-generation",properties:{error:JSON.stringify(e)}});let o=FUl(e);t.logger.debug(`startDocsRegister failed for domain '${n}', org '${r}'. Error details:
4227
+ `+n}return t}var Dvt=class extends Error{constructor(){super("Another docs publish is currently in progress for this domain."),this.name="DocsPublishConflictError"}};async function CUl({fdrOrigin:e,token:t,domain:r,basepath:n}){try{await dy.post(`${e}/docs-deployment/unlock`,{domain:r,basepath:n},{headers:{Authorization:`Bearer ${t}`}})}catch{}}function w8h(e){return e.replace(/\.\.\//g,"_dot_dot_/")}async function wUl(e){let t=await(0,zWt.readFile)(e),r=(0,BUl.createHash)("sha256").update(new Uint8Array(t)).digest("hex");return{buffer:t,hash:r}}async function PUl({token:e,organization:t,docsWorkspace:r,domain:n,customDomains:i,apiWorkspaces:o,ossWorkspaces:s,context:a,preview:c,previewId:u,editThisPage:l,disableTemplates:p=!1,skipUpload:d=!1,withAiExamples:f=!0,excludeApis:m=!1,targetAudiences:g,docsUrl:A,cliVersion:y,ciSource:E,deployerAuthor:v,loginCommand:I="fern login",multiSource:C=!1}){let S=process.env.FERN_FDR_ORIGIN??process.env.OVERRIDE_FDR_ORIGIN??"https://registry.buildwithfern.com"??"https://registry.buildwithfern.com";await o3t(`${S}/health`,a.logger)&&a.logger.debug("Detected air-gapped environment - skipping external FDR service calls");let D={};y!=null&&(D["X-CLI-Version"]=y),E!=null&&(D["X-CI-Source"]=JSON.stringify(E),a.logger.debug(`CI source detected: ${E.type} (${E.repo??"unknown repo"})`)),v?.username!=null&&(D["X-Deployer-Author"]=v.username),v?.email!=null&&(D["X-Deployer-Author-Email"]=v.email);let T=Nk({token:e.value,...Object.keys(D).length>0&&{headers:D}}),M={type:"public"},K=Ajl();K!=="legacy"&&a.logger.debug(`Docs deploy mode: ${K}`),m&&a.logger.debug("Experimental flag 'exclude-apis' is enabled - API references will be excluded from S3 upload");let Y,Z=i[0]??n,ae=F8h(n),le=r.config.experimental&&r.config.experimental.dynamicSnippets===!1;r.config.experimental?.basepathAware===!0&&a.logger.warn("experimental.basepath-aware is deprecated. Use 'multi-source: true' on the instance instead.");let ne=C||r.config.experimental?.basepathAware===!0;ne&&a.logger.debug("Basepath-aware mode is enabled - using basepath-aware S3 key format");let fe=!1,Ce=()=>{fe&&!c&&(fe=!1,a.logger.debug("Unlocking docs deploy due to early exit..."),CUl({fdrOrigin:S,token:e.value,domain:n,basepath:ae}))},Fe=async()=>{fe&&!c&&(fe=!1,a.logger.debug("Unlocking docs deploy due to signal..."),await CUl({fdrOrigin:S,token:e.value,domain:n,basepath:ae})),process.exit(1)};process.on("SIGINT",Fe),process.on("SIGTERM",Fe);try{let oe=await k8t({docsWorkspace:r,organization:t,fdrOrigin:S,token:e.value,taskContext:a}),me=r.config.translations!=null&&r.config.translations.length>1,Oe=new Map,ve={},ze=new Map,et=new Map,ot=new Map,ht=(Ft,pr)=>{if(me)try{let qe=Jle(Ft,un.ApiDefinitionId(pr),new Yle({snippetsConfigWithSdkId:{},snippetsBySdkId:{},snippetTemplatesByEndpoint:{},snippetTemplatesByEndpointId:{},snippetsBySdkIdAndEndpointId:{}}));ot.set(pr,Xle(qe))}catch(qe){a.logger.debug(`Failed to build read API definition for ${pr} (translated sidebar titles may stay in the default language): ${String(qe)}`)}},pt=async({ir:Ft,snippetsConfig:pr,playgroundConfig:qe,apiName:Le,workspace:_,graphqlOperations:Ie,graphqlTypes:tt})=>{let At=TT({ir:Ft,snippetsConfig:pr,playgroundConfig:qe,graphqlOperations:Ie,graphqlTypes:tt,context:a,apiNameOverride:Le}),xt=e.value==="dummy",_t=L8h(f&&!xt,r.config.aiExamples?.style??r.config.experimental?.aiExampleStyleInstructions);if(_t){let jt=_?.getSources()?.filter(Rt=>Rt.type==="openapi").map(Rt=>({absoluteFilePath:Rt.absoluteFilePath,absoluteFilePathToOverrides:Rt.absoluteFilePathToOverrides}));jt==null||jt.length===0?a.logger.debug("Skipping AI example enhancement: no OpenAPI source file paths available"):At=await zyt(At,_t,a,e,t,jt)}let Pe,qt=new Set;if(Object.keys(pr).length===0)a.logger.debug("No snippets configuration defined, skipping snippet generation...");else if(!le){let wt=await k8h({fdr:T,workspace:_,organization:t,context:a,snippetsConfig:pr});wt&&Object.keys(wt).length>0&&(Pe=wt,qt=new Set(Object.keys(wt)),a.logger.debug(`Using existing SDK dynamic IRs for: ${Object.keys(wt).join(", ")}`));let jt=await Q8h({workspace:_,organization:t,context:a,snippetsConfig:pr,skipLanguages:qt});jt&&(Pe={...Pe,...jt})}let Er=Le??Mr(Ft.apiName),vr;try{vr=await IUl({fn:()=>T.api.register.registerApiDefinition({orgId:un.OrgId(t),apiId:un.ApiId(Er),definition:At,dynamicIRs:Pe}),maxRetries:I8h,baseDelayMs:v8h,jitterFactor:x8h,isRetryable:U8h,logger:a.logger,label:`registerApiDefinition failed for ${Er}`})}catch(wt){let jt=FUl(wt);return a.logger.error(`FDR registerApiDefinition failed. Error details:
4228
+ ${JSON.stringify(jt,void 0,2)}`),Le!=null?a.failAndThrow(`Failed to publish docs because API definition (${Le}) could not be uploaded. Please contact support@buildwithfern.com`,jt,{code:B.Code.NetworkError}):a.failAndThrow("Failed to publish docs because API definition could not be uploaded. Please contact support@buildwithfern.com",jt,{code:B.Code.NetworkError})}return a.logger.debug(`Registered API Definition ${Le}: ${vr.apiDefinitionId}`),vr.dynamicIRs&&Pe&&(d?a.logger.debug("Skip-upload mode: skipping dynamic IR uploads"):await z8h({dynamicIRs:Pe,dynamicIRUploadUrls:vr.dynamicIRs,context:a,apiId:vr.apiDefinitionId})),ht(At,vr.apiDefinitionId),Oe.set(vr.apiDefinitionId,At),vr.apiDefinitionId},Zt=new A3({domain:n,docsWorkspace:oe,ossWorkspaces:s,apiWorkspaces:o,taskContext:a,editThisPage:l,uploadFiles:async Ft=>{let pr=Ft.map(Rt=>({...Rt,sanitizedPath:w8h(Rt.relativeFilePath)})),qe=new Map(pr.map(Rt=>[Rt.absoluteFilePath,Rt])),Le=new Map(pr.map(Rt=>[Rt.sanitizedPath,Rt.absoluteFilePath])),Ie=pr.map(Rt=>({...Rt,mediaType:QWt.lookup(Rt.absoluteFilePath)})).filter(Rt=>Rt.mediaType!==!1).filter(Rt=>Df.parse(Rt.mediaType)?.isImage()??!1).map(Rt=>Rt.absoluteFilePath),tt=await oQl(Ie,E8h,a);a.logger.debug(`Hashing ${tt.size} image files with concurrency ${xfi}...`);let At=performance.now(),xt=Array.from(tt.values()),Pe=(await Avt(xfi,xt,async Rt=>{let Qr=qe.get(Rt.filePath);if(Qr==null)return null;let ie=Qr.sanitizedPath,{buffer:ke,hash:Be}=await wUl(Qr.absoluteFilePath),_e=QWt.lookup(Qr.absoluteFilePath)||"application/octet-stream";return ve[ie]={hash:Be,contentType:_e,contentLength:ke.byteLength,filename:(0,ths.basename)(Qr.sanitizedPath),width:Rt.width,height:Rt.height},ze.set(Be,Qr.absoluteFilePath),{filePath:un.docs.v1.write.FilePath(xPt(ie)),width:Rt.width,height:Rt.height,blurDataUrl:Rt.blurDataUrl,alt:void 0,fileHash:Be}})).filter(Rt=>Rt!=null),qt=performance.now()-At;a.logger.debug(`Hashed ${Pe.length} images in ${qt.toFixed(0)}ms`);let Er=pr.filter(({absoluteFilePath:Rt})=>!tt.has(Rt));a.logger.debug(`Hashing ${Er.length} non-image files with concurrency ${xfi}...`);let vr=performance.now(),wt=await Avt(xfi,Er,async Rt=>{let{buffer:Qr,hash:ie}=await wUl(Rt.absoluteFilePath),ke=QWt.lookup(Rt.absoluteFilePath)||"application/octet-stream";return ve[Rt.sanitizedPath]={hash:ie,contentType:ke,contentLength:Qr.byteLength,filename:(0,ths.basename)(Rt.sanitizedPath)},ze.set(ie,Rt.absoluteFilePath),{path:un.docs.v1.write.FilePath(xPt(Rt.sanitizedPath)),fileHash:ie}}),jt=performance.now()-vr;if(a.logger.debug(`Hashed ${wt.length} non-image files in ${jt.toFixed(0)}ms`),K==="ledger"){let Rt=[];for(let Qr of pr)ve[Qr.sanitizedPath]!=null&&(et.set(Qr.sanitizedPath,Qr.sanitizedPath),Rt.push({relativeFilePath:Qr.relativeFilePath,absoluteFilePath:Qr.absoluteFilePath,fileId:Qr.sanitizedPath}));return a.logger.debug(`[ledger] Skipping V2 startDocsRegister; resolved ${Rt.length} files by sanitizedPath`),Rt}if(c){let Rt;try{Rt=await T.docs.v2.write.startDocsPreviewRegister({orgId:un.OrgId(t),authConfig:M,filepaths:wt,images:Pe,basePath:ae,previewId:u!=null?xUl(u):void 0})}catch(Qr){return await OUl(Qr,a,t,n,I)}if(Z=Rt.previewUrl,Y=Rt.docsRegistrationId,a.logger.debug(`Received preview registration ID: ${Y}`),d)a.logger.debug("Skip-upload mode: skipping file uploads for docs preview");else{let Qr=new Set(Rt.skippedFiles||[]),ie=Object.fromEntries(Object.entries(Rt.uploadUrls).filter(([_e])=>!Qr.has(_e))),ke=Object.keys(ie).length,Be=Qr.size;ke>0?(a.logger.debug(`Uploading ${ke} files (${Be} skipped)...`),await SUl(ie,r.absoluteFilePath,a,vUl,Le)):a.logger.debug(`No files to upload (all ${Be} up to date)`)}return TUl(Rt.uploadUrls,r.absoluteFilePath,Le)}else{let Rt;try{Rt=await T.docs.v2.write.startDocsRegister({domain:n,customDomains:i,authConfig:M,orgId:un.OrgId(t),filepaths:wt,images:Pe,...ne&&{basepathAware:!0}})}catch(ie){return OUl(ie,a,t,n,I)}Y=Rt.docsRegistrationId,fe=!0,a.logger.debug(`Received production registration ID: ${Y}`);let Qr=Rt.skippedFiles?.length||0;if(Qr>0&&a.logger.info(`Skipped ${Qr} unchanged file${Qr===1?"":"s"} (already uploaded)`),d)a.logger.debug("Skip-upload mode: skipping file uploads for docs");else{let ie=new Set(Rt.skippedFiles||[]),ke=Object.fromEntries(Object.entries(Rt.uploadUrls).filter(([_e])=>!ie.has(_e))),Be=Object.keys(ke).length;Be>0?(a.logger.info(`\u2191 Uploading ${Be} files...`),await SUl(ke,r.absoluteFilePath,a,vUl,Le)):a.logger.info("No files to upload (all up to date)")}return TUl(Rt.uploadUrls,r.absoluteFilePath,Le)}},registerApi:pt,buildTranslatedApiDefinitions:me,targetAudiences:g});a.logger.info("Resolving docs definition...");let fr=performance.now(),Ae=await Zt.resolve(),ce=performance.now()-fr;if(r.config.settings?.substituteEnvVars){a.logger.debug("Applying environment variable substitution to docs definition...");let{jsFiles:Ft,...pr}=Ae;Ae={...XA(pr,{onError:Le=>a.failAndThrow(void 0,Le,{code:B.Code.EnvironmentError})},{substituteAsEmpty:!1}),jsFiles:Ft}}let Ge=Object.keys(Ae.pages).length,lt=o.length,Ee=process.memoryUsage();if(a.logger.info(`Resolved docs definition in ${ce.toFixed(0)}ms: ${Ge} pages${lt?`, ${lt} API workspaces`:""}`),a.logger.debug(`Memory after resolve: RSS=${(Ee.rss/1024/1024).toFixed(2)}MB, Heap=${(Ee.heapUsed/1024/1024).toFixed(2)}MB`),Y==null&&K!=="ledger")return Ce(),a.failAndThrow("Failed to publish docs.","Docs registration ID is missing.",{code:B.Code.InternalError});let De=E?.repo!=null&&E?.branch!=null?{repoUrl:sQl(E.repo,E.type),branch:E.branch,commitSha:E.commitSha}:void 0,dt=async()=>{if(Y==null)return;a.logger.debug("Publishing docs to FDR...");let Ft=performance.now();await T.docs.v2.write.finishDocsRegister({docsRegistrationId:Y,docsDefinition:Ae,excludeApis:m,...ne&&!c&&{basepathAware:!0}});let pr=performance.now()-Ft;a.logger.debug(`Docs published to FDR in ${pr.toFixed(0)}ms`)},nt=async()=>{if(c){let Ft=await EUl({docsDefinition:Ae,organization:t,basePath:ae,previewId:u!=null?xUl(u):u,git:De,token:e.value,fdrOrigin:S,headers:D,context:a,apiDefinitions:Oe,fileManifest:Object.keys(ve).length>0?ve:void 0,filePaths:ze.size>0?ze:void 0,fileIdToPath:et.size>0?et:void 0,editThisPage:l,resolver:Zt});K==="ledger"&&(Z=Ft.previewUrl),a.logger.debug(`[ledger] Preview deployment created: ${Ft.deploymentId}`)}else{let Ft=await bUl({docsDefinition:Ae,organization:t,domain:n,basepath:ae,basepathAware:ne,previewId:u,customDomains:i,git:De,token:e.value,fdrOrigin:S,headers:D,context:a,apiDefinitions:Oe,fileManifest:Object.keys(ve).length>0?ve:void 0,filePaths:ze.size>0?ze:void 0,fileIdToPath:et.size>0?et:void 0,editThisPage:l,resolver:Zt});a.logger.debug(`[ledger] Deployment ${Ft.reusedDeployment?"reused":"created"}: ${Ft.deploymentId}`)}};if(K==="ledger")try{await nt()}catch(Ft){let pr=C8h(Ft);return a.failAndThrow("Failed to publish docs via ledger to "+n+": "+pr,Ft,{code:B.Code.NetworkError})}else if(Y!=null)try{await dt()}catch(Ft){return a.failAndThrow("Failed to publish docs to "+n,Ft,{code:B.Code.NetworkError})}let He=me?Zt.getTranslatedApiSpecs():new Map,er=new Map;if(He.size>0){a.logger.info(`Registering translated API definitions for ${He.size} locale(s)...`);for(let[Ft,pr]of He){let qe=new Map;for(let[Le,_]of pr)try{let Ie=await pt(_);Ie!==Le&&qe.set(Le,Ie)}catch(Ie){a.logger.warn(`Failed to register translated API definition for locale "${Ft}" (API reference will render in the default language): ${String(Ie)}`)}qe.size>0&&er.set(Ft,qe)}}let Wt=Zt.getTranslationPages(),dr=Zt.getTranslationNavigationOverlays(),ii=c?Z:n;K!=="ledger"&&Wt!=null&&Object.keys(Wt).length>0&&(a.logger.info(`Registering translations for ${Object.keys(Wt).length} locale(s)...`),await Promise.all(Object.entries(Wt).map(async([Ft,pr])=>{try{let qe=Zt.getCollectedFileIds(),Le=Zt.getDocsWorkspacePath(),_=Zt.getMarkdownFilesToPathName(),Ie=async ie=>{let ke=ko(Le,ie),Be=ti(Le,we.of(`translations/${Ft}/${ke}`));return await rr(Be)?Be:ie},tt=async ie=>{let ke=await Ie(ie),Be=await(0,zWt.readFile)(ke,"utf-8"),_e=Be.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return _e!=null?Be.slice(_e[0].length):Be},At=async ie=>{let ke=await Ie(ie);return(0,zWt.readFile)(ke,"utf-8")},xt=await Promise.all(Object.entries(pr).map(async([ie,ke])=>{try{let Be=Ae.pages[ie],_e=ti(Le,we.of(ie)),{markdown:yt}=await ST({markdown:ke,absolutePathToFernFolder:Le,absolutePathToMarkdownFile:_e,context:a,markdownLoader:tt}),Rr=await G2({markdown:yt,absolutePathToFernFolder:Le,absolutePathToMarkdownFile:_e,context:a,fileLoader:At}),hn=W2({markdown:Rr,absolutePathToFernFolder:Le,absolutePathToMarkdownFile:_e}),Qn=Uw(hn);Qn=q2(Qn,qe,_,{absolutePathToMarkdownFile:_e,absolutePathToFernFolder:Le},a);let Yi=Be?.editThisPageUrl;if(Yi!=null){let ep=`/fern/${ie}`,ib=`/fern/translations/${Ft}/${ie}`;Yi=Yi.replace(ep,ib)}return[ie,{markdown:Qn,rawMarkdown:Qn,editThisPageUrl:Yi,editThisPageLaunch:Be?.editThisPageLaunch}]}catch(Be){a.logger.warn(`Failed to process translated page "${ie}" for locale "${Ft}": ${String(Be)}. Falling back to base page.`);return}})),_t={...Ae.pages,...Object.fromEntries(xt.filter(ie=>ie!=null))},Pe=Pde(Ae.config.root,pr,a),qt=dr?.[Ft],Er=Ae.config.announcement,vr=Ae.config.navbarLinks;qt!=null&&(Pe=Dde(Pe,qt),Er=Rde(qt)??Er,qt.navbarLinks!=null&&(vr=qt.navbarLinks));let wt=er.get(Ft);if(wt!=null&&wt.size>0&&Pe!=null){let ie={},ke={};for(let[yt,Rr]of wt){let hn=ot.get(yt),Qn=ot.get(Rr);hn!=null&&(ie[yt]=hn),Qn!=null&&(ke[yt]=Qn)}let Be=X3e(Pe,ie,ke);Be.size>0&&a.logger.warn(`Translated API definition(s) [${Array.from(Be).join(", ")}] for locale "${Ft}" diverge from the default-locale spec (e.g. changed OpenAPI tag names, operationIds, or paths, or a missing/added endpoint), so they can't be fully matched to the navigation tree. Serving the default-locale API for those (localized sidebar titles are still applied where they can be matched). For fully localized API reference content, translate only human-readable text and keep tag names/operationIds/paths identical to the base spec.`);let _e=new Set(Object.keys(ke).filter(yt=>!Be.has(yt)));Pe=Object.keys(ke).length>0?Z3e(Pe,ie,ke,{rewritableApiIds:_e}):structuredClone(Pe);for(let[yt,Rr]of wt)Be.has(yt)||t4e(Pe,yt,Rr)}let jt={...Ae,pages:_t,config:{...Ae.config,root:Pe,announcement:Er,navbarLinks:vr}},Rt=Object.keys(pr).length;a.logger.debug(`Sending translation for locale "${Ft}" (${Rt} page${Rt===1?"":"s"})`);let Qr=await fetch(`${S}/v2/registry/docs/translations/register`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.value}`,...D},body:JSON.stringify({domain:ii,customDomains:c?[]:i,orgId:t,locale:Ft,docsDefinition:jt})});if(!Qr.ok){let ie=await Qr.text();throw new Error(`HTTP ${Qr.status}: ${ie}`)}a.logger.debug(`Registered translations for locale "${Ft}"`)}catch(qe){a.logger.warn(`Failed to register translations for locale "${Ft}": ${String(qe)}`)}})));let cn=K2(Z);await M8h({docsDefinition:Ae,isPreview:c,context:a});let bo=Lme(cn,cn);return a.logger.info(de.green(`Published docs to ${bo}`)),cn}catch(oe){throw Ce(),oe}finally{fe=!1,process.removeListener("SIGINT",Fe),process.removeListener("SIGTERM",Fe)}}function DUl(e){return typeof e=="object"&&e!==null&&"uploadUrl"in e&&typeof e.uploadUrl=="string"&&"fileId"in e&&typeof e.fileId=="string"}function S8h(e){if(typeof e=="string")return e;if(DUl(e))return e.uploadUrl;throw new Error(`Unexpected upload URL value: ${JSON.stringify(e)}`)}function T8h(e,t){return DUl(t)?vw.FileId(t.fileId):vw.FileId(e)}async function SUl(e,t,r,n,i){let o=Date.now(),s=Object.keys(e).length;r.logger.debug(`Start uploading ${s} files...`);let a=DBt(Object.entries(e),n),c=0;for(let l of a){await Promise.all(l.map(async([d,f])=>{let m=i.get(d)||ti(t,we.of(d));try{let g=S8h(f),A=QWt.lookup(m);await dy.put(g,await(0,zWt.readFile)(m),{headers:{"Content-Type":A===!1?"application/octet-stream":A,"Cache-Control":"public, max-age=31536000, immutable"}})}catch(g){r.failAndThrow(`Failed to upload ${m}`,g,{code:B.Code.NetworkError})}}));let p=Date.now();c+=l.length,r.logger.debug(`Uploaded ${c}/${s} files in ${p-o}ms`)}let u=Date.now();r.logger.debug(`Finished uploading ${s} files in ${u-o}ms`)}function TUl(e,t,r){let n=[];for(let[i,o]of Object.entries(e)){let s=we.of(i),a=r?.get(i)||ti(t,s);n.push({relativeFilePath:s,absoluteFilePath:a,fileId:T8h(i,o)})}return n}async function OUl(e,t,r,n,i){t.instrumentPostHogEvent({command:"docs-generation",properties:{error:JSON.stringify(e)}});let o=FUl(e);t.logger.debug(`startDocsRegister failed for domain '${n}', org '${r}'. Error details:
4229
4229
  ${JSON.stringify(o,void 0,2)}`);let s=e,a=s?.content;if(a?.reason==="status-code"&&a?.statusCode===409)throw new Dvt;let c=O8h(e,r,n,i);if(c!=null)return t.failAndThrow(c,void 0,{code:B.Code.AuthError});switch(s?.error){case"InvalidCustomDomainError":return t.failAndThrow("Your docs domain should end with docs.buildwithfern.com",void 0,{code:B.Code.ConfigError});case"InvalidDomainError":return t.failAndThrow("Please make sure that none of your custom domains are not overlapping (i.e. one is a substring of another)",void 0,{code:B.Code.ConfigError});case"UnauthorizedError":return t.failAndThrow(RUl(n,r,a,i),void 0,{code:B.Code.AuthError});case"UserNotInOrgError":return t.failAndThrow(`You do not belong to organization '${r}'. Please run '${i}' to ensure you are logged in with the correct account.
4230
4230
 
4231
4231
  Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`,void 0,{code:B.Code.AuthError});case"UnavailableError":return t.failAndThrow("Failed to publish docs. Please try again later or reach out to Fern support at support@buildwithfern.com.",void 0,{code:B.Code.NetworkError});default:return t.failAndThrow("Failed to publish docs.",e,{code:B.Code.NetworkError})}}function O8h(e,t,r,n){if(typeof e!="object"||e==null)return;let i=e.content,o=typeof i=="object"&&i!=null?i:void 0;if(o?.reason==="status-code"){let s=typeof o.statusCode=="number"?o.statusCode:void 0;if(s===401||s===403)return RUl(r,t,o,n)}}function RUl(e,t,r,n){let{code:i,message:o}=R8h(r);switch(i){case"FORBIDDEN":return P8h(e,t,o,n);case"UNAUTHORIZED":return D8h(t,o,n);case"INTERNAL_SERVER_ERROR":return`An internal server error occurred while publishing docs to '${e}'. Please try again or reach out to support@buildwithfern.com for assistance.`;default:return o??`Failed to publish docs to '${e}'. Please reach out to support@buildwithfern.com for assistance.`}}var B8h=["does not belong to organization","User does not belong"];function P8h(e,t,r,n){return r==null?`You do not have permission to publish docs to '${e}' under organization '${t}'.`:B8h.some(i=>r.includes(i))?`You are not a member of organization '${t}'. Please run '${n}' to ensure you are logged in with the correct account.
@@ -4236,7 +4236,7 @@ Please ensure you have membership at https://dashboard.buildwithfern.com, and as
4236
4236
  `);i.failAndThrow(s!=null?`No docs instance found matching '${s}'.
4237
4237
 
4238
4238
  Available instances:
4239
- ${I}`:"No docs instance found. Failed to register.",void 0,{code:B.Code.ConfigError});return}let E=(typeof y.customDomain=="string"?[y.customDomain]:y.customDomain??[]).map(hjl);gjl(y.url,E,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 v;return await i.runInteractiveTask({name:y.url},async()=>{let I=performance.now(),C=()=>PUl({docsWorkspace:n,customDomains:E,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 O=0;;O++)try{v=await C();break}catch(D){if(!(D instanceof Dvt)||O>=MWt.length){if(D instanceof Dvt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:B.Code.NetworkError});throw D}let T=MWt[O]??MWt[MWt.length-1]??6e4,M=T/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${M} minute${M===1?"":"s"} (attempt ${O+1}/${MWt.length})...`),await new Promise(K=>setTimeout(K,T))}let S=performance.now()-I;i.logger.debug(`Docs publishing completed in ${S.toFixed(0)}ms`)}),v}Qt();var Cfi=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 sd({context:this.context,task:this.task});try{let s=await LWt({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.74.2",loginCommand:"fern auth login"});return o.getResult()===Rf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:Mn(s)}}}};Dt();En();var Rvt=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(`
4239
+ ${I}`:"No docs instance found. Failed to register.",void 0,{code:B.Code.ConfigError});return}let E=(typeof y.customDomain=="string"?[y.customDomain]:y.customDomain??[]).map(hjl);gjl(y.url,E,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 v;return await i.runInteractiveTask({name:y.url},async()=>{let I=performance.now(),C=()=>PUl({docsWorkspace:n,customDomains:E,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 O=0;;O++)try{v=await C();break}catch(D){if(!(D instanceof Dvt)||O>=MWt.length){if(D instanceof Dvt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:B.Code.NetworkError});throw D}let T=MWt[O]??MWt[MWt.length-1]??6e4,M=T/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${M} minute${M===1?"":"s"} (attempt ${O+1}/${MWt.length})...`),await new Promise(K=>setTimeout(K,T))}let S=performance.now()-I;i.logger.debug(`Docs publishing completed in ${S.toFixed(0)}ms`)}),v}Qt();var Cfi=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 sd({context:this.context,task:this.task});try{let s=await LWt({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.74.3",loginCommand:"fern auth login"});return o.getResult()===Rf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:Mn(s)}}}};Dt();En();var Rvt=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(`
4240
4240
  `),this.stream.write(`${de.cyan("\u25C6")} ${de.bold(t.title)}
4241
4241
  `),t.subtitle!=null&&this.stream.write(` ${de.dim(t.subtitle)}
4242
4242
  `),this.stream.write(`
@@ -4505,7 +4505,7 @@ ${dKt(this).map(t=>` ${t.fn} - ${t.path}:${t.position}`).join(`
4505
4505
  `),this.hasSameAccess(this.init)||t.write(`${this.init} `),t.writeTextStatement("init"),t.writeNoIndent(`#else
4506
4506
  `),t.writeTextStatement("set"),t.writeNoIndent(`#endif
4507
4507
  `)):(this.hasSameAccess(this.init)||t.write(`${this.init} `),this.accessors?.init?(t.write("init"),t.write(" => "),this.accessors.init(t),t.writeTextStatement("")):t.write("init; "))),this.set&&(this.hasSameAccess(this.set)||t.write(`${this.set} `),this.accessors?.set?(t.write("set"),t.write(" => "),this.accessors.set(t),t.writeTextStatement("")):t.write("set; ")),t.write("}")),this.initializer!=null?(i?t.write(" => "):t.write(" = "),this.initializer.write(t),t.writeLine(";")):!this.skipDefaultInitializer&&!r&&n?Da.Type(this.type)&&this.type.writeEmptyCollectionInitializer(t):!this.get&&!this.init&&t.writeLine(";")}hasSameAccess(t){return t===!0||t===this.access}};Dt();var zK;(function(e){e[e.INSTANCE=0]="INSTANCE",e[e.STATIC=1]="STATIC"})(zK||(zK={}));var SRe=class e extends dRe{name;isAsync;access;return;noBody;body;bodyType;summary;doc;type;reference;override;parameters;typeParameters;annotations;interfaceReference;constructor({name:t,isAsync:r,override:n,access:i,return_:o,body:s,noBody:a,bodyType:c,summary:u,doc:l,type:p,classReference:d,parameters:f,typeParameters:m,annotations:g,codeExample:A,interfaceReference:y,origin:E,enclosingType:v},I){super({enclosingType:v},E,I),this.name=t,this.isAsync=r??!1,this.override=n??!1,this.access=i,this.return=o,this.noBody=a??!1,this.body=s,this.bodyType=c??e.BodyType.Statement,this.summary=u,this.doc=this.csharp.xmlDocBlockOf(l??{summary:u,codeExample:A}),this.type=p??zK.INSTANCE,this.reference=d,this.parameters=f??[],this.typeParameters=m??[],this.annotations=(g??[]).map(C=>C instanceof gF?this.csharp.annotation({reference:C}):C),this.interfaceReference=y}get isAsyncEnumerable(){return Da.AsyncEnumerable(this.return)}addParameter(t){return t instanceof QK||(t=new QK(t,this.generation)),this.parameters.push(t),t}write(t){if(t.writeNode(this.doc),this.annotations.forEach(r=>{r.write(t)}),t.writeNewLineIfLastLineNot(),this.access&&t.write(`${this.access} `),this.type===zK.STATIC&&t.write("static "),this.isAsync&&t.write("async "),this.override&&t.write("override "),this.return==null?this.isAsync?(t.writeNode(this.System.Threading.Tasks.Task()),t.write(" ")):t.write("void "):(this.isAsync&&!this.isAsyncEnumerable?t.writeNode(this.System.Threading.Tasks.Task(this.return)):this.return.write(t),t.write(" ")),this.interfaceReference&&t.write(`${this.interfaceReference.name}.`),t.write(this.name),this.typeParameters.length>0&&(t.write("<"),this.typeParameters.forEach((r,n)=>{r.write(t),n<this.typeParameters.length-1&&t.write(", ")}),t.write(">")),t.write("("),this.parameters.forEach((r,n)=>{r.write(t),n<this.parameters.length-1&&t.write(", ")}),t.write(")"),this.noBody)t.writeLine(";");else switch(this.bodyType){case e.BodyType.Statement:t.write(" "),t.pushScope(),this.body?.write(t),t.popScope();break;case e.BodyType.Expression:t.write(" => "),this.body?.write(t),t.writeSemicolonIfLastCharacterIsNot();break;default:be(this.bodyType)}}getParameters(){return this.parameters}};(function(e){e.BodyType={Statement:"statement",Expression:"expression"}})(SRe||(SRe={}));var ECt=class extends G3{access;partial;reference;interfaceReferences;fields=[];methods=[];constructor({name:t,namespace:r,access:n,partial:i,interfaceReferences:o,enclosingType:s,origin:a},c){super(a,c),t=t||(a?this.model.getClassNameFor(a):nI("Class/Interface name or origin is required")),this.reference=s?this.csharp.classReference({name:t,enclosingType:s}):this.csharp.classReference({name:t,namespace:r||nI("Class/Interface: Namespace or enclosingType is required ")}),this.access=n,this.partial=i??!1,this.interfaceReferences=o??[]}get name(){return this.reference.name}get namespace(){return this.reference.namespace}get enclosingType(){return this.reference.enclosingType}get isNested(){return this.enclosingType!=null}explicit(t){return this.origin?this.model.explicit(Da.Provenance(this.origin)?this.origin.node:this.origin,t):nI(`Cannot create explicit named member '${t}' on '${this.name}' because the class is not bound to an origin.`)}getField(t){return this.fields.find(r=>this.model.provenance(r.origin)?.jsonPath===t.jsonPath)}addField(t){t.enclosingType=this.reference;let r=new bCt(t,this.generation);return this.fields.push(r),r}addMethod(t){t.enclosingType=this.reference;let r=new SRe(t,this.generation);return this.methods.push(r),r}get multipartMethodName(){return"AddJsonPart"}get multipartMethodNameForCollection(){return"AddJsonParts"}get isOptional(){return!1}get isCollection(){return!1}get isReferenceType(){}asOptional(){return new Yq(this,this.generation)}asNullable(){return new B_e(this,this.generation)}asNonOptional(){return this}get defaultValue(){return this.csharp.Literal.null()}get fullyQualifiedName(){return this.reference.fullyQualifiedName}};var uae=class e extends ECt{static ClassType={Class:"class",Record:"record",Struct:"struct",RecordStruct:"record struct"};static Access=WC;static_;abstract_;sealed;readonly;parentClassReference;type;summary;doc;annotations=[];primaryConstructor;namespaceReferences=[];skipNamespaceDeclaration;constructors=[];operators=[];nestedClasses=[];nestedInterfaces=[];rawBodyBlocks=[];constructor({name:t,namespace:r,access:n,static_:i,abstract_:o,sealed:s,partial:a,readonly:c,parentClassReference:u,interfaceReferences:l,enclosingType:p,type:d,summary:f,doc:m,annotations:g,primaryConstructor:A,skipNamespaceDeclaration:y,origin:E},v){super({name:t,namespace:r,access:n,partial:a,interfaceReferences:l,enclosingType:p,origin:E},v),this.skipNamespaceDeclaration=y??!1,this.static_=i??!1,this.abstract_=o??!1,this.sealed=s??!1,this.readonly=c??!1,this.type=d??e.ClassType.Class,this.summary=f,this.doc=this.csharp.xmlDocBlockOf(m??{summary:f}),this.parentClassReference=u,this.annotations=(g??[]).map(I=>I instanceof gF?this.csharp.annotation({reference:I}):I),this.primaryConstructor=A}addConstructor(t){let r=new e.Constructor(t,this.generation);return this.constructors.push(r),r}addNestedClass(t){if(t instanceof e||(t.enclosingType=this.reference,t=new e(t,this.generation)),!t.isNested)throw new Error(`Set the enclosingType of the class ${this.name} to add the nested class ${t.name}.`);return this.nestedClasses.push(t),t}addNestedClasses(t){t.forEach(r=>{r instanceof e?this.addNestedClass(r):this.addNestedClass(r)})}addAnnotation(t){return t instanceof ghe||(t=new ghe(t,this.generation)),this.annotations.push(t),t}addOperator(t){this.operators.push(t)}addOperators(t){t.forEach(r=>this.addOperator(r))}addRawBodyContent(t){this.rawBodyBlocks.push(t)}write(t){if(this.namespaceReferences.forEach(r=>{t.addNamespace(r)}),!this.isNested&&!this.skipNamespaceDeclaration&&(t.writeLine(`namespace ${this.namespace};`),t.newLine()),t.writeNode(this.doc),this.annotations.forEach(r=>{r.write(t)}),this.skipNamespaceDeclaration||t.writeNewLineIfLastLineNot(),t.write(`${this.access}`),this.static_&&t.write(" static"),this.abstract_&&t.write(" abstract"),this.sealed&&t.write(" sealed"),this.readonly&&t.write(" readonly"),this.partial&&t.write(" partial"),t.write(` ${this.type}`),t.write(` ${this.name}`),this.primaryConstructor!=null&&this.primaryConstructor.parameters.length>0){let r=this.primaryConstructor;t.write("("),r.parameters.forEach((n,i)=>{i>0&&t.write(","),n.write(t)}),t.write(")")}if(this.parentClassReference!=null||this.interfaceReferences.length>0){if(t.write(" : "),this.parentClassReference!=null&&(this.parentClassReference.write(t),this.interfaceReferences.length>0&&t.write(", ")),this.primaryConstructor!=null&&this.primaryConstructor.superClassArguments.length>0){let r=this.primaryConstructor;t.write("("),this.primaryConstructor.superClassArguments.forEach((n,i)=>{n.write(t),i<r.superClassArguments.length-1&&t.write(", ")}),t.write(")")}this.interfaceReferences.forEach((r,n)=>{r.write(t),n<this.interfaceReferences.length-1&&t.write(", ")})}if(!this.hasBody()){t.write(";");return}t.writeNewLineIfLastLineNot(),t.pushScope(),this.writeConsts(t),this.writeFieldFields(t),this.writeConstructors(t),this.writeProperties(t),this.writeMethods(t),this.writeOperators(t),this.writeRawBodyBlocks(t),this.writeNestedClasses(t),this.writeNestedInterfaces(t),t.popScope()}hasBody(){return this.fields.length>0||this.constructors.length>0||this.nestedClasses.length>0||this.nestedInterfaces.length>0||this.methods.length>0||this.operators.length>0||this.rawBodyBlocks.length>0}writeConstructors(t){this.constructors.forEach(r=>{t.writeNode(this.csharp.xmlDocBlockOf(r.doc)),r.annotations.forEach(n=>{n.write(t),t.writeNewLineIfLastLineNot()}),t.write(`${r.access} ${this.name} (`),r.parameters.forEach((n,i)=>{n.write(t),i<r.parameters.length-1&&t.write(", ")}),t.write(")"),r.baseConstructorCall!=null&&(t.write(" : "),r.baseConstructorCall.write(t)),t.pushScope(),r.body.write(t),t.popScope(),t.newLine()})}writeFields({writer:t,fields:r}){r.forEach((n,i)=>{n.write(t),t.writeNewLineIfLastLineNot(),i<this.fields.length-1&&t.newLine()})}writeConsts(t){this.writeFields({writer:t,fields:this.getFields().sort(ICt).sort($Ps).filter(this.fieldConstFilter())})}writeFieldFields(t){this.writeFields({writer:t,fields:this.getFields().sort(ICt).sort($Ps).filter(this.fieldFieldFilter())})}writeProperties(t){this.writeFields({writer:t,fields:this.getFields().sort(ICt).sort($Ps).filter(this.fieldPropertyFilter())})}writeMethods(t){this.methods.sort(ICt).sort(a2g).sort(s2g).forEach(r=>{r.write(t),t.writeNewLineIfLastLineNot(),t.newLine()})}writeOperators(t){this.operators.forEach(r=>{this.writeOperator({writer:t,operator:r}),t.newLine()})}writeRawBodyBlocks(t){this.rawBodyBlocks.forEach(r=>{r.write(t),t.writeNewLineIfLastLineNot()})}writeNestedClasses(t){this.nestedClasses.sort(ICt).forEach((r,n)=>{r.write(t),t.writeNewLineIfLastLineNot(),n<this.fields.length-1&&t.newLine()})}writeNestedInterfaces(t){this.nestedInterfaces.sort(ICt).forEach((r,n)=>{r.write(t),t.writeNewLineIfLastLineNot(),n<this.fields.length-1&&t.newLine()})}fieldConstFilter(){return t=>t.isConst}fieldFieldFilter(){return t=>t.isField}fieldPropertyFilter(){return t=>t.isProperty}getFields(){return this.fields}get isReferenceType(){return this.type===e.ClassType.Class||this.type===e.ClassType.Record}writeOperator({writer:t,operator:r}){if(t.write("public static "),r.type===e.CastOperator.Type.Explicit||r.type===e.CastOperator.Type.Implicit){t.write(`${r.type} `),t.write("operator ");let n=r.to??this.reference;t.writeNode(n),t.write("("),r.parameter.write(t)}else{let n=r;n.return.write(t),t.write(" operator "),t.write(`${r.type}(`),n.parameters.forEach((i,o)=>{i.write(t),o<n.parameters.length-1&&t.write(", ")})}r.useExpressionBody?(t.write(") => "),t.writeNodeStatement(r.body)):(t.write(") {"),t.writeNode(r.body),t.writeLine("}"))}addNamespaceReference(t){this.namespaceReferences.push(t)}};(function(e){class t{generation;doc;body;parameters;access;baseConstructorCall;annotations;constructor({doc:i,body:o,parameters:s,access:a,baseConstructorCall:c,annotations:u},l){this.generation=l,this.parameters=s??[],this.access=a??WC.Public,this.doc=i,this.annotations=u??[],this.body=new xRe({},this.generation),o!=null&&this.body.append(o),this.baseConstructorCall=c}addParameter(i){let o=new QK(i,this.generation);return this.parameters.push(o),o}}e.Constructor=t;let r;(function(n){n.Type={Implicit:"implicit",Explicit:"explicit"}})(r=e.CastOperator||(e.CastOperator={}))})(uae||(uae={}));function FZl(e){switch(e){case void 0:return 0;case WC.Private:return 1;case WC.Protected:return 2;case WC.Internal:return 3;case WC.Public:return 4}}function ICt(e,t){return FZl(e.access)-FZl(t.access)}function $Ps(e,t){return e.isStatic===t.isStatic?0:e.isStatic?-1:1}function s2g(e,t){return e.type===zK.STATIC&&t.type!==zK.STATIC?-1:e.type!==zK.STATIC&&t.type===zK.STATIC?1:0}function a2g(e,t){return e.name==="FromProto"||e.name==="ToProto"?t.name==="Equals"||t.name==="ToString"?-1:1:t.name==="FromProto"||t.name==="ToProto"?e.name==="Equals"||e.name==="ToString"?1:-1:e.name==="ToString"?1:t.name==="ToString"?-1:e.name==="Equals"?t.name==="ToString"?-1:1:t.name==="Equals"?e.name==="ToString"?1:-1:0}var vCt=class extends G3{get name(){return this.reference.name}get namespace(){return this.reference.namespace}access;reference;annotations;fields=[];generateSerializer=!1;serializerClassReference;constructor({name:t,namespace:r,access:n,annotations:i,origin:o},s){super(o,s),this.reference=this.csharp.classReference({name:t,namespace:r,origin:o}),this.access=n,this.annotations=i??[]}getNamespace(){return this.namespace}addAnnotation(t){this.annotations.push(t)}addMember(t){this.fields.push({name:t.name,wireValue:t.value,value:this.csharp.annotation({reference:this.System.Runtime.Serialization.EnumMember,argument:this.csharp.codeblock(r=>{r.write("Value = "),r.writeNode(this.csharp.string_({string:t.value}))})})})}enableSerializerGeneration(){return this.generateSerializer=!0,this.serializerClassReference=this.csharp.classReference({name:`${this.name}Serializer`,namespace:this.namespace}),this.serializerClassReference}write(t){t.writeLine(`namespace ${this.namespace};`),t.newLine();for(let r of this.annotations)r.write(t);t.writeNewLineIfLastLineNot(),t.write(`${this.access} `),t.write("enum "),t.writeLine(`${this.name}`),t.pushScope(),this.fields.forEach((r,n)=>{r.value.write(t),t.write(r.name),n<this.fields.length-1&&(t.writeLine(","),t.newLine())}),t.writeNewLineIfLastLineNot(),t.popScope(),this.generateSerializer&&this.writeSerializerClass(t)}writeSerializerClass(t){t.newLine(),t.writeLine(`internal class ${this.name}Serializer : global::System.Text.Json.Serialization.JsonConverter<${this.name}>`),t.pushScope(),t.writeLine(`private static readonly global::System.Collections.Generic.Dictionary<string, ${this.name}> _stringToEnum = new()`),t.pushScope();for(let r of this.fields)t.writeLine(`{ ${JSON.stringify(mKt(r))}, ${this.name}.${r.name} },`);t.popScope(!1),t.writeLine(";"),t.newLine(),t.writeLine(`private static readonly global::System.Collections.Generic.Dictionary<${this.name}, string> _enumToString = new()`),t.pushScope();for(let r of this.fields)t.writeLine(`{ ${this.name}.${r.name}, ${JSON.stringify(mKt(r))} },`);t.popScope(!1),t.writeLine(";"),t.newLine(),t.writeLine(`public override ${this.name} Read(ref global::System.Text.Json.Utf8JsonReader reader, global::System.Type typeToConvert, global::System.Text.Json.JsonSerializerOptions options)`),t.pushScope(),t.writeLine('var stringValue = reader.GetString() ?? throw new global::System.Exception("The JSON value could not be read as a string.");'),t.writeLine("return _stringToEnum.TryGetValue(stringValue, out var enumValue) ? enumValue : default;"),t.popScope(),t.newLine(),t.writeLine(`public override void Write(global::System.Text.Json.Utf8JsonWriter writer, ${this.name} value, global::System.Text.Json.JsonSerializerOptions options)`),t.pushScope(),t.writeLine("writer.WriteStringValue(_enumToString.TryGetValue(value, out var stringValue) ? stringValue : null);"),t.popScope(),t.newLine(),t.writeLine(`public override ${this.name} ReadAsPropertyName(ref global::System.Text.Json.Utf8JsonReader reader, global::System.Type typeToConvert, global::System.Text.Json.JsonSerializerOptions options)`),t.pushScope(),t.writeLine('var stringValue = reader.GetString() ?? throw new global::System.Exception("The JSON property name could not be read as a string.");'),t.writeLine("return _stringToEnum.TryGetValue(stringValue, out var enumValue) ? enumValue : default;"),t.popScope(),t.newLine(),t.writeLine(`public override void WriteAsPropertyName(global::System.Text.Json.Utf8JsonWriter writer, ${this.name} value, global::System.Text.Json.JsonSerializerOptions options)`),t.pushScope(),t.writeLine("writer.WritePropertyName(_enumToString.TryGetValue(value, out var stringValue) ? stringValue : value.ToString());"),t.popScope(),t.popScope()}};var xCt=class extends ECt{constructor({name:t,namespace:r,access:n,partial:i,interfaceReferences:o,enclosingType:s,origin:a},c){super({name:t,namespace:r,access:n,partial:i,interfaceReferences:o,enclosingType:s,origin:a},c)}write(t){this.isNested||(t.writeLine(`namespace ${this.namespace};`),t.newLine()),t.write(`${this.access} `),this.partial&&t.write("partial "),t.write("interface "),t.writeLine(`${this.name}`),this.interfaceReferences.length>0&&(t.write(" : "),this.interfaceReferences.forEach((r,n)=>{r.write(t),n<this.interfaceReferences.length-1&&t.write(", ")})),t.pushScope();for(let r of this.fields)r.write(t),t.writeLine("");t.dedent(),t.indent();for(let r of this.methods)r.write(t),t.writeLine("");t.popScope()}};var CCt=class extends G3{get name(){return this.reference.name}get namespace(){return this.reference.namespace}reference;parentClassReference;testMethods=[];constructor({name:t,namespace:r,parentClassReference:n,origin:i},o){super(i,o),this.reference=this.csharp.classReference({name:t,namespace:r,origin:i}),this.parentClassReference=n}write(t){t.writeNode(this.getClass())}getClass(){let t=[this.NUnit.Framework.TestFixture,this.csharp.annotation({reference:this.NUnit.Framework.Parallelizable,argument:"ParallelScope.Self"})],r=new uae({access:WC.Public,name:this.name,namespace:this.namespace,annotations:t,parentClassReference:this.parentClassReference,origin:this.origin},this.generation);for(let n of this.testMethods)r.addMethod({access:WC.Public,isAsync:n.isAsync,name:n.name,parameters:[],body:n.body,annotations:[this.NUnit.Framework.Test]});return r}addTestMethod(t){this.testMethods.push(t)}};var eDs={System:["AccessViolationException","Action","Activator","AggregateException","AppContext","AppDomain","AppDomainSetup","AppDomainUnloadedException","ApplicationException","ApplicationId","ArgIterator","ArgumentException","ArgumentNullException","ArgumentOutOfRangeException","ArithmeticException","Array","ArrayTypeMismatchException","AssemblyLoadEventArgs","AssemblyLoadEventHandler","AsyncCallback","Attribute","AttributeTargets","AttributeUsageAttribute","BadImageFormatException","Base64FormattingOptions","BitConverter","Boolean","Buffer","Byte","CannotUnloadAppDomainException","Char","CharEnumerator","CLSCompliantAttribute","Console","ConsoleCancelEventArgs","ConsoleCancelEventHandler","ConsoleColor","ConsoleKey","ConsoleKeyInfo","ConsoleModifiers","ConsoleSpecialKey","ContextBoundObject","ContextMarshalException","ContextStaticAttribute","Convert","CultureAwareComparer","DataMisalignedException","DateOnly","DateTime","DateTimeKind","DateTimeOffset","DayOfWeek","DBNull","Decimal","Delegate","DivideByZeroException","DllNotFoundException","Double","DuplicateWaitObjectException","EntryPointNotFoundException","Enum","Environment","EnvironmentVariableTarget","EventArgs","EventHandler","Exception","ExecutionEngineException","FieldAccessException","FlagsAttribute","FormatException","FormattableString","GC","GCCollectionMode","GCGenerationInfo","GCKind","GCMemoryInfo","GCNotificationStatus","Guid","Half","HashCode","IAsyncDisposable","IAsyncResult","ICloneable","IComparable","IConvertible","ICustomFormatter","IDisposable","IFormatProvider","IFormattable","Index","IndexOutOfRangeException","InsufficientExecutionStackException","InsufficientMemoryException","Int128","Int16","Int32","Int64","IntPtr","InvalidCastException","InvalidOperationException","InvalidProgramException","InvalidTimeZoneException","ISpanFormattable","IUtf8SpanFormattable","LoaderOptimization","LoaderOptimizationAttribute","LocalDataStoreSlot","MarshalByRefObject","Math","MathF","MemberAccessException","MemoryExtensions","MethodAccessException","MidpointRounding","MissingFieldException","MissingMemberException","MissingMethodException","ModuleHandle","MTAThreadAttribute","MulticastDelegate","MulticastNotSupportedException","NonSerializedAttribute","NotFiniteNumberException","NotImplementedException","NotSupportedException","Nullable","NullReferenceException","Object","ObjectDisposedException","ObsoleteAttribute","OperatingSystem","OperationCanceledException","OrdinalComparer","OutOfMemoryException","OverflowException","ParamArrayAttribute","PlatformID","PlatformNotSupportedException","Random","Range","RankException","ResolveEventArgs","ResolveEventHandler","RuntimeArgumentHandle","RuntimeFieldHandle","RuntimeMethodHandle","RuntimeTypeHandle","SByte","SerializableAttribute","Single","StackOverflowException","STAThreadAttribute","String","StringComparer","StringComparison","StringNormalizationExtensions","StringSplitOptions","SystemException","ThreadStaticAttribute","TimeOnly","TimeoutException","TimeProvider","TimeSpan","TimeZone","TimeZoneInfo","TimeZoneNotFoundException","Tuple","TupleExtensions","Type","TypeAccessException","TypeCode","TypedReference","TypeInitializationException","TypeLoadException","TypeUnloadedException","UInt128","UInt16","UInt32","UInt64","UIntPtr","UnauthorizedAccessException","UnhandledExceptionEventArgs","UnhandledExceptionEventHandler","UnitySerializationHolder","ValueTuple","ValueType","Version","Void","WeakReference","Buffers","Collections","ComponentModel","Diagnostics","Globalization","IO","Linq","Net","Numerics","Reflection","Resources","Runtime","Security","Text","Threading"],"System.Collections.Generic":["ByteEqualityComparer","CollectionExtensions","IEnumerable","KeyNotFoundException","KeyValuePair","NonRandomizedStringEqualityComparer","ReferenceEqualityComparer"],"System.IO":["BinaryReader","BinaryWriter","BufferedStream","Directory","DirectoryInfo","DirectoryNotFoundException","EndOfStreamException","EnumerationOptions","File","FileAccess","FileAttributes","FileInfo","FileLoadException","FileMode","FileNotFoundException","FileOptions","FileShare","FileStream","FileStreamOptions","FileSystemInfo","HandleInheritability","InvalidDataException","IOException","MatchCasing","MatchType","MemoryStream","Path","PathTooLongException","RandomAccess","SearchOption","SeekOrigin","Stream","StreamReader","StreamWriter","StringReader","StringWriter","TextReader","TextWriter","UnixFileMode","UnmanagedMemoryAccessor","UnmanagedMemoryStream","System.IO.Enumeration"],"System.Linq":["Enumerable"],"System.Net.Http":["HttpClient","HttpMethod"],"System.Threading":["AbandonedMutexException","ApartmentState","AsyncFlowControl","AutoResetEvent","CancellationToken","CancellationTokenRegistration","CancellationTokenSource","CompressedStack","ContextCallback","EventResetMode","EventWaitHandle","ExecutionContext","Interlocked","IOCompletionCallback","IThreadPoolWorkItem","ITimer","LazyInitializer","LazyThreadSafetyMode","Lock","LockRecursionException","LockRecursionPolicy","ManualResetEvent","ManualResetEventSlim","Monitor","Mutex","NativeOverlapped","Overlapped","ParameterizedThreadStart","PeriodicTimer","PreAllocatedOverlapped","ReaderWriterLockSlim","RegisteredWaitHandle","Semaphore","SemaphoreFullException","SemaphoreSlim","SendOrPostCallback","SpinLock","SpinWait","SynchronizationContext","SynchronizationLockException","Thread","ThreadAbortException","ThreadExceptionEventArgs","ThreadExceptionEventHandler","ThreadInterruptedException","ThreadPool","ThreadPoolBoundHandle","ThreadPriority","ThreadStart","ThreadStartException","ThreadState","ThreadStateException","Timeout","Timer","TimerCallback","Volatile","WaitCallback","WaitHandle","WaitHandleCannotBeOpenedException","WaitHandleExtensions","WaitOrTimerCallback","Tasks"],"System.Threading.Tasks":["ConcurrentExclusiveSchedulerPair","ConfigureAwaitOptions","Task","TaskAsyncEnumerableExtensions","TaskCanceledException","TaskCompletionSource","TaskContinuationOptions","TaskCreationOptions","TaskExtensions","TaskFactory","TaskScheduler","TaskSchedulerException","TaskStatus","TaskToAsyncResult","UnobservedTaskExceptionEventArgs","ValueTask","Sources"]};var c2g=new Set(["abstract","as","base","bool","break","byte","case","catch","char","checked","class","const","continue","decimal","default","delegate","do","double","else","enum","event","explicit","extern","false","finally","fixed","float","for","foreach","goto","if","implicit","in","int","interface","internal","is","lock","long","namespace","new","null","object","operator","out","override","params","private","protected","public","readonly","ref","return","sbyte","sealed","short","sizeof","stackalloc","static","string","struct","switch","this","throw","true","try","typeof","uint","ulong","unchecked","unsafe","ushort","using","virtual","void","volatile","while"]);var u2g=new Set(["from","where","select","orderby","groupby","into","let","join","on","equals"]),l2g=new Set(["async","await"]),p2g=new Set(["yield"]),f2g=new Set(["var","dynamic"]),d2g=new Set(["using","alias"]);var m2g=new Set(["required","scoped","unmanaged","managed"]),h2g=new Set(["when","and","or","not"]),g2g=new Set(["Equals","GetHashCode","ToString","GetType","MemberwiseClone","Finalize"]),A2g=new Set([...c2g,...u2g,...l2g,...p2g,...f2g,...d2g,...m2g,...h2g]),Qgi=class{registry;name;jsonPath;constructor(t,r,n){this.registry=t,this.name=r,this.jsonPath=n}};var zgi=class{scope;constructor(t){this.scope=t}byName=new Map;byPath=new Map;redirections=new Map;[Symbol.iterator](){return this.byName.values()}has(t){return this.byName.has(t)}getByJsonPath(t){return this.byPath.get(t)}getByName(t){return this.byName.get(t)}getRedirectedName(t){return this.redirections.get(t)}set(t){this.byName.has(t.name)&&nI(`set: ${t.name} in ${this.scope.fullyQualifiedName} already exists`),t.jsonPath&&this.byPath.has(t.jsonPath)&&nI(`set: ${t.name} in ${this.scope.fullyQualifiedName} already exists by jsonPath`),this.byName.set(t.name,t),t.jsonPath&&this.byPath.set(t.jsonPath,t)}redirect(t,r){this.redirections.has(t)&&nI(`redirect: ${t} in ${this.scope.fullyQualifiedName} already has a redirect`),this.redirections.set(t,r)}},tDs=class extends Qgi{namespace;fullyQualifiedName;fields;methods;constructor(t,r,n,i){super(t,r),this.namespace=n,this.fullyQualifiedName=i,this.fields=new zgi(this),this.methods=new zgi(this)}isKeyword(t){return A2g.has(t)}isBuiltinMemberName(t){return g2g.has(t)}isTypeName(t){return this.name===t}isField(t){return this.fields.has(t)}isMethod(t){return this.methods.has(t)}isMember(t){return this.isField(t)||this.isMethod(t)}nameBlocked(t){if(this.isKeyword(t))return"keyword";if(this.isBuiltinMemberName(t))return"builtin";if(this.isTypeName(t))return"typeName";if(this.isField(t))return"field";if(this.isMethod(t))return"method"}getAlternativeName(t){let r=`${t}_`,n=2;for(;this.nameBlocked(r);)r=`${t}_${n}`,n++;return r}getFieldByJsonPath(t){return t!==void 0?this.fields.getByJsonPath(t):void 0}getFieldByName(t){return this.fields.getByName(t)}getRedirectedFieldName(t){return this.fields.getRedirectedName(t)}registerField(t,r,n){let i=this.registry.model.jsonPath(r);if(i){let a=this.fields.getByJsonPath(i);if(a)return a.name}let o=this.fields.getByName(t);if(o&&i===o.jsonPath)return t;switch(this.nameBlocked(t)){case"field":r&&Da.Provenance(r)&&r.explicit||nI(`Field ${t} already exists - attempting to add a duplicate field with the same name that is not an explicitly named property`);break;case"keyword":case"builtin":case"typeName":case"method":break;default:return this.fields.set(new Mgi(this.registry,t,this,i,n)),this.registry.setFieldNameShortcut(i,t),t}let s=this.getAlternativeName(t);return this.fields.set(new Mgi(this.registry,s,this,i,n)),this.fields.redirect(t,s),this.registry.setFieldNameShortcut(i,s),s}getFieldName(t,r){let n=this.getFieldByJsonPath(this.registry.model.jsonPath(t))?.name;if(n)return n;if(Da.Provenance(t)){let s=this.getRedirectedFieldName(r);if(s)return s;let a=this.getFieldByName(r);return a?this.registry.model.provenance(a.jsonPath)?.explicit?r:`${r}_`:r}let i=this.getFieldByName(r);if(i)return this.registry.model.provenance(i.jsonPath)?.explicit?r:i.name;let o=this.getRedirectedFieldName(r);if(o)return o;this.isMethod(r)}},rDs=class extends Qgi{scope;constructor(t,r,n,i){super(t,r,i),this.scope=n}},Mgi=class extends rDs{field;constructor(t,r,n,i,o){super(t,r,n,i),this.field=o}};var SCt=class e{generation;classReferenceByJsonPath=new Map;typeRegistry=new Map;namespaceRegistry=new Map;typeNames=new Map;namespaceNames=new Map;implicitNamespaces=new Set;shortcuts=new Map;knownBuiltInIdentifiers=new Set(["Text","Json","Xml","Security","Collections","Data","Diagnostics","Globalization","Math","Reflection","Runtime","Security","Serialization","Threading","Xml"]);constructor(t){this.generation=t,this.initializeBuiltIns()}get csharp(){return this.generation.csharp}get model(){return this.generation.model}initializeBuiltIns(){for(let[t,r]of Object.entries(eDs))t.split(".").forEach(n=>this.knownBuiltInIdentifiers.add(n)),r.forEach(n=>this.knownBuiltInIdentifiers.add(n));for(let[t,r]of Object.entries(eDs)){for(let i of r)this.typeNames.set(i,new Set([t]));let n=t.split(".")[0];n&&this.typeNames.set(n,new Set([t]))}this.typeNames.set("System",new Set(["System"])),this.typeNames.set("NUnit",new Set(["NUnit"])),this.typeNames.set("OneOf",new Set(["OneOf"])),this.knownBuiltInIdentifiers.add("NUnit"),this.knownBuiltInIdentifiers.add("OneOf")}setFieldNameShortcut(t,r){if(t){let n=this.shortcuts.get(t);n&&n!==r&&nI(`BAD_BAD_BAD setFieldNameShortcut: ${t} already has a name: ${n} - while setting to ${r} - if this is happening, then you could be getting back the wrong name later!`),this.shortcuts.set(t,r)}}getFieldNameByOrigin(t){return this.shortcuts.get(this.model.jsonPath(t)??">ignore<")}isKnownBuiltInIdentifier(t){return!t||typeof t!="string"?!1:this.knownBuiltInIdentifiers.has(t)}isKnownNamespace(t){return!t||typeof t!="string"?!1:this.namespaceRegistry.has(t)}isRegisteredTypeName(t){return this.typeRegistry.has(t)}isAmbiguousTypeName(t){return t?(this.typeNames.get(t)?.size??0)>1:!1}isAmbiguousNamespaceName(t){return t?(this.namespaceNames.get(t)?.size??0)>1:!1}hasTypeNamespaceConflict(t){return!t||this.knownBuiltInIdentifiers.has(t)?!1:this.typeNames.has(t)&&(this.namespaceNames.get(t)?.has("")??!1)}static fullyQualifiedNameOf(t){return t.enclosingType?`${t.enclosingType.fullyQualifiedName??`${t.namespace}.${t.enclosingType.name}`}+${t.name}`:`${t.namespace}.${t.name}`}registerNamespace(t,r){this.namespaceRegistry.has(t)&&this.namespaceRegistry.get(t)!==r||this.namespaceRegistry.set(t,r)}trackType(t,r){let{name:n,namespace:i,enclosingType:o,fullyQualifiedName:s,origin:a}=t;if(a){let c=this.model.jsonPath(a)??nI(`JsonPath not found for origin: ${JSON.stringify(a).substring(0,100)}`);this.classReferenceByJsonPath.set(c,t)}if(r&&r!==s&&!this.typeRegistry.has(r)&&this.typeRegistry.set(r,t),!this.typeRegistry.has(s)){this.typeRegistry.set(s,t);for(let c of this.allNamespacesOf(i))this.registerNamespace(c,c);o||this.trackTypeName(n,i);for(let c of[this.generation.namespaces.root,...this.implicitNamespaces])if(i.startsWith(c)){let u=i.split(".")[c.split(".").length];u&&this.trackTypeName(u,i)}}return t}addImplicitNamespace(t){this.implicitNamespaces.add(t)}isNamespaceImplicit(t){return this.implicitNamespaces.has(t)}get implicitlyImportedNamespaces(){return[...this.implicitNamespaces]}trackTypeName(t,r){this.typeNames.has(t)?this.typeNames.get(t)?.add(r):this.typeNames.set(t,new Set([r]));let n=r.split("."),i="";for(let o of n)this.namespaceNames.has(o)?this.namespaceNames.get(o)?.add(i):this.namespaceNames.set(o,new Set([i])),i=i?`${i}.${o}`:o}allNamespacesOf(t){if(!t||typeof t!="string")return new Set;let r="",n=new Set;for(let i of t.split("."))i.trim()&&(r=r?`${r}.${i}`:`${i}`,n.add(r));return n}registerClassReference(t,r){let{name:n,namespace:i,enclosingType:o,origin:s}=t,a=this.model.jsonPath(s),c=(a?this.classReferenceByJsonPath.get(a):void 0)??this.typeRegistry.get(r),u=this.model.jsonPath(c?.origin),l=u&&a?u===a?"match":"mismatch":"no origin";if(c&&l!=="mismatch")return new gF({name:c.name,namespace:c.namespace,enclosingType:c.enclosingType,fullyQualifiedName:c.fullyQualifiedName,namespaceAlias:t.namespaceAlias,fullyQualified:t.fullyQualified,generics:t.generics,global:t.global,origin:c.origin??s,isCollection:c.isCollection,isReferenceType:c.isReferenceType,multipartMethodName:c.multipartMethodName,multipartMethodNameForCollection:c.multipartMethodNameForCollection},c.scope,this.generation);let p=!1,d=this.resolveNamespace(i);d!==i&&(i=d,p=!0);let f;e:for(;;){f=e.fullyQualifiedNameOf({name:n,namespace:i,enclosingType:o});let m="",g=i.split(".");for(let A=0;A<g.length;A++)if(m=m?`${m}.${g[A]}`:`${g[A]}`,this.typeRegistry.has(m)){g[A]=`${g[A]}_`,i=g.join("."),p=!0;continue e}if(p&&this.registerNamespace(t.namespace,i),l==="mismatch"&&c?.name===n){n=`${n}_`,p=!0;continue e}if(this.namespaceRegistry.has(f)){n=`${n}_`,p=!0;continue e}if(this.typeRegistry.has(f)){n=`${n}_`,p=!0;continue e}if(o){let A=f.replaceAll("+",".");if(this.typeRegistry.has(A)){n=`${n}_`,p=!0;continue e}if(this.namespaceRegistry.has(A)){n=`${n}_`,p=!0;continue e}}else{let A=f.split(".");for(let y=1;y<A.length;y++){let E=A.slice(0,y).join(".")+"+"+A.slice(y).join("+");if(this.typeRegistry.has(E)){n=`${n}_`,p=!0;continue e}}}break}return this.trackType(new gF({name:n,namespace:i,enclosingType:o,namespaceAlias:t.namespaceAlias,fullyQualified:t.fullyQualified,generics:t.generics,global:t.global,fullyQualifiedName:f,origin:s,isCollection:t.isCollection,isReferenceType:t.isReferenceType,multipartMethodName:t.multipartMethodName,multipartMethodNameForCollection:t.multipartMethodNameForCollection},new tDs(this,n,i,f),this.generation),r)}resolveNamespace(t){let r=this.namespaceRegistry.get(t);if(r!==void 0)return r;let n=t.split(".");for(let i=n.length-1;i>=0;i--){let o=n.slice(0,i).join(".");if(this.namespaceRegistry.has(o)){let s=this.namespaceRegistry.get(o);if(s!==void 0){let a=n.slice(i).join("."),c=`${s}.${a}`;return this.registerNamespace(t,c),c}}}return t}canonicalizeNamespace(t){let r=this.namespaceRegistry.get(t);if(r!==void 0)return r;let n=!1,i=t;e:for(;;){let o="",s=i.split(".");for(let a=0;a<s.length;a++)if(o=o?`${o}.${s[a]}`:`${s[a]}`,this.typeRegistry.has(o)){s[a]=`${s[a]}_`,i=s.join("."),n=!0;continue e}break}return n&&this.registerNamespace(t,i),i}};var Lgi=class{generation;constructor(t){this.generation=t}get model(){return this.generation.model}frozen=!1;extraClassReferences=new Map;classReference(t){return this.classReferenceInternal(t)}classReferenceInternal(t){if(!t.name&&"origin"in t&&t.origin&&(t.name=this.model.getClassNameFor(t.origin)),t.enclosingType){if(t.namespace&&t.namespace!==t.enclosingType.namespace)throw new Error("ClassReference: Both enclosingType and namespace cannot be provided");t.namespace=t.enclosingType.namespace}let r=SCt.fullyQualifiedNameOf(t);if(this.frozen&&!this.generation.registry.isRegisteredTypeName(r)){let n=this.extraClassReferences.get(r);n||(n=new Set,this.extraClassReferences.set(r,n)),n.add(`${r} -
4508
- ${fKt()}`)}return this.generation.registry.registerClassReference(t,r)}freezeClassReferences(){this.frozen=!0}getPropertyName(t,r){let n=this.model.getPropertyNameFor(r),i=this.model.origin(r);if(i){let o=t.getFieldName(i,n);if(o)return o}return n}class_(t){let r=t;return"reference"in t&&(r={...t.reference,...t}),new uae(r,this.generation)}testClass(t){return new CCt(t,this.generation)}annotation(t){return new ghe(t,this.generation)}annotationGroup(t){return new mCt(t,this.generation)}instantiateClass(t){return new Xxt(t,this.generation)}invokeMethod(t){return new tCt(t,this.generation)}codeblock(t){return new vRe(t,this.generation)}code(){return new xRe({},this.generation)}anonymousFunction(t){return new hCt(t)}parameter(t){return new QK(t,this.generation)}interface_(t){return new xCt(t,this.generation)}enum_(t){return new vCt(t,this.generation)}dictionary(t){return new Zxt(t,this.generation)}list(t){return new eCt(t,this.generation)}readOnlyMemory(t){return new rCt(t,this.generation)}set(t){return new nCt(t,this.generation)}switch_(t){return new ACt(t,this.generation)}ternary(t){return new yCt(t,this.generation)}and(t){return new dCt(t,this.generation)}or(t){return new gCt(t,this.generation)}enumInstantiation(t){return new $xt(t,this.generation)}string_(t){return new iCt(t,this.generation)}xmlDocBlock(t){return new wRe(t,this.generation)}InstantiatedPrimitive={string:t=>new rP({type:"string",value:t},this.generation),boolean:t=>new rP({type:"boolean",value:t},this.generation),integer:t=>new rP({type:"integer",value:t},this.generation),long:t=>new rP({type:"long",value:t},this.generation),uint:t=>new rP({type:"uint",value:t},this.generation),ulong:t=>new rP({type:"ulong",value:t},this.generation),float:t=>new rP({type:"float",value:t},this.generation),double:t=>new rP({type:"double",value:t},this.generation),date:t=>new rP({type:"date",value:t},this.generation),dateTime:(t,r=!0)=>new rP({type:"dateTime",value:t,parse:r},this.generation),uuid:t=>new rP({type:"uuid",value:t},this.generation),null:()=>new rP({type:"null"},this.generation)};Literal={class_:({reference:t,fields:r})=>new vl.Class_(t,r,this.generation),dictionary:({keyType:t,valueType:r,entries:n})=>new vl.Dictionary(t,r,n,this.generation),list:({valueType:t,values:r})=>new vl.List(t,r,this.generation),set:({valueType:t,values:r})=>new vl.Set(t,r,this.generation),boolean:t=>new vl.Boolean(t,this.generation),float:t=>new vl.Float(t,this.generation),date:t=>new vl.Date(t,this.generation),datetime:t=>new vl.DateTime(t,this.generation),decimal:t=>new vl.Decimal(t,this.generation),double:t=>new vl.Double(t,this.generation),integer:t=>new vl.Integer(t,this.generation),long:t=>new vl.Long(t,this.generation),uint:t=>new vl.Uint(t,this.generation),ulong:t=>new vl.Ulong(t,this.generation),reference:t=>new vl.Reference(t,this.generation),string:t=>new vl.String(t,this.generation),null:()=>new vl.Null(this.generation),nop:()=>new vl.Nop(this.generation),unknown:t=>new vl.Unknown(t,this.generation)};xmlDocBlockOf(t){return t instanceof wRe?t:new wRe(t,this.generation)}VALID_READ_ONLY_MEMORY_TYPES=new Set(["int","long","uint","ulong","string","bool","float","double"]);validateReadOnlyMemoryTypes(){for(let t of this.generation.settings.readOnlyMemoryTypes)if(!this.VALID_READ_ONLY_MEMORY_TYPES.has(t))throw new Error(`Type "${t}" is not a valid 'read-only-memory-types' custom config option; expected one of ${JSON.stringify(this.VALID_READ_ONLY_MEMORY_TYPES)}.`)}};function vu(e){let t={},r={};for(let[n,i]of Object.entries(e))i.length===0?Object.defineProperty(r,n,{get(){return n in t||(t[n]=i()),t[n]},enumerable:!0,configurable:!0}):r[n]=i;return r}var Ugi=class{generation;constructor(t){this.generation=t}get csharp(){return this.generation.csharp}System=vu({Action:t=>this.csharp.classReference({name:"Action",namespace:"System",generics:t||void 0,multipartMethodName:null,multipartMethodNameForCollection:null,isReferenceType:!0}),Func:(t,r)=>this.csharp.classReference({name:"Func",namespace:"System",generics:t?r?[...t,r]:t:r?[r]:void 0,multipartMethodName:null,multipartMethodNameForCollection:null,isReferenceType:!0}),DateOnly:()=>this.csharp.classReference({name:"DateOnly",namespace:"System"}),DateTime:()=>this.csharp.classReference({name:"DateTime",namespace:"System"}),Enum:()=>this.csharp.classReference({name:"Enum",namespace:"System"}),Exception:()=>this.csharp.classReference({name:"Exception",namespace:"System"}),ReadOnlyMemory:t=>this.csharp.classReference({name:"ReadOnlyMemory",namespace:"System",generics:[t]}),Serializable:()=>this.csharp.classReference({name:"SerializableAttribute",namespace:"System"}),String:()=>this.csharp.classReference({name:"String",namespace:"System"}),Type:()=>this.csharp.classReference({name:"Type",namespace:"System",isReferenceType:!0,multipartMethodName:null,multipartMethodNameForCollection:null,fullyQualified:!0}),TimeSpan:()=>this.csharp.classReference({name:"TimeSpan",namespace:"System"}),Uri:()=>this.csharp.classReference({name:"Uri",namespace:"System"}),UriBuilder:()=>this.csharp.classReference({name:"UriBuilder",namespace:"System"}),Runtime:()=>vu({Serialization:()=>vu({EnumMember:()=>this.csharp.classReference({name:"EnumMemberAttribute",namespace:"System.Runtime.Serialization"})})}),Collections:()=>vu({Generic:()=>vu({IAsyncEnumerable:t=>this.csharp.classReference({name:"IAsyncEnumerable",namespace:"System.Collections.Generic",generics:t?[t]:void 0}),IEnumerable:t=>this.csharp.classReference({name:"IEnumerable",namespace:"System.Collections.Generic",generics:t?[t]:void 0}),KeyValuePair:(t,r)=>this.csharp.classReference({name:"KeyValuePair",namespace:"System.Collections.Generic",generics:t&&r?[t,r]:void 0}),List:t=>this.csharp.classReference({name:"List",namespace:"System.Collections.Generic",generics:t?[t]:void 0,isCollection:!0}),HashSet:t=>this.csharp.classReference({name:"HashSet",namespace:"System.Collections.Generic",generics:t?[t]:void 0,isCollection:!0}),Dictionary:(t,r)=>this.csharp.classReference({name:"Dictionary",namespace:"System.Collections.Generic",generics:t&&r?[t,r]:void 0,isCollection:!0}),IDictionary:(t,r)=>this.csharp.classReference({name:"IDictionary",namespace:"System.Collections.Generic",generics:[t,r]})}),Linq:()=>vu({Enumerable:()=>this.csharp.classReference({name:"Enumerable",namespace:"System.Linq"})})}),Globalization:()=>vu({DateTimeStyles:()=>this.csharp.classReference({name:"DateTimeStyles",namespace:"System.Globalization"})}),Linq:()=>vu({Enumerable:()=>this.csharp.classReference({name:"Enumerable",namespace:"System.Linq"})}),Net:()=>vu({Http:()=>vu({HttpClient:()=>this.csharp.classReference({name:"HttpClient",namespace:"System.Net.Http"}),HttpMethod:()=>this.csharp.classReference({name:"HttpMethod",namespace:"System.Net.Http"}),HttpResponseHeaders:()=>this.csharp.classReference({name:"HttpResponseHeaders",namespace:"System.Net.Http.Headers"})}),ServerSentEvents:()=>vu({SseEvent:()=>this.csharp.classReference({name:"SseEvent",namespace:"System.Net.ServerSentEvents"}),SseParser:()=>this.csharp.classReference({name:"SseParser",namespace:"System.Net.ServerSentEvents"})}),WebSockets:()=>vu({ClientWebSocketOptions:()=>this.csharp.classReference({name:"ClientWebSocketOptions",namespace:"System.Net.WebSockets"})})}),IO:()=>vu({MemoryStream:()=>this.csharp.classReference({name:"MemoryStream",namespace:"System.IO"}),Stream:()=>this.csharp.classReference({name:"Stream",namespace:"System.IO"}),StreamReader:()=>this.csharp.classReference({name:"StreamReader",namespace:"System.IO"})}),Text:()=>vu({Encoding:()=>this.csharp.classReference({name:"Encoding",namespace:"System.Text"}),Encoding_UTF8:()=>this.csharp.classReference({name:"UTF8",enclosingType:this.csharp.classReference({name:"Encoding",namespace:"System.Text"})}),Json:()=>vu({JsonElement:()=>this.csharp.classReference({name:"JsonElement",namespace:"System.Text.Json"}),JsonDocument:()=>this.csharp.classReference({name:"JsonDocument",namespace:"System.Text.Json"}),JsonException:()=>this.csharp.classReference({name:"JsonException",namespace:"System.Text.Json"}),Utf8JsonReader:()=>this.csharp.classReference({name:"Utf8JsonReader",namespace:"System.Text.Json"}),JsonSerializerOptions:()=>this.csharp.classReference({name:"JsonSerializerOptions",namespace:"System.Text.Json"}),JsonSerializer:()=>this.csharp.classReference({name:"JsonSerializer",namespace:"System.Text.Json"}),Utf8JsonWriter:()=>this.csharp.classReference({name:"Utf8JsonWriter",namespace:"System.Text.Json"}),Nodes:()=>vu({JsonNode:()=>this.csharp.classReference({name:"JsonNode",namespace:"System.Text.Json.Nodes"}),JsonObject:()=>this.csharp.classReference({name:"JsonObject",namespace:"System.Text.Json.Nodes"})}),Serialization:()=>vu({IJsonOnDeserialized:()=>this.csharp.classReference({name:"IJsonOnDeserialized",namespace:"System.Text.Json.Serialization"}),IJsonOnSerializing:()=>this.csharp.classReference({name:"IJsonOnSerializing",namespace:"System.Text.Json.Serialization"}),JsonOnDeserializedAttribute:()=>this.csharp.classReference({name:"JsonOnDeserializedAttribute",namespace:"System.Text.Json.Serialization"}),JsonExtensionData:()=>this.csharp.classReference({name:"JsonExtensionDataAttribute",namespace:"System.Text.Json.Serialization"}),JsonConverter:t=>this.csharp.classReference({name:"JsonConverter",namespace:"System.Text.Json.Serialization",generics:t?[t]:void 0}),JsonIgnore:()=>this.csharp.classReference({name:"JsonIgnoreAttribute",namespace:"System.Text.Json.Serialization"}),JsonPropertyName:()=>this.csharp.classReference({name:"JsonPropertyNameAttribute",namespace:"System.Text.Json.Serialization"})})})}),Threading:()=>vu({CancellationToken:()=>this.csharp.classReference({name:"CancellationToken",namespace:"System.Threading"}),Tasks:()=>vu({Task:t=>this.csharp.classReference({name:"Task",namespace:"System.Threading.Tasks",generics:t?[t]:void 0}),ValueTask:t=>this.csharp.classReference({name:"ValueTask",namespace:"System.Threading.Tasks",generics:t?[t]:void 0})})}),ComponentModel:()=>vu({INotifyPropertyChanged:()=>this.csharp.classReference({name:"INotifyPropertyChanged",namespace:"System.ComponentModel"}),PropertyChangedEventHandler:()=>this.csharp.classReference({name:"PropertyChangedEventHandler",namespace:"System.ComponentModel"})}),IAsyncDisposable:()=>this.csharp.classReference({name:"IAsyncDisposable",namespace:"System"}),IDisposable:()=>this.csharp.classReference({name:"IDisposable",namespace:"System"})});NUnit=vu({Framework:()=>vu({TestFixture:()=>this.csharp.classReference({name:"TestFixture",namespace:"NUnit.Framework"}),Test:()=>this.csharp.classReference({name:"Test",namespace:"NUnit.Framework"}),OneTimeTearDown:()=>this.csharp.classReference({name:"OneTimeTearDown",namespace:"NUnit.Framework"}),OneTimeSetUp:()=>this.csharp.classReference({name:"OneTimeSetUp",namespace:"NUnit.Framework"}),SetUpFixture:()=>this.csharp.classReference({name:"SetUpFixture",namespace:"NUnit.Framework"}),Parallelizable:()=>this.csharp.classReference({name:"Parallelizable",namespace:"NUnit.Framework"})})});OneOf=vu({OneOf:t=>this.csharp.classReference({name:"OneOf",namespace:"OneOf",generics:t}),OneOfBase:t=>this.csharp.classReference({name:"OneOfBase",namespace:"OneOf",generics:t})});Google=vu({Protobuf:()=>vu({ByteString:()=>this.csharp.classReference({name:"ByteString",namespace:"Google.Protobuf"}),WellKnownTypes:()=>vu({Struct:()=>this.csharp.classReference({name:"Struct",namespace:"Google.Protobuf.WellKnownTypes",namespaceAlias:"WellKnownProto"}),Value:()=>this.csharp.classReference({name:"Value",namespace:"Google.Protobuf.WellKnownTypes",namespaceAlias:"WellKnownProto"}),ListValue:()=>this.csharp.classReference({name:"ListValue",namespace:"Google.Protobuf.WellKnownTypes",namespaceAlias:"WellKnownProto"}),Timestamp:()=>this.csharp.classReference({name:"Timestamp",namespace:"Google.Protobuf.WellKnownTypes",namespaceAlias:"WellKnownProto"})})})});WireMock=vu({Server:()=>this.csharp.classReference({name:"WireMockServer",namespace:"WireMock.Server"}),WireMockServerSettings:()=>this.csharp.classReference({name:"WireMockServerSettings",namespace:"WireMock.Settings"}),WireMockConsoleLogger:()=>this.csharp.classReference({name:"WireMockConsoleLogger",namespace:"WireMock.Logging"})});Grpc=vu({Core:()=>vu({RpcException:()=>this.csharp.classReference({name:"RpcException",namespace:"Grpc.Core"})})})};var nDs=new Set(["name","camelCase","snakeCase","screamingSnakeCase","pascalCase"]);function y2g(e,t){return nDs.has(t)?e??"":e?`${e}.${t}`:t}var Vgi=class{generation;indexByObject=new Map;indexByPath=new Map;explicitByObject=new Map;explicitByPath=new Map;root;ir;get csharp(){return this.generation.csharp}get registry(){return this.generation.registry}constructor(t,r){this.generation=r,this.root=this.createIndex(t),this.ir=t}createIndex(t,r="",n){let i=y2g(n?.jsonPath,r);if(this.indexByPath.has(i)){n||nI(`Parent provenance not found for node: ${JSON.stringify(t).substring(0,100)}`),this.indexByObject.set(t,n);let s=nDs.has(r);for(let[a,c]of Object.entries(t))typeof c=="object"&&c!==null&&(s&&nDs.has(a)?this.indexByObject.set(c,n):this.createIndex(c,a,n));return n}let o={jsonPath:i,name:r,node:t,parent:n};this.indexByObject.set(t,o),this.indexByPath.set(i,o);for(let[s,a]of Object.entries(t))typeof a=="object"&&a!==null&&this.createIndex(a,s,o);return o}staticExplicit(t){return this.explicit(this.ir,t)}explicit(t,r){let n=this.provenance(t)??nI(`Provenance not found for node: ${JSON.stringify(t).substring(0,100)}`),i={...n,jsonPath:`${n.jsonPath}+${r}`,name:r,node:n.node,parent:n,explicit:!0},o=this.explicitByObject.get(n.node);return o?o.add(i):this.explicitByObject.set(n.node,new Set([i])),this.explicitByPath.set(i.jsonPath,i),i}provenance(t){if(t!==void 0)return Da.string(t)?this.explicitByPath.get(t)??this.indexByPath.get(t):Da.Provenance(t)?this.explicitByPath.get(t.jsonPath)??this.indexByPath.get(t.jsonPath):this.indexByObject.get(t)}origin(t){let r=this.provenance(t);return r?.explicit?r:r?.node}irNode(t){return this.provenance(t)?.node}jsonPath(t){return this.provenance(t)?.jsonPath}getEnumValueName(t,r){let n=Da.IR.ExampleEnumType(r)?r.value:r,i=t.values.find(o=>this.nameEquals(o.name,n));return i?this.getPropertyNameFor(i):nI(`Unexpected - can't find enum value ${JSON.stringify(n)} in enum`)}getPropertyNameFor(t){let r=this.registry.getFieldNameByOrigin(t);if(r)return r;if(Da.Provenance(t))return t.name;if("name"in t){if(Da.IR.NameAndWireValue(t.name))return this.generation.case.pascalSafe(t.name);if(Da.IR.Name(t.name))return this.generation.case.pascalSafe(t.name);if(typeof t.name=="string")return this.generation.case.pascalSafe(t.name)}if("pascalCase"in t)return this.generation.case.pascalSafe(t);throw new Error(`Unknown property type: ${this.jsonPath(t)}`)}getClassNameFor(t){if(Da.Provenance(t))return t.name;if("name"in t){if(Da.IR.TypeDeclaration(t))return this.generation.case.pascalSafe(t.name.name);if(Da.IR.NameAndWireValue(t.name))return this.generation.case.pascalSafe(t.name);if(Da.IR.Name(t.name))return this.generation.case.pascalSafe(t.name);if(typeof t.name=="string")return this.generation.case.pascalSafe(t.name)}if("pascalCase"in t)return this.generation.case.pascalSafe(t);throw new Error(`Unknown property type: ${JSON.stringify(t)}`)}nameEquals(t,r){return this.generation.case.camelSafe(t)===this.generation.case.camelSafe(r)}dereferenceType(t){let r=Da.string(t)?t:Da.IR.NamedType(t)||Da.IR.DeclaredTypeName(t)?t.typeId:Da.IR.ExampleNamedType(t)?t.typeName.typeId:t.name.typeId,n=this.irNode(this.ir.types[r]);if(Da.IR.TypeDeclaration(n))return{typeId:r,typeDeclaration:n};nI(`dereferenceType: typeId ${r} not resolved.`)}};function _gi(...e){return e.filter(Boolean).join("/")}var XKt=class{intermediateRepresentation;apiName;customConfig;generatorConfig;support;constructor(t,r,n,i,o={makeRelativeFilePath:s=>s,makeAbsoluteFilePath:s=>s,getNamespaceForTypeId:s=>"",getDirectoryForTypeId:s=>"",getCoreAsIsFiles:()=>[],getCoreTestAsIsFiles:()=>[],getPublicCoreAsIsFiles:()=>[],getAsyncCoreAsIsFiles:()=>[],getChildNamespaceSegments:s=>[]}){this.intermediateRepresentation=t,this.apiName=r,this.customConfig=n,this.generatorConfig=i,this.support=o;let s=Da.IR.IntermediateRepresentation(t)?t.casingsConfig:void 0;this.case=new hKt({generationLanguage:"csharp",keywords:s?.keywords,smartCasing:s?.smartCasing??!0}),this.model=new Vgi(t,this),this.ir=Da.IR.IntermediateRepresentation(t)?t:{},this.dir=Da.DynamicIR.DynamicIntermediateRepresentation(t)?t:{}}ir;dir;csharp=new Lgi(this);registry=new SCt(this);model;case;extern=new Ugi(this);settings=vu({namespace:()=>this.customConfig.namespace??Ogi(Bgi(`${this.generatorConfig.organization}_${this.apiName}`)),readOnlyMemoryTypes:()=>this.customConfig["read-only-memory-types"]??[],simplifyObjectDictionaries:()=>this.customConfig["simplify-object-dictionaries"]??!1,useFullyQualifiedNamespaces:()=>this.customConfig["experimental-fully-qualified-namespaces"]??!1,useDotnetFormat:()=>this.customConfig["experimental-dotnet-format"]??!1,enableWebsockets:()=>this.customConfig["experimental-enable-websockets"]??!1,enableReadonlyConstants:()=>this.customConfig["experimental-readonly-constants"]??!1,generateLiterals:()=>this.customConfig["generate-literals"]??this.customConfig["experimental-readonly-constants"]??!1,enableExplicitNullableOptional:()=>this.customConfig["experimental-explicit-nullable-optional"]??!1,useDefaultRequestParameterValues:()=>this.customConfig["use-default-request-parameter-values"]??!1,redactResponseBodyOnError:()=>this.customConfig["redact-response-body-on-error"]??!1,enableInlineTypes:()=>this.customConfig["enable-inline-types"]??!1,temporaryWebsocketEnvironments:()=>this.customConfig["temporary-websocket-environments"]??{},baseApiExceptionClassName:()=>this.customConfig["base-api-exception-class-name"]??"",baseExceptionClassName:()=>this.customConfig["base-exception-class-name"]??"",shouldGeneratedDiscriminatedUnions:()=>this.customConfig["use-discriminated-unions"]??!0,shouldGenerateUndiscriminatedUnions:()=>this.customConfig["use-undiscriminated-unions"]??!1,exportedClientClassName:()=>this.customConfig["exported-client-class-name"]??"",clientClassName:()=>this.customConfig["client-class-name"]??"",rootNamespaceForCoreClasses:()=>this.customConfig["root-namespace-for-core-classes"]??!0,packageId:()=>this.customConfig["package-id"]??"",isForwardCompatibleEnumsEnabled:()=>this.customConfig["enable-forward-compatible-enums"]??this.customConfig["experimental-enable-forward-compatible-enums"]??!0,websocketEnvironments:()=>this.customConfig["temporary-websocket-environments"]??{},customPagerName:()=>this.customConfig["custom-pager-name"]??"",usePageIndexSemantics:()=>this.customConfig["offset-semantics"]==="page-index",environmentClassName:()=>this.customConfig["environment-class-name"]??"",generateErrorTypes:()=>this.customConfig["generate-error-types"]??!0,shouldInlinePathParameters:()=>this.customConfig["inline-path-parameters"]??!0,includeExceptionHandler:()=>this.customConfig["include-exception-handler"]??!1,exceptionInterceptorClassName:()=>this.customConfig["exception-interceptor-class-name"]??"",shouldGenerateMockServerTests:()=>this.customConfig["generate-mock-server-tests"]??this.customConfig["enable-wire-tests"]??!0,rootClientAccess:()=>this.customConfig["root-client-class-access"]=="internal"?WC.Internal:WC.Public,extraDependencies:()=>this.customConfig["extra-dependencies"]??{},omitFernHeaders:()=>this.customConfig["omit-fern-headers"]??!1,includePlatformHeaders:()=>this.customConfig["include-platform-headers"]??!1,userAgentNameFromPackage:()=>this.customConfig["user-agent-name-from-package"]??!1,unifiedClientOptions:()=>this.customConfig["unified-client-options"]??!1,pascalCaseEnvironments:()=>this.customConfig["pascal-case-environments"]??!0,slnFormat:()=>this.customConfig["sln-format"]??"slnx",explicitNamespaces:()=>this.customConfig["explicit-namespaces"]===!0,maxRetries:()=>this.customConfig.maxRetries,retryStatusCodes:()=>this.customConfig.retryStatusCodes??"legacy",defaultTimeoutInMilliseconds:()=>{let t=this.customConfig["default-timeout-in-milliseconds"];if(t!=null)return t;let r=this.customConfig["default-timeout-in-seconds"];if(r!=null)return r==="infinity"?"infinity":r*1e3},outputPath:()=>{let t=this.customConfig["output-path"];return t==null?{library:"src",test:"src",solution:".",other:"."}:typeof t=="string"?{library:t,test:t,solution:".",other:"."}:{library:t.library??"src",test:t.test??"src",solution:t.solution??".",other:t.other??"."}}});constants={folders:vu({mockServerTests:()=>this.support.makeRelativeFilePath("Unit/MockServer"),types:()=>"Types",exceptions:()=>"Exceptions",src:()=>"src",protobuf:()=>"proto",serializationTests:()=>this.support.makeRelativeFilePath("Unit/Serialization"),project:()=>this.support.makeRelativeFilePath(_gi(this.constants.folders.sourceFiles,this.support.makeRelativeFilePath(this.names.files.project))),sourceFiles:()=>this.support.makeRelativeFilePath(this.constants.folders.src),coreFiles:()=>this.support.makeRelativeFilePath(_gi(this.constants.folders.project,this.support.makeRelativeFilePath(this.constants.defaults.core))),publicCoreFiles:()=>this.support.makeRelativeFilePath(_gi(this.constants.folders.project,this.support.makeRelativeFilePath(this.constants.defaults.core),this.support.makeRelativeFilePath(this.constants.defaults.publicCore))),testFiles:()=>this.support.makeRelativeFilePath(_gi(this.constants.folders.sourceFiles,this.support.makeRelativeFilePath(this.names.files.testProject)))}),formatting:vu({indent:()=>" "}),defaults:vu({core:()=>"Core",publicCore:()=>"Public",version:()=>"0.0.0"})};namespaces=vu({root:()=>this.settings.namespace,core:()=>`${this.namespaces.root}.Core`,qualifiedRoot:()=>this.qualifyNamespace(this.namespaces.root),qualifiedCore:()=>this.qualifyNamespace(this.namespaces.core),test:()=>this.registry.canonicalizeNamespace(`${this.namespaces.root}.Test`),testUtils:()=>`${this.namespaces.test}.Utils`,mockServerTest:()=>`${this.namespaces.test}.Unit.MockServer`,publicCore:()=>this.namespaces.root,webSocketsCore:()=>`${this.namespaces.core}.WebSockets`,publicCoreTest:()=>`${this.namespaces.root}.Test.PublicCore`,asIsTestUtils:()=>`${this.namespaces.root}.Test.Utils`,publicCoreClasses:()=>this.settings.rootNamespaceForCoreClasses?this.namespaces.root:this.namespaces.core,implicit:()=>new Set(["System","System.Collections.Generic","System.IO","System.Linq","System.Threading","System.Threading.Tasks","System.Net.Http"])});names={classes:vu({baseApiException:()=>this.settings.baseApiExceptionClassName||`${this.names.project.clientPrefix}ApiException`,baseException:()=>this.settings.baseExceptionClassName||`${this.names.project.clientPrefix}Exception`,rootClient:()=>this.settings.clientClassName||`${this.names.project.clientPrefix}Client`,rootClientForSnippets:()=>this.settings.exportedClientClassName||this.names.classes.rootClient,customPager:()=>this.settings.customPagerName||`${this.names.project.packageId.replace(/[^a-zA-Z0-9]/g,"")}Pager`,environment:()=>this.settings.environmentClassName||`${this.names.project.clientPrefix}Environment`,exceptionInterceptor:()=>this.settings.exceptionInterceptorClassName||`${this.names.project.packageId.replace(/[^a-zA-Z0-9]/g,"")}ExceptionInterceptor`}),project:vu({client:()=>Ogi(Bgi(`${this.generatorConfig.organization}_${this.generatorConfig.workspaceName}`)),clientPrefix:()=>this.settings.exportedClientClassName||this.settings.clientClassName||this.names.project.client,packageId:()=>this.settings.packageId||this.namespaces.root}),files:vu({project:()=>this.namespaces.root,testProject:()=>`${this.namespaces.root}.Test`}),methods:vu({mockOauth:()=>"MockOAuthEndpoint",mockInferredAuth:()=>"MockInferredAuthEndpoint",getAccessTokenAsync:()=>"GetAccessTokenAsync",getAuthHeadersAsync:()=>"GetAuthHeadersAsync"}),variables:vu({client:()=>"client",response:()=>"response",httpRequest:()=>"httpRequest",sendRequest:()=>"sendRequest",responseBody:()=>"responseBody",query:()=>"_query",headers:()=>"_headers"}),parameters:vu({cancellationToken:()=>"cancellationToken",requestOptions:()=>"options",idempotentOptions:()=>"options"})};Types=vu({Arbitrary:t=>new fd.ArbitraryType(t,this),HttpMethodExtensions:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("HttpMethodExtensions")}),FormRequest:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("FormRequest")}),Optional:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("Optional")}),ClientOptions:()=>this.csharp.classReference({origin:this.model.staticExplicit("ClientOptions"),namespace:this.namespaces.publicCoreClasses}),RawClient:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("RawClient")}),RequestOptions:()=>this.csharp.classReference({namespace:this.namespaces.publicCoreClasses,origin:this.model.staticExplicit("RequestOptions")}),RequestOptionsInterface:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("IRequestOptions")}),JsonRequest:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("JsonRequest")}),Version:()=>this.csharp.classReference({namespace:this.namespaces.publicCore,origin:this.model.staticExplicit("Version")}),ValueConvert:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("ValueConvert")}),FileParameter:()=>this.csharp.classReference({namespace:this.namespaces.publicCore,origin:this.model.staticExplicit("FileParameter"),multipartMethodName:"AddFileParameterPart",multipartMethodNameForCollection:"AddFileParameterParts",isReferenceType:!0}),DefaultHttpClientFactory:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("DefaultHttpClientFactory")}),Headers:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("Headers")}),HeaderValue:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("HeaderValue")}),RootClient:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.rootClient),namespace:this.namespaces.root}),RootClientForSnippets:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.rootClientForSnippets),namespace:this.namespaces.root}),BaseApiException:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.baseApiException),namespace:this.namespaces.publicCoreClasses}),BaseException:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.baseException),namespace:this.namespaces.publicCoreClasses}),ExceptionInterceptor:()=>this.csharp.classReference({origin:this.model.staticExplicit("IExceptionInterceptor"),namespace:this.namespaces.core}),ExceptionHandler:()=>this.csharp.classReference({origin:this.model.staticExplicit("ExceptionHandler"),namespace:this.namespaces.core}),CustomExceptionInterceptor:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.exceptionInterceptor),namespace:this.namespaces.core}),ProtoAnyMapper:()=>this.csharp.classReference({origin:this.model.staticExplicit("ProtoAnyMapper"),namespace:this.namespaces.core}),Constants:()=>this.csharp.classReference({origin:this.model.staticExplicit("Constants"),namespace:this.namespaces.core}),DateTimeSerializer:()=>this.csharp.classReference({origin:this.model.staticExplicit("DateTimeSerializer"),namespace:this.namespaces.core}),JsonUtils:()=>this.csharp.classReference({origin:this.model.staticExplicit("JsonUtils"),namespace:this.namespaces.core}),JsonAssert:()=>this.csharp.classReference({origin:this.model.staticExplicit("JsonAssert"),namespace:this.namespaces.testUtils}),CustomPagerFactory:()=>this.csharp.classReference({origin:this.model.staticExplicit(`${this.names.classes.customPager}Factory`),namespace:this.namespaces.core}),CustomPagerContext:()=>this.csharp.classReference({origin:this.model.staticExplicit(`${this.names.classes.customPager}Context`),namespace:this.namespaces.core}),Environments:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.environment),namespace:this.namespaces.publicCoreClasses}),TestClient:()=>this.csharp.classReference({origin:this.model.staticExplicit("TestClient"),namespace:this.namespaces.test}),BaseMockServerTest:()=>this.csharp.classReference({origin:this.model.staticExplicit("BaseMockServerTest"),namespace:this.namespaces.mockServerTest}),IdempotentRequestOptions:()=>this.csharp.classReference({origin:this.model.staticExplicit("IdempotentRequestOptions"),namespace:this.namespaces.publicCoreClasses}),IdempotentRequestOptionsInterface:()=>this.csharp.classReference({origin:this.model.staticExplicit("IIdempotentRequestOptions"),namespace:this.namespaces.core}),IStringEnum:()=>this.csharp.classReference({origin:this.model.staticExplicit("IStringEnum"),namespace:this.namespaces.core}),WebSocketClient:()=>this.csharp.classReference({origin:this.model.staticExplicit("WebSocketClient"),namespace:this.namespaces.webSocketsCore}),QueryBuilder:()=>this.csharp.classReference({origin:this.model.staticExplicit("Query"),namespace:this.namespaces.webSocketsCore}),QueryStringBuilder:()=>this.csharp.classReference({origin:this.model.staticExplicit("QueryStringBuilder"),namespace:this.namespaces.core}),QueryStringBuilderBuilder:()=>this.csharp.classReference({origin:this.model.staticExplicit("QueryStringBuilder.Builder"),namespace:this.namespaces.core}),OAuthTokenProvider:()=>this.csharp.classReference({origin:this.model.staticExplicit("OAuthTokenProvider"),namespace:this.namespaces.core}),InferredAuthTokenProvider:()=>this.csharp.classReference({origin:this.model.staticExplicit("InferredAuthTokenProvider"),namespace:this.namespaces.core}),ProtoConverter:()=>this.csharp.classReference({origin:this.model.staticExplicit("ProtoConverter"),namespace:this.namespaces.core}),RawGrpcClient:()=>this.csharp.classReference({origin:this.model.staticExplicit("RawGrpcClient"),namespace:this.namespaces.core}),Extensions:()=>this.csharp.classReference({origin:this.model.staticExplicit("Extensions"),namespace:this.namespaces.core}),GrpcRequestOptions:()=>this.csharp.classReference({origin:this.model.staticExplicit("GrpcRequestOptions"),namespace:this.namespaces.root}),GrpcChannelOptions:()=>this.csharp.classReference({origin:this.model.staticExplicit("GrpcChannelOptions"),namespace:"Grpc.Net.Client"}),StringEnum:t=>this.csharp.classReference({origin:this.model.staticExplicit("StringEnum"),namespace:this.namespaces.core,generics:t?[t]:void 0}),WebSocketEvent:t=>this.csharp.classReference({origin:this.model.staticExplicit("Event"),namespace:this.namespaces.webSocketsCore,generics:[t]}),ConnectionStatus:()=>this.csharp.classReference({origin:this.model.staticExplicit("ConnectionStatus"),namespace:this.namespaces.webSocketsCore}),WebSocketConnected:()=>this.csharp.classReference({origin:this.model.staticExplicit("Connected"),namespace:this.namespaces.webSocketsCore}),WebSocketClosed:()=>this.csharp.classReference({origin:this.model.staticExplicit("Closed"),namespace:this.namespaces.webSocketsCore}),ReconnectionInfo:()=>this.csharp.classReference({origin:this.model.staticExplicit("ReconnectionInfo"),namespace:this.namespaces.webSocketsCore}),CustomPagerClass:t=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.customPager),namespace:this.namespaces.core,generics:[t]}),Pager:t=>this.csharp.classReference({origin:this.model.staticExplicit("Pager"),namespace:this.namespaces.core,generics:[t]}),OffsetPager:({requestType:t,requestOptionsType:r,responseType:n,offsetType:i,stepType:o,itemType:s})=>this.csharp.classReference({origin:this.model.staticExplicit("OffsetPager"),namespace:this.namespaces.core,generics:[t,r,n,i,o,s]}),CursorPager:({requestType:t,requestOptionsType:r,responseType:n,cursorType:i,itemType:o})=>this.csharp.classReference({origin:this.model.staticExplicit("CursorPager"),namespace:this.namespaces.core,generics:[t,r,n,i,o]}),CollectionItemSerializer:(t,r)=>this.csharp.classReference({origin:this.model.staticExplicit("CollectionItemSerializer"),namespace:this.namespaces.core,generics:[t,r]}),OneOfSerializer:t=>this.csharp.classReference({origin:this.model.staticExplicit("OneOfSerializer"),namespace:this.namespaces.core,generics:[t]}),AdditionalProperties:t=>this.csharp.classReference({origin:this.model.staticExplicit("AdditionalProperties"),namespace:this.namespaces.publicCore,generics:t?[t]:void 0}),ReadOnlyAdditionalProperties:t=>this.csharp.classReference({origin:this.model.staticExplicit("ReadOnlyAdditionalProperties"),namespace:this.namespaces.publicCore,generics:t?[t]:void 0})});Primitive=vu({string:()=>new fd.String(this),boolean:()=>new fd.Boolean(this),integer:()=>new fd.Integer(this),long:()=>new fd.Long(this),uint:()=>new fd.Uint(this),ulong:()=>new fd.ULong(this),float:()=>new fd.Float(this),double:()=>new fd.Double(this),object:()=>new fd.Object(this)});Value=vu({binary:()=>new H3.Binary(this),dateOnly:()=>new H3.DateOnly(this),dateTime:()=>new H3.DateTime(this),uuid:()=>new H3.Uuid(this),stringEnum:t=>new H3.StringEnum(t,this)});Collection=vu({array:t=>new JT.Array(t,this),listType:t=>new JT.ListType(t,this),list:t=>new JT.List(t,this),set:t=>new JT.Set(t,this),map:(t,r,n)=>new JT.Map(t,r,this,n),idictionary:(t,r,n)=>new JT.IDictionary(t,r,this,n),keyValuePair:(t,r)=>new JT.KeyValuePair(t,r,this)});format=vu({private:t=>`_${Pgi.camelCase(t)}`});initialize(){return this.initializers.implicitNamespaces}initializers=vu({implicitNamespaces:()=>{for(let t of this.namespaces.implicit)this.registry.addImplicitNamespace(t);return!0}});get System(){return this.extern.System}get NUnit(){return this.extern.NUnit}get OneOf(){return this.extern.OneOf}get Google(){return this.extern.Google}get Grpc(){return this.extern.Grpc}get WireMock(){return this.extern.WireMock}qualifyNamespace(t){let r=t.split(".")[0];return r&&this.registry.hasTypeNamespaceConflict(r)?`global::${t}`:t}};var MK=class{generation;constructor(t){this.generation=t}get csharp(){return this.generation.csharp}get case(){return this.generation.case}get settings(){return this.generation.settings}get constants(){return this.generation.constants}get namespaces(){return this.generation.namespaces}get names(){return this.generation.names}get model(){return this.generation.model}get format(){return this.generation.format}get registry(){return this.generation.registry}get Types(){return this.generation.Types}get System(){return this.generation.extern.System}get NUnit(){return this.generation.extern.NUnit}get OneOf(){return this.generation.extern.OneOf}get Google(){return this.generation.extern.Google}get Grpc(){return this.generation.extern.Grpc}get WireMock(){return this.generation.extern.WireMock}get Primitive(){return this.generation.Primitive}get Value(){return this.generation.Value}get Collection(){return this.generation.Collection}};Dt();var qgi=class extends MK{context;constructor({context:t}){super(t.generation),this.context=t}convert(t){if(t.value===null)return this.context.isNullable(t.typeReference)?this.csharp.Literal.null():(this.context.errors.add({severity:Or.Critical,message:"Expected non-null value, but got null"}),this.csharp.Literal.nop());if(t.value===void 0&&!t.fallbackToDefault)return this.csharp.Literal.nop();switch(t.typeReference.type){case"list":return this.convertList({list:t.typeReference.value,value:t.value,fallbackToDefault:t.fallbackToDefault});case"literal":return this.convertLiteral({literal:t.typeReference.value,fallbackToDefault:t.forceLiteral?t.fallbackToDefault:void 0,value:t.value,forceLiteral:t.forceLiteral});case"map":return this.convertMap({map:t.typeReference,value:t.value,fallbackToDefault:t.fallbackToDefault});case"named":{let r=this.context.resolveNamedType({typeId:t.typeReference.value});return r==null?this.csharp.Literal.nop():this.convertNamed({named:r,value:t.value,as:t.as,fallbackToDefault:t.fallbackToDefault})}case"nullable":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as,forceLiteral:t.forceLiteral});case"optional":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as,forceLiteral:t.forceLiteral});case"primitive":return this.convertPrimitive({primitive:t.typeReference.value,value:t.value,as:t.as,fallbackToDefault:t.fallbackToDefault});case"set":return this.convertSet({set:t.typeReference.value,value:t.value,fallbackToDefault:t.fallbackToDefault});case"unknown":return this.convertUnknown({value:t.value,fallbackToDefault:t.fallbackToDefault});default:be(t.typeReference)}}convertList({list:t,value:r,fallbackToDefault:n}){return Array.isArray(r)?this.csharp.Literal.list({valueType:this.context.dynamicTypeMapper.convert({typeReference:t,unboxOptionals:!0}),values:r.map((i,o)=>{this.context.errors.scope({index:o});try{return this.convert({typeReference:t,value:i})}finally{this.context.errors.unscope()}})}):(this.context.errors.add({severity:Or.Critical,message:`Expected array but got: ${typeof r}`}),this.csharp.Literal.nop())}convertLiteral({literal:t,value:r,fallbackToDefault:n,forceLiteral:i}){if(this.settings.generateLiterals&&!i)return this.csharp.Literal.nop();switch(t.type){case"boolean":{let o=this.context.getValueAsBoolean({value:r});return o==null?this.csharp.Literal.nop():this.csharp.Literal.boolean(o)}case"string":{let o=this.context.getValueAsString({value:r});return o==null?n?this.Primitive.string.getDeterminsticDefault(n):this.csharp.Literal.nop():this.csharp.Literal.string(o)}default:be(t)}}convertSet({set:t,value:r,fallbackToDefault:n}){return Array.isArray(r)?this.csharp.Literal.set({valueType:this.context.dynamicTypeMapper.convert({typeReference:t,unboxOptionals:!0}),values:r.map((i,o)=>{this.context.errors.scope({index:o});try{return this.convert({typeReference:t,value:i})}finally{this.context.errors.unscope()}})}):(this.context.errors.add({severity:Or.Critical,message:`Expected array but got: ${typeof r}`}),this.csharp.Literal.nop())}convertMap({map:t,value:r,fallbackToDefault:n}){return typeof r!="object"||r==null?(this.context.errors.add({severity:Or.Critical,message:`Expected object but got: ${r==null?"null":typeof r}`}),this.csharp.Literal.nop()):this.csharp.Literal.dictionary({keyType:this.context.dynamicTypeMapper.convert({typeReference:t.key}),valueType:t.value.type==="unknown"?this.context.dynamicTypeMapper.convert({typeReference:t.value}).asOptional():this.context.dynamicTypeMapper.convert({typeReference:t.value}),entries:Object.entries(r).map(([i,o])=>{this.context.errors.scope(i);try{return{key:this.convert({typeReference:t.key,value:i,as:"key"}),value:this.convert({typeReference:t.value,value:o})}}finally{this.context.errors.unscope()}})})}convertNamed({named:t,value:r,as:n,fallbackToDefault:i}){switch(t.type){case"alias":return this.settings.generateLiterals&&t.typeReference.type==="literal"?this.csharp.Literal.reference(this.csharp.instantiateClass({classReference:this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}),arguments_:[]})):this.convert({typeReference:t.typeReference,value:r,as:n,fallbackToDefault:i});case"discriminatedUnion":return this.settings.shouldGeneratedDiscriminatedUnions?this.convertDiscriminatedUnion({discriminatedUnion:t,value:r,fallbackToDefault:i}):this.convertUnknown({value:r,fallbackToDefault:i});case"enum":return this.getEnumValue(t,r);case"object":return this.convertObject({object_:t,value:r,fallbackToDefault:i});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r,fallbackToDefault:i});default:be(t)}}convertDiscriminatedUnion({discriminatedUnion:t,value:r,fallbackToDefault:n}){let i=this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}),o=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:t,value:r});if(o==null)return this.csharp.Literal.nop();let s=o.singleDiscriminatedUnionType,a=this.getBaseProperties({discriminatedUnionTypeInstance:o,singleDiscriminatedUnionType:s});switch(s.type){case"samePropertiesAsObject":{let c=this.context.resolveNamedType({typeId:s.typeId});return c==null?this.csharp.Literal.nop():this.instantiateUnionWithBaseProperties({classReference:i,baseProperties:a,arguments_:[this.convertNamed({named:c,value:o.value})]})}case"singleProperty":{if(this.context.getRecord(o.value)==null)return this.csharp.Literal.nop();try{let u=["Value","Type"].includes(s.discriminantValue.name.pascalCase.safeName)?`${s.discriminantValue.name.pascalCase.safeName}Inner`:s.discriminantValue.name.pascalCase.safeName;return this.context.errors.scope(s.discriminantValue.wireValue),this.instantiateUnionWithBaseProperties({classReference:i,baseProperties:a,arguments_:[this.csharp.instantiateClass({classReference:this.csharp.classReference({name:u,enclosingType:i}),arguments_:[this.convert({typeReference:s.typeReference,value:s.discriminantValue.wireValue})]})]})}finally{this.context.errors.unscope()}}case"noProperties":return this.instantiateUnionWithBaseProperties({classReference:i,baseProperties:a,arguments_:[this.csharp.instantiateClass({classReference:this.csharp.classReference({origin:o.discriminantValue,enclosingType:i}),arguments_:[]})]});default:be(s)}}getBaseProperties({discriminatedUnionTypeInstance:t,singleDiscriminatedUnionType:r}){return this.context.associateByWireValue({parameters:r.properties??[],values:this.context.getRecord(t.value)??{},ignoreMissingParameters:!0}).map(i=>{this.context.errors.scope(i.name.wireValue);try{return{name:this.context.getPropertyName(i.name.name),assignment:this.convert(i)}}finally{this.context.errors.unscope()}})}instantiateUnionWithBaseProperties({classReference:t,arguments_:r,baseProperties:n}){let i=this.csharp.instantiateClass({classReference:t,arguments_:r,multiline:!0});return n.length===0?this.csharp.Literal.reference(i):this.csharp.Literal.reference(this.csharp.codeblock(o=>{o.write(i," "),o.pushScope();for(let s of n)o.write(s.name," = ",s.assignment,",");o.popScope(!1)}))}getEnumValue(t,r){if(typeof r!="string")return this.context.errors.add({severity:Or.Critical,message:`Expected enum value string, got: ${typeof r}`}),this.csharp.Literal.nop();let n=t.values.find(s=>s.wireValue===r);if(n==null)return this.context.errors.add({severity:Or.Critical,message:`An enum value named "${r}" does not exist in this context`}),this.csharp.Literal.nop();let i=this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}),o=i.registerField(this.model.getPropertyNameFor(n),n);return this.csharp.Literal.reference(this.csharp.enumInstantiation({reference:i,value:o}))}convertObject({object_:t,value:r,fallbackToDefault:n}){let i=this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}),o=new Map;for(let l of t.properties){let p=this.context.resolvePropertyName(i,l.name.name);o.set(l.name.wireValue,p)}let s=this.context.getRecord(r)??{},c=this.context.associateByWireValue({parameters:t.properties,values:s}).map(l=>{this.context.errors.scope(l.name.wireValue);try{return{name:o.get(l.name.wireValue)??this.context.getClassName(l.name.name),value:this.convert(l)}}finally{this.context.errors.unscope()}}),u=new Set(Object.keys(s));for(let l of t.properties){let p=o.get(l.name.wireValue)??this.context.getClassName(l.name.name);if(u.has(l.name.wireValue)){if(this.isRequiredProperty(l.typeReference)){let d=c.find(f=>f.name===p);if(d!=null&&Da.Literal.nop(d.value)){let f=this.getDefaultLiteralForType(l.typeReference);f!=null&&(d.value=f)}}continue}if(this.isRequiredProperty(l.typeReference)){let d=this.getDefaultLiteralForType(l.typeReference);d!=null&&c.push({name:p,value:d})}}return this.csharp.Literal.class_({reference:i,fields:c})}isRequiredProperty(t){return!(this.context.isOptional(t)||this.context.isNullable(t)||t.type==="list"||t.type==="set"||t.type==="map")}getDefaultLiteralForType(t,r){switch(t.type){case"primitive":return this.getDefaultLiteralForPrimitive(t.value);case"literal":return this.convertLiteral({literal:t.value,value:t.value.value});case"named":{let n=this.context.resolveNamedType({typeId:t.value});if(n==null)return;if(n.type==="alias")return this.getDefaultLiteralForType(n.typeReference,r);if(n.type==="enum"&&n.values.length>0){let i=n.values[0];if(i!=null)return this.getEnumValue(n,i.wireValue)}return n.type==="undiscriminatedUnion"?this.getDefaultLiteralForUndiscriminatedUnion(n,r):n.type==="object"?this.getDefaultLiteralForObject(n,t.value,r):void 0}default:return}}getDefaultLiteralForObject(t,r,n){let i=n??new Set;if(i.has(r))return;i.add(r);let o=this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}),s=[];for(let a of t.properties)if(this.isRequiredProperty(a.typeReference)){let c=this.getDefaultLiteralForType(a.typeReference,i);c!=null&&s.push({name:this.context.resolvePropertyName(o,a.name.name),value:c})}return i.delete(r),this.csharp.Literal.class_({reference:o,fields:s})}getDefaultLiteralForUndiscriminatedUnion(t,r){for(let n of t.types){let i=this.getDefaultLiteralForType(n,r);if(i!=null)return i}}getDefaultLiteralForPrimitive(t){switch(t){case"INTEGER":return this.csharp.Literal.integer(0);case"LONG":return this.csharp.Literal.long(0);case"UINT":return this.csharp.Literal.uint(0);case"UINT_64":return this.csharp.Literal.ulong(0);case"FLOAT":return this.csharp.Literal.float(0);case"DOUBLE":return this.csharp.Literal.double(0);case"BOOLEAN":return this.csharp.Literal.boolean(!1);case"STRING":case"UUID":case"BASE_64":case"BIG_INTEGER":return this.csharp.Literal.string("");case"DATE":return this.csharp.Literal.date("0001-01-01");case"DATE_TIME":case"DATE_TIME_RFC_2822":return this.csharp.Literal.datetime("0001-01-01T00:00:00.000Z");default:be(t)}}convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r,fallbackToDefault:n}){let i=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r});return i==null?this.csharp.Literal.nop():i.typeLiteral}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r}){for(let n of t.types){let i=this.context.errors.size();try{let o=this.convert({typeReference:n,value:r});if(Da.Literal.nop(o)||this.context.errors.size()>i){this.context.errors.truncate(i);continue}return{valueTypeReference:n,typeLiteral:o}}catch{this.context.errors.truncate(i);continue}}this.context.errors.add({severity:Or.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof r}" value`})}convertUnknown({value:t,fallbackToDefault:r}){return this.csharp.Literal.unknown(t)}convertPrimitive({primitive:t,value:r,as:n,fallbackToDefault:i}){switch(t){case"INTEGER":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.integer.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.integer(o)}case"LONG":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.long.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.long(o)}case"UINT":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.uint.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.uint(o)}case"UINT_64":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.ulong.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.ulong(o)}case"FLOAT":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.float.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.float(o)}case"DOUBLE":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.double.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.double(o)}case"BOOLEAN":{let o=this.getValueAsBoolean({value:r,as:n});return o==null?i?this.Primitive.boolean.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.boolean(o)}case"STRING":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Primitive.string.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.string(o)}case"DATE":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Value.dateOnly.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.date(o)}case"DATE_TIME":case"DATE_TIME_RFC_2822":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Value.dateTime.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.datetime(o)}case"UUID":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Primitive.string.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.string(o)}case"BASE_64":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Primitive.string.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.string(o)}case"BIG_INTEGER":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Primitive.string.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.string(o)}default:be(t)}}getValueAsNumber({value:t,as:r}){let n=r==="key"&&typeof t=="string"?Number(t):t;return this.context.getValueAsNumber({value:n})}getValueAsBoolean({value:t,as:r}){let n=r==="key"?typeof t=="string"?t==="true":t==="false"?!1:t:t;return this.context.getValueAsBoolean({value:n})}};Dt();var Ggi=class extends MK{context;constructor({context:t}){super(t.generation),this.context=t}convert(t){switch(t.typeReference.type){case"list":return this.Collection.list(this.convert({typeReference:t.typeReference.value,unboxOptionals:!0}));case"literal":return this.convertLiteral({literal:t.typeReference.value});case"map":return this.Collection.map(this.convert({typeReference:t.typeReference.key}),this.convert({typeReference:t.typeReference.value}));case"named":{let r=this.context.resolveNamedType({typeId:t.typeReference.value});return r==null?this.convertUnknown():this.convertNamed({named:r,typeId:t.typeReference.value})}case"optional":case"nullable":{let r=this.convert({typeReference:t.typeReference.value});return t.unboxOptionals?r.asNonOptional():r.asOptional()}case"primitive":return this.convertPrimitive({primitive:t.typeReference.value});case"set":return this.Collection.set(this.convert({typeReference:t.typeReference.value,unboxOptionals:!0}));case"unknown":return this.convertUnknown();default:be(t.typeReference)}}convertToClassReference(t,r){return this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)})}convertNamed({named:t,typeId:r}){switch(t.type){case"alias":return this.settings.generateLiterals&&t.typeReference.type==="literal"?this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}):this.convert({typeReference:t.typeReference});case"enum":case"object":return this.convertToClassReference(t,r);case"discriminatedUnion":return this.settings.shouldGeneratedDiscriminatedUnions?this.convertToClassReference(t,r):this.Primitive.object;case"undiscriminatedUnion":return this.settings.shouldGenerateUndiscriminatedUnions?this.convertToClassReference(t,r):this.OneOf.OneOf(t.types.map(n=>this.convert({typeReference:n})));default:be(t)}}convertLiteral({literal:t}){switch(t.type){case"boolean":return this.Primitive.boolean;case"string":return this.Primitive.string}}convertUnknown(){return this.Primitive.object}convertPrimitive({primitive:t}){switch(t){case"INTEGER":return this.Primitive.integer;case"UINT":return this.Primitive.uint;case"LONG":return this.Primitive.long;case"UINT_64":return this.Primitive.ulong;case"FLOAT":return this.Primitive.float;case"DOUBLE":return this.Primitive.double;case"BOOLEAN":return this.Primitive.boolean;case"STRING":return this.Primitive.string;case"DATE":return this.Value.dateOnly;case"DATE_TIME":case"DATE_TIME_RFC_2822":return this.Value.dateTime;case"UUID":return this.Primitive.string;case"BASE_64":return this.Primitive.string;case"BIG_INTEGER":return this.Primitive.string;default:be(t)}}};Dt();var Wgi=class extends MK{context;constructor({context:t}){super(t.generation),this.context=t}getFilePropertyInfo({body:t,value:r}){let n={fileFields:[],bodyPropertyFields:[]},i=this.context.getRecord(r)??{};for(let o of t.properties)switch(o.type){case"file":Da.Record.missingKey(i,o.wireValue)&&(i[o.wireValue]="[bytes]"),n.fileFields.push({name:this.context.getPropertyName(o.name),value:this.getSingleFileProperty({property:o,record:i})});break;case"fileArray":Da.Record.missingKey(i,o.wireValue)&&(i[o.wireValue]=["[bytes]"]),n.fileFields.push({name:this.context.getPropertyName(o.name),value:this.getArrayFileProperty({property:o,record:i})});break;case"bodyProperty":if(Da.Record.missingKey(i,o.name.wireValue))switch(o.typeReference.type){case"optional":break;case"primitive":{switch(o.typeReference.value.toLowerCase()){case"integer":{i[o.name.wireValue]=123;break}case"string":{i[o.name.wireValue]="[string]";break}case"boolean":{i[o.name.wireValue]=!0;break}case"double":{i[o.name.wireValue]=123.456;break}case"float":{i[o.name.wireValue]=123.456;break}case"long":{i[o.name.wireValue]=123456789;break}case"uint":{i[o.name.wireValue]=123;break}case"uint64":{i[o.name.wireValue]=12345;break}case"date":{i[o.name.wireValue]=new Date(2021,1,1);break}case"datetime":{i[o.name.wireValue]=new Date(2021,1,1,12,0,0);break}case"uuid":{i[o.name.wireValue]="123e4567-e89b-12d3-a456-426614174000";break}case"base64":{i[o.name.wireValue]="SGVsbG8gd29ybGQh";break}case"biginteger":{i[o.name.wireValue]="12345678901234567890";break}}break}default:break}n.bodyPropertyFields.push({name:this.context.getPropertyName(o.name.name),value:this.getBodyProperty({property:o,record:i})});break;default:be(o)}return n}getSingleFileProperty({property:t,record:r}){let n=this.context.getSingleFileValue({property:t,record:r});return n==null?this.csharp.Literal.nop():this.context.getFileParameterForString(n)}getArrayFileProperty({property:t,record:r}){let n=this.context.getFileArrayValues({property:t,record:r});return n==null?this.csharp.Literal.nop():this.csharp.Literal.list({valueType:this.Types.FileParameter,values:n.map(i=>this.context.getFileParameterForString(i))})}getBodyProperty({property:t,record:r}){let n=r[t.name.wireValue];return n==null?this.csharp.Literal.nop():this.context.dynamicLiteralMapper.convert({typeReference:t.typeReference,value:n})}};var Hgi=class e extends fx{ir;dynamicTypeMapper;dynamicLiteralMapper;filePropertyMapper;generation;get namespaces(){return this.generation.namespaces}get registry(){return this.generation.registry}get settings(){return this.generation.settings}get constants(){return this.generation.constants}get names(){return this.generation.names}get model(){return this.generation.model}get format(){return this.generation.format}get csharp(){return this.generation.csharp}get Types(){return this.generation.Types}get System(){return this.generation.extern.System}get NUnit(){return this.generation.extern.NUnit}get OneOf(){return this.generation.extern.OneOf}get Google(){return this.generation.extern.Google}get WireMock(){return this.generation.extern.WireMock}get Primitive(){return this.generation.Primitive}get Value(){return this.generation.Value}get Collection(){return this.generation.Collection}constructor({ir:t,config:r,options:n,generation:i}){super({ir:t,config:r,options:n}),this.ir=t,this.generation=i??new XKt(t,r.workspaceName,r.customConfig!=null?r.customConfig:{},r),this.dynamicTypeMapper=new Ggi({context:this}),this.dynamicLiteralMapper=new qgi({context:this}),this.filePropertyMapper=new Wgi({context:this})}clone(){return new e({ir:this.ir,config:this.config,options:this.options,generation:this.generation})}getFileParameterForString(t){return this.csharp.Literal.reference(this.csharp.instantiateClass({classReference:this.Types.FileParameter,arguments_:[],properties:[{name:"Stream",value:this.getMemoryStreamForString(t)}],multiline:!0}))}getMemoryStreamForString(t){return this.System.IO.MemoryStream.new({arguments_:[this.csharp.invokeMethod({on:this.System.Text.Encoding_UTF8,method:"GetBytes",arguments_:[this.csharp.Literal.string(t)]})]})}getClassName(t){return t.pascalCase.safeName}getParameterName(t){return t.camelCase.safeName}getPropertyName(t){return t.pascalCase.safeName}resolvePropertyName(t,r){let n=r.pascalCase.safeName,i=t.scope.getRedirectedFieldName(n);return i||(t.scope.isField(n)?n:t.registerField(n))}getMethodName(t){return`${t.pascalCase.safeName}Async`}getNamespace(t,r){let n=this.getNamespaceSegments(t);return n=r!=null?[...n,r]:n,[this.namespaces.root,...n].join(".")}getEnvironmentTypeReferenceFromID(t){let r=this.resolveEnvironmentName(t);if(r!=null)return this.getEnvironmentClassReferenceForEnumName(r)}getEnvironmentClassReferenceForEnumName(t){return this.csharp.classReference({name:`${this.generation.Types.Environments.name}.${this.getClassName(t)}`,namespace:this.namespaces.root})}getNamespaceSegments(t){return(this.settings.explicitNamespaces?t.allParts:t.packagePath).map(n=>n.pascalCase.safeName)}precalculate(t){this.generation.initialize(),this.System.Collections.Generic.KeyValuePair(),this.System.Collections.Generic.IEnumerable(),this.System.Collections.Generic.IAsyncEnumerable(),this.System.Collections.Generic.HashSet(),this.System.Collections.Generic.List(),this.System.Collections.Generic.Dictionary(),this.System.Threading.Tasks.Task(),Object.entries(this.ir.types).sort((r,n)=>r[0].length-n[0].length).forEach(([r,n])=>{this.dynamicTypeMapper.convertToClassReference(n,r)});for(let[r,n]of t.entries())if(this.csharp.classReference({origin:this.model.staticExplicit(`Example${r}`),namespace:"Usage"}),n.endpoint){let i=this.resolveEndpointLocation(n.endpoint);for(let o of i)switch(o.request.type){case"inlined":this.csharp.classReference({origin:o.request.declaration.name,namespace:this.getNamespace(o.request.declaration.fernFilepath)});break;case"body":break}}this.generation.Types.ClientOptions,this.generation.Types.RootClientForSnippets,this.csharp.freezeClassReferences()}};Dt();_i();var kZl="request",Kgi=class extends MK{context;constructor({context:t}){super(t.generation),this.context=t}async generateSnippet({endpoint:t,request:r,options:n}){return this.buildCodeBlock({endpoint:t,snippet:r,options:n}).toString({namespace:"Examples",generation:this.generation,allNamespaceSegments:new Set,allTypeClassReferences:new Map,skipGlobalQualifier:!0})}generateSnippetSync({endpoint:t,request:r,options:n}){return this.buildCodeBlock({endpoint:t,snippet:r,options:n}).toString({namespace:"Examples",generation:this.generation,allNamespaceSegments:new Set,allTypeClassReferences:new Map,skipGlobalQualifier:!0})}async generateSnippetAst({endpoint:t,request:r,options:n}){throw new Error("Unsupported")}buildCodeBlock({endpoint:t,snippet:r,options:n}){if(t.examples&&Da.DynamicIR.EndpointExample(r)&&!t.examples.find(s=>s.id===r.id))throw new Error("Endpoint does not have an example that matches the snippet");let i=this.csharp.codeblock(s=>{s.writeNodeStatement(this.constructClient({endpoint:t,snippet:r})),s.newLine(),s.writeNodeStatement(this.callMethod({endpoint:t,snippet:r}))}),o=this.getStyle(n);switch(o){case oS.Concise:return i;case oS.Full:return this.buildFullCodeBlock({body:i,options:n});default:be(o)}}buildFullCodeBlock({body:t,options:r}){let n=this.getConfig(r),i=n.fullStyleMethodName??n.fullStyleClassName??"Example",o=this.csharp.class_({name:"Examples",namespace:"Examples",partial:!0,skipNamespaceDeclaration:!0,access:wCt.Access.Public});return o.addNamespaceReference(this.Types.RootClientForSnippets.namespace),o.addMethod({name:i,access:wCt.Access.Public,isAsync:!0,parameters:[],body:t}),o}constructClient({endpoint:t,snippet:r}){return this.csharp.codeblock(n=>{n.write("var client = "),n.writeNode(this.getRootClientConstructorInvocation(this.getConstructorArgs({endpoint:t,snippet:r})))})}callMethod({endpoint:t,snippet:r}){let n=t.response?.type==="streaming"||t.response?.type==="streamParameter",i=this.csharp.invokeMethod({on:this.csharp.codeblock("client"),method:this.getMethod({endpoint:t}),arguments_:this.getMethodArgs({endpoint:t,snippet:r}),async:!0,configureAwait:!0,multiline:!0,isAsyncEnumerable:n});return n?this.csharp.codeblock(o=>{o.write("await foreach (var item in "),o.writeNode(i),o.writeLine(")"),o.pushScope(),o.writeLine("/* consume each item */"),o.popScope()}):i}getConstructorArgs({endpoint:t,snippet:r}){let n=[];t.auth!=null&&(r.auth!=null?n.push(...this.getConstructorAuthArgs({auth:t.auth,values:r.auth})):this.context.errors.add({severity:Or.Warning,message:`Auth with ${t.auth.type} configuration is required for this endpoint`}));let i=[],o=this.getConstructorBaseUrlArgs({baseUrl:r.baseURL,environment:r.environment});o.length>0&&i.push(...o),this.context.errors.scope(Fo.Headers);let s=[];if(this.context.ir.headers!=null&&r.headers!=null&&s.push(...this.getConstructorHeaderArgs({headers:this.context.ir.headers,values:r.headers})),this.context.errors.unscope(),this.settings.unifiedClientOptions){let a=[...n.map(c=>({name:ku(c.name),assignment:c.assignment})),...s.map(c=>({name:ku(c.name),assignment:c.assignment})),...i.map(c=>({name:c.name,assignment:c.assignment}))];return a.length===0?[]:[{name:"clientOptions",assignment:this.csharp.instantiateClass({classReference:this.Types.ClientOptions,arguments_:a,multiline:!0})}]}return i.length===0?[...n,...s]:[...n,...s,{name:"clientOptions",assignment:this.csharp.instantiateClass({classReference:this.Types.ClientOptions,arguments_:i.map(a=>({name:a.name,assignment:a.assignment})),multiline:!0})}]}getConstructorBaseUrlArgs({baseUrl:t,environment:r}){let n=this.getBaseUrlArg({baseUrl:t,environment:r});return Da.Literal.nop(n)?[]:[{name:this.getBaseUrlOptionName(),assignment:n}]}getBaseUrlArg({baseUrl:t,environment:r}){if(t!=null&&r!=null)return this.context.errors.add({severity:Or.Critical,message:"Cannot specify both baseUrl and environment options"}),this.csharp.Literal.nop();if(t!=null)return this.context.ir.environments?.environments.type==="multipleBaseUrls"?(this.context.errors.add({severity:Or.Critical,message:"The C# SDK doesn't support a baseUrl when multiple URL environments are configured"}),this.csharp.Literal.nop()):this.csharp.Literal.string(t);if(r!=null){if(this.context.isSingleEnvironmentID(r)){let n=this.context.getEnvironmentTypeReferenceFromID(r);return n==null?(this.context.errors.add({severity:Or.Warning,message:`Environment ${JSON.stringify(r)} was not found`}),this.csharp.Literal.nop()):this.csharp.Literal.reference(n)}if(this.context.isMultiEnvironmentValues(r))return this.context.validateMultiEnvironmentUrlValues(r)?this.csharp.Literal.reference(this.csharp.instantiateClass({classReference:this.Types.Environments,arguments_:Object.entries(r).map(([n,i])=>({name:ku($n(n)),assignment:this.context.dynamicLiteralMapper.convert({typeReference:{type:"primitive",value:"STRING"},value:i})})),multiline:!0})):this.csharp.Literal.nop()}return this.csharp.Literal.nop()}getConstructorAuthArgs({auth:t,values:r}){if(r.type!==t.type)return this.addError(this.context.newAuthMismatchError({auth:t,values:r}).message),[];switch(t.type){case"basic":return r.type==="basic"?this.getConstructorBasicAuthArg({auth:t,values:r}):[];case"bearer":return r.type==="bearer"?this.getConstructorBearerAuthArgs({auth:t,values:r}):[];case"header":return r.type==="header"?this.getConstructorHeaderAuthArgs({auth:t,values:r}):[];case"oauth":return r.type==="oauth"?this.getConstructorOAuthArgs({auth:t,values:r}):[];case"inferred":return r.type==="inferred"?this.getConstructorInferredAuthArgs({auth:t,values:r}):[];default:be(t)}}addError(t){this.context.errors.add({severity:Or.Critical,message:t})}addWarning(t){this.context.errors.add({severity:Or.Warning,message:t})}getConstructorBasicAuthArg({auth:t,values:r}){let n=t,i=!!n.usernameOmit,o=!!n.passwordOmit,s=[];return i||s.push({name:this.context.getParameterName(t.username),assignment:this.csharp.Literal.string(r.username)}),o||s.push({name:this.context.getParameterName(t.password),assignment:this.csharp.Literal.string(r.password)}),s}getConstructorBearerAuthArgs({auth:t,values:r}){return[{name:this.context.getParameterName(t.token),assignment:this.csharp.Literal.string(r.token)}]}getConstructorHeaderAuthArgs({auth:t,values:r}){return[{name:this.context.getParameterName(t.header.name.name),assignment:this.context.dynamicLiteralMapper.convert({typeReference:t.header.typeReference,value:r.value,fallbackToDefault:t.header.name.wireValue})}]}getConstructorOAuthArgs({auth:t,values:r}){return[{name:this.context.getParameterName(t.clientId),assignment:this.csharp.Literal.string(r.clientId)},{name:this.context.getParameterName(t.clientSecret),assignment:this.csharp.Literal.string(r.clientSecret)}]}getConstructorInferredAuthArgs({auth:t,values:r}){let n=[];if(t.parameters!=null)for(let i of t.parameters){let o=i.name.wireValue,s=r.values?.[o];n.push({name:this.context.getParameterName(i.name.name),assignment:this.context.dynamicLiteralMapper.convert({typeReference:i.typeReference,value:s,fallbackToDefault:o})})}else this.context.errors.add({severity:Or.Critical,message:"Inferred auth parameters are not defined in the IR. Please ensure you're using IR version 62.3.0 or later."});return n}getConstructorHeaderArgs({headers:t,values:r}){let n=[];for(let i of t){let o=r[i.name.wireValue],s=this.getConstructorHeaderArg({header:i,value:o});s!=null&&n.push({name:this.context.getParameterName(i.name.name),assignment:s})}return n}getConstructorHeaderArg({header:t,value:r}){let n=this.context.dynamicLiteralMapper.convert({typeReference:t.typeReference,value:r,fallbackToDefault:t.name.wireValue});if(!Da.Literal.nop(n))return n}getMethodArgs({endpoint:t,snippet:r}){switch(t.request.type){case"inlined":return this.getMethodArgsForInlinedRequest({request:t.request,snippet:r});case"body":return this.getMethodArgsForBodyRequest({request:t.request,snippet:r});default:be(t.request)}}getMethodArgsForInlinedRequest({request:t,snippet:r}){this.context.errors.scope(Fo.PathParameters);let n=[...this.context.ir.pathParameters??[],...t.pathParameters??[]],i=this.context.includePathParametersInWrappedRequest({request:t,inlinePathParameters:this.settings.shouldInlinePathParameters}),o=i?this.getPathParameters({namedParameters:n,snippet:r}):[],s=i?[]:this.getPathParameterArguments({namedParameters:n,snippet:r});this.context.errors.unscope(),this.context.errors.scope(Fo.RequestBody);let a=this.getFilePropertyInfo({request:t,snippet:r});this.context.errors.unscope();let c=this.getInlinedRequestArg({request:t,snippet:r,pathParameterFields:o,filePropertyInfo:a});return s.length>0?[...s.map(u=>this.namedArgument({name:u.name,value:u.value})),this.namedArgument({name:kZl,value:c})]:[c]}getFilePropertyInfo({request:t,snippet:r}){return t.body==null||!this.context.isFileUploadRequestBody(t.body)?{fileFields:[],bodyPropertyFields:[]}:this.context.filePropertyMapper.getFilePropertyInfo({body:t.body,value:r.requestBody})}getInlinedRequestArg({request:t,snippet:r,pathParameterFields:n,filePropertyInfo:i}){let o=this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)});this.context.errors.scope(Fo.QueryParameters);let a=this.context.associateQueryParametersByWireValue({parameters:t.queryParameters??[],values:r.queryParameters??{}}).map(p=>({name:this.context.resolvePropertyName(o,p.name.name),value:this.context.dynamicLiteralMapper.convert(p)}));this.context.errors.unscope(),this.context.errors.scope(Fo.Headers);let u=this.context.associateByWireValue({parameters:t.headers??[],values:r.headers??{}}).map(p=>({name:this.context.resolvePropertyName(o,p.name.name),value:this.context.dynamicLiteralMapper.convert({...p,fallbackToDefault:p.name.wireValue})}));this.context.errors.unscope(),this.context.errors.scope(Fo.RequestBody);let l=t.body!=null?this.getInlinedRequestBodyConstructorFields({body:t.body,value:r.requestBody,filePropertyInfo:i,classReference:o}):[];return this.context.errors.unscope(),this.csharp.Literal.class_({reference:o,fields:[...n,...a,...u,...l]})}getInlinedRequestBodyConstructorFields({body:t,value:r,filePropertyInfo:n,classReference:i}){switch(t.type){case"properties":return this.getInlinedRequestBodyPropertyConstructorFields({parameters:t.value,value:r,classReference:i});case"referenced":return[this.getReferencedRequestBodyPropertyConstructorField({body:t,value:r,classReference:i})];case"fileUpload":return this.getFileUploadRequestBodyConstructorFields({filePropertyInfo:n});default:be(t)}}getInlinedRequestBodyPropertyConstructorFields({parameters:t,value:r,classReference:n}){let i=[],o=this.context.associateByWireValue({parameters:t,values:this.context.getRecord(r)??{}});for(let s of o)i.push({name:this.context.resolvePropertyName(n,s.name.name),value:this.context.dynamicLiteralMapper.convert({...s,fallbackToDefault:s.name.wireValue})});return i}getFileUploadRequestBodyConstructorFields({filePropertyInfo:t}){return[...t.fileFields,...t.bodyPropertyFields]}getReferencedRequestBodyPropertyConstructorField({body:t,value:r,classReference:n}){return{name:this.context.resolvePropertyName(n,t.bodyKey),value:this.getReferencedRequestBodyPropertyLiteral({body:t.bodyType,value:r})}}getReferencedRequestBodyPropertyLiteral({body:t,value:r}){switch(t.type){case"bytes":return this.getBytesBodyRequestArg({value:r});case"typeReference":return this.context.dynamicLiteralMapper.convert({typeReference:t.value,value:r,fallbackToDefault:JSON.stringify(t.value)});default:be(t)}}getMethodArgsForBodyRequest({request:t,snippet:r}){this.context.errors.scope(Fo.PathParameters);let n=[...this.context.ir.pathParameters??[],...t.pathParameters??[]],i=this.getPathParameterArguments({namedParameters:n,snippet:r});this.context.errors.unscope(),this.context.errors.scope(Fo.RequestBody);let o=t.body!=null?this.getBodyRequestArg({body:t.body,value:r.requestBody}):void 0;if(this.context.errors.unscope(),i.length>0&&o!=null)return[...i.map(a=>this.namedArgument({name:a.name,value:a.value})),this.namedArgument({name:kZl,value:o})];let s=i.map(a=>a.value);return o!=null&&s.push(o),s}getPathParameterArguments({namedParameters:t,snippet:r}){return this.context.associateByWireValueOrDefault({parameters:t,values:r.pathParameters??{}}).map(i=>({name:this.context.getParameterName(i.name.name),value:this.context.dynamicLiteralMapper.convert({...i,fallbackToDefault:i.name.wireValue,forceLiteral:!0})}))}namedArgument({name:t,value:r}){return this.csharp.codeblock(n=>{n.write(`${t}: `),n.writeNode(r)})}getBodyRequestArg({body:t,value:r}){switch(t.type){case"bytes":return this.getBytesBodyRequestArg({value:r});case"typeReference":return t.value.type==="optional"&&r==null?this.csharp.Literal.null():this.context.dynamicLiteralMapper.convert({typeReference:t.value,value:r,fallbackToDefault:JSON.stringify(t.value)});default:be(t)}}getBytesBodyRequestArg({value:t}){let r=this.context.getValueAsString({value:t});return r==null&&(this.context.errors.add({severity:Or.Critical,message:"The bytes request body must be provided in string format"}),r="[bytes]"),this.csharp.Literal.reference(this.context.getMemoryStreamForString(r))}getRootClientConstructorInvocation(t){return this.csharp.instantiateClass({classReference:this.Types.RootClientForSnippets,arguments_:t,forceUseConstructor:!0,multiline:!0})}getPathParameters({namedParameters:t,snippet:r}){let n=[],i=this.context.associateByWireValueOrDefault({parameters:t,values:r.pathParameters??{}});for(let o of i)n.push({name:this.context.getPropertyName(o.name.name),value:this.context.dynamicLiteralMapper.convert({...o,fallbackToDefault:o.name.wireValue})});return n}getMethod({endpoint:t}){return t.declaration.fernFilepath.allParts.length>0?`${t.declaration.fernFilepath.allParts.map(r=>this.context.getClassName(r)).join(".")}.${this.context.getMethodName(t.declaration.name)}`:this.context.getMethodName(t.declaration.name)}getBaseUrlOptionName(){return this.context.ir.environments?.environments.type==="multipleBaseUrls"?"Environment":"BaseUrl"}getStyle(t){return t.style??this.context.options.style??oS.Full}getConfig(t){return t.config??this.context.options.config??{}}};var ZKt=class extends px{constructor({ir:t,config:r,options:n={}}){super(new Hgi({ir:t,config:r,options:n}))}precalculate(t){this.context.precalculate(t)}async generate(t,r={}){return super.generate(t,r)}generateSync(t,r={}){return super.generateSync(t,r)}async generateSnippetAst(t){return super.generateSnippetAst(t)}createSnippetGenerator(t){return new Kgi({context:t})}};Xt();var TCt=require("fs/promises"),jZl=ye(require("path"),1);function ZT(e){let t=e.endpoint.method;if(t!=="HEAD")return{...e,baseURL:e.baseUrl,endpoint:{...e.endpoint,method:t},auth:b2g(e.auth)}}function b2g(e){if(e!=null)return e}function NZl(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,E2g(r)]).filter(([t,r])=>r!=null))}function E2g(e){let t=e.location.method;if(t!=="HEAD")return{...e,location:{...e.location,method:t},examples:e.examples!=null?I2g(e.examples):void 0,auth:C2g(e.auth)}}function I2g(e){return e.map(t=>v2g(t)).filter(t=>t!=null)}function v2g(e){let t=e.endpoint.method;if(t!=="HEAD")return{...e,baseURL:e.baseUrl,endpoint:{...e.endpoint,method:t},auth:x2g(e.auth)}}function x2g(e){if(e!=null)return e}function C2g(e){if(e!=null)return e}function $T(e){return{...e,endpoints:NZl(e.endpoints)}}var w2g=`<Project Sdk="Microsoft.NET.Sdk">
4508
+ ${fKt()}`)}return this.generation.registry.registerClassReference(t,r)}freezeClassReferences(){this.frozen=!0}getPropertyName(t,r){let n=this.model.getPropertyNameFor(r),i=this.model.origin(r);if(i){let o=t.getFieldName(i,n);if(o)return o}return n}class_(t){let r=t;return"reference"in t&&(r={...t.reference,...t}),new uae(r,this.generation)}testClass(t){return new CCt(t,this.generation)}annotation(t){return new ghe(t,this.generation)}annotationGroup(t){return new mCt(t,this.generation)}instantiateClass(t){return new Xxt(t,this.generation)}invokeMethod(t){return new tCt(t,this.generation)}codeblock(t){return new vRe(t,this.generation)}code(){return new xRe({},this.generation)}anonymousFunction(t){return new hCt(t)}parameter(t){return new QK(t,this.generation)}interface_(t){return new xCt(t,this.generation)}enum_(t){return new vCt(t,this.generation)}dictionary(t){return new Zxt(t,this.generation)}list(t){return new eCt(t,this.generation)}readOnlyMemory(t){return new rCt(t,this.generation)}set(t){return new nCt(t,this.generation)}switch_(t){return new ACt(t,this.generation)}ternary(t){return new yCt(t,this.generation)}and(t){return new dCt(t,this.generation)}or(t){return new gCt(t,this.generation)}enumInstantiation(t){return new $xt(t,this.generation)}string_(t){return new iCt(t,this.generation)}xmlDocBlock(t){return new wRe(t,this.generation)}InstantiatedPrimitive={string:t=>new rP({type:"string",value:t},this.generation),boolean:t=>new rP({type:"boolean",value:t},this.generation),integer:t=>new rP({type:"integer",value:t},this.generation),long:t=>new rP({type:"long",value:t},this.generation),uint:t=>new rP({type:"uint",value:t},this.generation),ulong:t=>new rP({type:"ulong",value:t},this.generation),float:t=>new rP({type:"float",value:t},this.generation),double:t=>new rP({type:"double",value:t},this.generation),date:t=>new rP({type:"date",value:t},this.generation),dateTime:(t,r=!0)=>new rP({type:"dateTime",value:t,parse:r},this.generation),uuid:t=>new rP({type:"uuid",value:t},this.generation),null:()=>new rP({type:"null"},this.generation)};Literal={class_:({reference:t,fields:r})=>new vl.Class_(t,r,this.generation),dictionary:({keyType:t,valueType:r,entries:n})=>new vl.Dictionary(t,r,n,this.generation),list:({valueType:t,values:r})=>new vl.List(t,r,this.generation),set:({valueType:t,values:r})=>new vl.Set(t,r,this.generation),boolean:t=>new vl.Boolean(t,this.generation),float:t=>new vl.Float(t,this.generation),date:t=>new vl.Date(t,this.generation),datetime:t=>new vl.DateTime(t,this.generation),decimal:t=>new vl.Decimal(t,this.generation),double:t=>new vl.Double(t,this.generation),integer:t=>new vl.Integer(t,this.generation),long:t=>new vl.Long(t,this.generation),uint:t=>new vl.Uint(t,this.generation),ulong:t=>new vl.Ulong(t,this.generation),reference:t=>new vl.Reference(t,this.generation),string:t=>new vl.String(t,this.generation),null:()=>new vl.Null(this.generation),nop:()=>new vl.Nop(this.generation),unknown:t=>new vl.Unknown(t,this.generation)};xmlDocBlockOf(t){return t instanceof wRe?t:new wRe(t,this.generation)}VALID_READ_ONLY_MEMORY_TYPES=new Set(["int","long","uint","ulong","string","bool","float","double"]);validateReadOnlyMemoryTypes(){for(let t of this.generation.settings.readOnlyMemoryTypes)if(!this.VALID_READ_ONLY_MEMORY_TYPES.has(t))throw new Error(`Type "${t}" is not a valid 'read-only-memory-types' custom config option; expected one of ${JSON.stringify(this.VALID_READ_ONLY_MEMORY_TYPES)}.`)}};function vu(e){let t={},r={};for(let[n,i]of Object.entries(e))i.length===0?Object.defineProperty(r,n,{get(){return n in t||(t[n]=i()),t[n]},enumerable:!0,configurable:!0}):r[n]=i;return r}var Ugi=class{generation;constructor(t){this.generation=t}get csharp(){return this.generation.csharp}System=vu({Action:t=>this.csharp.classReference({name:"Action",namespace:"System",generics:t||void 0,multipartMethodName:null,multipartMethodNameForCollection:null,isReferenceType:!0}),Func:(t,r)=>this.csharp.classReference({name:"Func",namespace:"System",generics:t?r?[...t,r]:t:r?[r]:void 0,multipartMethodName:null,multipartMethodNameForCollection:null,isReferenceType:!0}),DateOnly:()=>this.csharp.classReference({name:"DateOnly",namespace:"System"}),DateTime:()=>this.csharp.classReference({name:"DateTime",namespace:"System"}),Enum:()=>this.csharp.classReference({name:"Enum",namespace:"System"}),Exception:()=>this.csharp.classReference({name:"Exception",namespace:"System"}),ReadOnlyMemory:t=>this.csharp.classReference({name:"ReadOnlyMemory",namespace:"System",generics:[t]}),Serializable:()=>this.csharp.classReference({name:"SerializableAttribute",namespace:"System"}),String:()=>this.csharp.classReference({name:"String",namespace:"System"}),Type:()=>this.csharp.classReference({name:"Type",namespace:"System",isReferenceType:!0,multipartMethodName:null,multipartMethodNameForCollection:null,fullyQualified:!0}),TimeSpan:()=>this.csharp.classReference({name:"TimeSpan",namespace:"System"}),Uri:()=>this.csharp.classReference({name:"Uri",namespace:"System"}),UriBuilder:()=>this.csharp.classReference({name:"UriBuilder",namespace:"System"}),Runtime:()=>vu({Serialization:()=>vu({EnumMember:()=>this.csharp.classReference({name:"EnumMemberAttribute",namespace:"System.Runtime.Serialization"})})}),Collections:()=>vu({Generic:()=>vu({IAsyncEnumerable:t=>this.csharp.classReference({name:"IAsyncEnumerable",namespace:"System.Collections.Generic",generics:t?[t]:void 0}),IEnumerable:t=>this.csharp.classReference({name:"IEnumerable",namespace:"System.Collections.Generic",generics:t?[t]:void 0}),KeyValuePair:(t,r)=>this.csharp.classReference({name:"KeyValuePair",namespace:"System.Collections.Generic",generics:t&&r?[t,r]:void 0}),List:t=>this.csharp.classReference({name:"List",namespace:"System.Collections.Generic",generics:t?[t]:void 0,isCollection:!0}),HashSet:t=>this.csharp.classReference({name:"HashSet",namespace:"System.Collections.Generic",generics:t?[t]:void 0,isCollection:!0}),Dictionary:(t,r)=>this.csharp.classReference({name:"Dictionary",namespace:"System.Collections.Generic",generics:t&&r?[t,r]:void 0,isCollection:!0}),IDictionary:(t,r)=>this.csharp.classReference({name:"IDictionary",namespace:"System.Collections.Generic",generics:[t,r]})}),Linq:()=>vu({Enumerable:()=>this.csharp.classReference({name:"Enumerable",namespace:"System.Linq"})})}),Globalization:()=>vu({DateTimeStyles:()=>this.csharp.classReference({name:"DateTimeStyles",namespace:"System.Globalization"})}),Linq:()=>vu({Enumerable:()=>this.csharp.classReference({name:"Enumerable",namespace:"System.Linq"})}),Net:()=>vu({Http:()=>vu({HttpClient:()=>this.csharp.classReference({name:"HttpClient",namespace:"System.Net.Http"}),HttpMethod:()=>this.csharp.classReference({name:"HttpMethod",namespace:"System.Net.Http"}),HttpResponseHeaders:()=>this.csharp.classReference({name:"HttpResponseHeaders",namespace:"System.Net.Http.Headers"})}),ServerSentEvents:()=>vu({SseEvent:()=>this.csharp.classReference({name:"SseEvent",namespace:"System.Net.ServerSentEvents"}),SseParser:()=>this.csharp.classReference({name:"SseParser",namespace:"System.Net.ServerSentEvents"})}),WebSockets:()=>vu({ClientWebSocketOptions:()=>this.csharp.classReference({name:"ClientWebSocketOptions",namespace:"System.Net.WebSockets"})})}),IO:()=>vu({MemoryStream:()=>this.csharp.classReference({name:"MemoryStream",namespace:"System.IO"}),Stream:()=>this.csharp.classReference({name:"Stream",namespace:"System.IO"}),StreamReader:()=>this.csharp.classReference({name:"StreamReader",namespace:"System.IO"})}),Text:()=>vu({Encoding:()=>this.csharp.classReference({name:"Encoding",namespace:"System.Text"}),Encoding_UTF8:()=>this.csharp.classReference({name:"UTF8",enclosingType:this.csharp.classReference({name:"Encoding",namespace:"System.Text"})}),Json:()=>vu({JsonElement:()=>this.csharp.classReference({name:"JsonElement",namespace:"System.Text.Json"}),JsonDocument:()=>this.csharp.classReference({name:"JsonDocument",namespace:"System.Text.Json"}),JsonException:()=>this.csharp.classReference({name:"JsonException",namespace:"System.Text.Json"}),Utf8JsonReader:()=>this.csharp.classReference({name:"Utf8JsonReader",namespace:"System.Text.Json"}),JsonSerializerOptions:()=>this.csharp.classReference({name:"JsonSerializerOptions",namespace:"System.Text.Json"}),JsonSerializer:()=>this.csharp.classReference({name:"JsonSerializer",namespace:"System.Text.Json"}),Utf8JsonWriter:()=>this.csharp.classReference({name:"Utf8JsonWriter",namespace:"System.Text.Json"}),Nodes:()=>vu({JsonNode:()=>this.csharp.classReference({name:"JsonNode",namespace:"System.Text.Json.Nodes"}),JsonObject:()=>this.csharp.classReference({name:"JsonObject",namespace:"System.Text.Json.Nodes"})}),Serialization:()=>vu({IJsonOnDeserialized:()=>this.csharp.classReference({name:"IJsonOnDeserialized",namespace:"System.Text.Json.Serialization"}),IJsonOnSerializing:()=>this.csharp.classReference({name:"IJsonOnSerializing",namespace:"System.Text.Json.Serialization"}),JsonOnDeserializedAttribute:()=>this.csharp.classReference({name:"JsonOnDeserializedAttribute",namespace:"System.Text.Json.Serialization"}),JsonExtensionData:()=>this.csharp.classReference({name:"JsonExtensionDataAttribute",namespace:"System.Text.Json.Serialization"}),JsonConverter:t=>this.csharp.classReference({name:"JsonConverter",namespace:"System.Text.Json.Serialization",generics:t?[t]:void 0}),JsonIgnore:()=>this.csharp.classReference({name:"JsonIgnoreAttribute",namespace:"System.Text.Json.Serialization"}),JsonPropertyName:()=>this.csharp.classReference({name:"JsonPropertyNameAttribute",namespace:"System.Text.Json.Serialization"})})})}),Threading:()=>vu({CancellationToken:()=>this.csharp.classReference({name:"CancellationToken",namespace:"System.Threading"}),Tasks:()=>vu({Task:t=>this.csharp.classReference({name:"Task",namespace:"System.Threading.Tasks",generics:t?[t]:void 0}),ValueTask:t=>this.csharp.classReference({name:"ValueTask",namespace:"System.Threading.Tasks",generics:t?[t]:void 0})})}),ComponentModel:()=>vu({INotifyPropertyChanged:()=>this.csharp.classReference({name:"INotifyPropertyChanged",namespace:"System.ComponentModel"}),PropertyChangedEventHandler:()=>this.csharp.classReference({name:"PropertyChangedEventHandler",namespace:"System.ComponentModel"})}),IAsyncDisposable:()=>this.csharp.classReference({name:"IAsyncDisposable",namespace:"System"}),IDisposable:()=>this.csharp.classReference({name:"IDisposable",namespace:"System"})});NUnit=vu({Framework:()=>vu({TestFixture:()=>this.csharp.classReference({name:"TestFixture",namespace:"NUnit.Framework"}),Test:()=>this.csharp.classReference({name:"Test",namespace:"NUnit.Framework"}),OneTimeTearDown:()=>this.csharp.classReference({name:"OneTimeTearDown",namespace:"NUnit.Framework"}),OneTimeSetUp:()=>this.csharp.classReference({name:"OneTimeSetUp",namespace:"NUnit.Framework"}),SetUpFixture:()=>this.csharp.classReference({name:"SetUpFixture",namespace:"NUnit.Framework"}),Parallelizable:()=>this.csharp.classReference({name:"Parallelizable",namespace:"NUnit.Framework"})})});OneOf=vu({OneOf:t=>this.csharp.classReference({name:"OneOf",namespace:"OneOf",generics:t}),OneOfBase:t=>this.csharp.classReference({name:"OneOfBase",namespace:"OneOf",generics:t})});Google=vu({Protobuf:()=>vu({ByteString:()=>this.csharp.classReference({name:"ByteString",namespace:"Google.Protobuf"}),WellKnownTypes:()=>vu({Struct:()=>this.csharp.classReference({name:"Struct",namespace:"Google.Protobuf.WellKnownTypes",namespaceAlias:"WellKnownProto"}),Value:()=>this.csharp.classReference({name:"Value",namespace:"Google.Protobuf.WellKnownTypes",namespaceAlias:"WellKnownProto"}),ListValue:()=>this.csharp.classReference({name:"ListValue",namespace:"Google.Protobuf.WellKnownTypes",namespaceAlias:"WellKnownProto"}),Timestamp:()=>this.csharp.classReference({name:"Timestamp",namespace:"Google.Protobuf.WellKnownTypes",namespaceAlias:"WellKnownProto"})})})});WireMock=vu({Server:()=>this.csharp.classReference({name:"WireMockServer",namespace:"WireMock.Server"}),WireMockServerSettings:()=>this.csharp.classReference({name:"WireMockServerSettings",namespace:"WireMock.Settings"}),WireMockConsoleLogger:()=>this.csharp.classReference({name:"WireMockConsoleLogger",namespace:"WireMock.Logging"})});Grpc=vu({Core:()=>vu({RpcException:()=>this.csharp.classReference({name:"RpcException",namespace:"Grpc.Core"})})})};var nDs=new Set(["name","camelCase","snakeCase","screamingSnakeCase","pascalCase"]);function y2g(e,t){return nDs.has(t)?e??"":e?`${e}.${t}`:t}var Vgi=class{generation;indexByObject=new Map;indexByPath=new Map;explicitByObject=new Map;explicitByPath=new Map;root;ir;get csharp(){return this.generation.csharp}get registry(){return this.generation.registry}constructor(t,r){this.generation=r,this.root=this.createIndex(t),this.ir=t}createIndex(t,r="",n){let i=y2g(n?.jsonPath,r);if(this.indexByPath.has(i)){n||nI(`Parent provenance not found for node: ${JSON.stringify(t).substring(0,100)}`),this.indexByObject.set(t,n);let s=nDs.has(r);for(let[a,c]of Object.entries(t))typeof c=="object"&&c!==null&&(s&&nDs.has(a)?this.indexByObject.set(c,n):this.createIndex(c,a,n));return n}let o={jsonPath:i,name:r,node:t,parent:n};this.indexByObject.set(t,o),this.indexByPath.set(i,o);for(let[s,a]of Object.entries(t))typeof a=="object"&&a!==null&&this.createIndex(a,s,o);return o}staticExplicit(t){return this.explicit(this.ir,t)}explicit(t,r){let n=this.provenance(t)??nI(`Provenance not found for node: ${JSON.stringify(t).substring(0,100)}`),i={...n,jsonPath:`${n.jsonPath}+${r}`,name:r,node:n.node,parent:n,explicit:!0},o=this.explicitByObject.get(n.node);return o?o.add(i):this.explicitByObject.set(n.node,new Set([i])),this.explicitByPath.set(i.jsonPath,i),i}provenance(t){if(t!==void 0)return Da.string(t)?this.explicitByPath.get(t)??this.indexByPath.get(t):Da.Provenance(t)?this.explicitByPath.get(t.jsonPath)??this.indexByPath.get(t.jsonPath):this.indexByObject.get(t)}origin(t){let r=this.provenance(t);return r?.explicit?r:r?.node}irNode(t){return this.provenance(t)?.node}jsonPath(t){return this.provenance(t)?.jsonPath}getEnumValueName(t,r){let n=Da.IR.ExampleEnumType(r)?r.value:r,i=t.values.find(o=>this.nameEquals(o.name,n));return i?this.getPropertyNameFor(i):nI(`Unexpected - can't find enum value ${JSON.stringify(n)} in enum`)}getPropertyNameFor(t){let r=this.registry.getFieldNameByOrigin(t);if(r)return r;if(Da.Provenance(t))return t.name;if("name"in t){if(Da.IR.NameAndWireValue(t.name))return this.generation.case.pascalSafe(t.name);if(Da.IR.Name(t.name))return this.generation.case.pascalSafe(t.name);if(typeof t.name=="string")return this.generation.case.pascalSafe(t.name)}if("pascalCase"in t)return this.generation.case.pascalSafe(t);throw new Error(`Unknown property type: ${this.jsonPath(t)}`)}getClassNameFor(t){if(Da.Provenance(t))return t.name;if("name"in t){if(Da.IR.TypeDeclaration(t))return this.generation.case.pascalSafe(t.name.name);if(Da.IR.NameAndWireValue(t.name))return this.generation.case.pascalSafe(t.name);if(Da.IR.Name(t.name))return this.generation.case.pascalSafe(t.name);if(typeof t.name=="string")return this.generation.case.pascalSafe(t.name)}if("pascalCase"in t)return this.generation.case.pascalSafe(t);throw new Error(`Unknown property type: ${JSON.stringify(t)}`)}nameEquals(t,r){return this.generation.case.camelSafe(t)===this.generation.case.camelSafe(r)}dereferenceType(t){let r=Da.string(t)?t:Da.IR.NamedType(t)||Da.IR.DeclaredTypeName(t)?t.typeId:Da.IR.ExampleNamedType(t)?t.typeName.typeId:t.name.typeId,n=this.irNode(this.ir.types[r]);if(Da.IR.TypeDeclaration(n))return{typeId:r,typeDeclaration:n};nI(`dereferenceType: typeId ${r} not resolved.`)}};function _gi(...e){return e.filter(Boolean).join("/")}var XKt=class{intermediateRepresentation;apiName;customConfig;generatorConfig;support;constructor(t,r,n,i,o={makeRelativeFilePath:s=>s,makeAbsoluteFilePath:s=>s,getNamespaceForTypeId:s=>"",getDirectoryForTypeId:s=>"",getCoreAsIsFiles:()=>[],getCoreTestAsIsFiles:()=>[],getPublicCoreAsIsFiles:()=>[],getAsyncCoreAsIsFiles:()=>[],getChildNamespaceSegments:s=>[]}){this.intermediateRepresentation=t,this.apiName=r,this.customConfig=n,this.generatorConfig=i,this.support=o;let s=Da.IR.IntermediateRepresentation(t)?t.casingsConfig:void 0;this.case=new hKt({generationLanguage:"csharp",keywords:s?.keywords,smartCasing:s?.smartCasing??!0}),this.model=new Vgi(t,this),this.ir=Da.IR.IntermediateRepresentation(t)?t:{},this.dir=Da.DynamicIR.DynamicIntermediateRepresentation(t)?t:{}}ir;dir;csharp=new Lgi(this);registry=new SCt(this);model;case;extern=new Ugi(this);settings=vu({namespace:()=>this.customConfig.namespace??Ogi(Bgi(`${this.generatorConfig.organization}_${this.apiName}`)),readOnlyMemoryTypes:()=>this.customConfig["read-only-memory-types"]??[],simplifyObjectDictionaries:()=>this.customConfig["simplify-object-dictionaries"]??!1,useFullyQualifiedNamespaces:()=>this.customConfig["experimental-fully-qualified-namespaces"]??!1,useDotnetFormat:()=>this.customConfig["experimental-dotnet-format"]??!1,enableWebsockets:()=>this.customConfig["experimental-enable-websockets"]??!1,enableReadonlyConstants:()=>this.customConfig["experimental-readonly-constants"]??!1,generateLiterals:()=>this.customConfig["generate-literals"]??this.customConfig["experimental-readonly-constants"]??!1,enableExplicitNullableOptional:()=>this.customConfig["experimental-explicit-nullable-optional"]??!1,useDefaultRequestParameterValues:()=>this.customConfig["use-default-request-parameter-values"]??!1,redactResponseBodyOnError:()=>this.customConfig["redact-response-body-on-error"]??!1,enableInlineTypes:()=>this.customConfig["enable-inline-types"]??!1,temporaryWebsocketEnvironments:()=>this.customConfig["temporary-websocket-environments"]??{},baseApiExceptionClassName:()=>this.customConfig["base-api-exception-class-name"]??"",baseExceptionClassName:()=>this.customConfig["base-exception-class-name"]??"",shouldGeneratedDiscriminatedUnions:()=>this.customConfig["use-discriminated-unions"]??!0,shouldGenerateUndiscriminatedUnions:()=>this.customConfig["use-undiscriminated-unions"]??!1,dedupeUnionBaseProperties:()=>this.customConfig["dedupe-union-base-properties"]??!1,exportedClientClassName:()=>this.customConfig["exported-client-class-name"]??"",clientClassName:()=>this.customConfig["client-class-name"]??"",rootNamespaceForCoreClasses:()=>this.customConfig["root-namespace-for-core-classes"]??!0,packageId:()=>this.customConfig["package-id"]??"",isForwardCompatibleEnumsEnabled:()=>this.customConfig["enable-forward-compatible-enums"]??this.customConfig["experimental-enable-forward-compatible-enums"]??!0,websocketEnvironments:()=>this.customConfig["temporary-websocket-environments"]??{},customPagerName:()=>this.customConfig["custom-pager-name"]??"",usePageIndexSemantics:()=>this.customConfig["offset-semantics"]==="page-index",environmentClassName:()=>this.customConfig["environment-class-name"]??"",generateErrorTypes:()=>this.customConfig["generate-error-types"]??!0,shouldInlinePathParameters:()=>this.customConfig["inline-path-parameters"]??!0,includeExceptionHandler:()=>this.customConfig["include-exception-handler"]??!1,exceptionInterceptorClassName:()=>this.customConfig["exception-interceptor-class-name"]??"",shouldGenerateMockServerTests:()=>this.customConfig["generate-mock-server-tests"]??this.customConfig["enable-wire-tests"]??!0,rootClientAccess:()=>this.customConfig["root-client-class-access"]=="internal"?WC.Internal:WC.Public,extraDependencies:()=>this.customConfig["extra-dependencies"]??{},omitFernHeaders:()=>this.customConfig["omit-fern-headers"]??!1,includePlatformHeaders:()=>this.customConfig["include-platform-headers"]??!1,userAgentNameFromPackage:()=>this.customConfig["user-agent-name-from-package"]??!1,unifiedClientOptions:()=>this.customConfig["unified-client-options"]??!1,pascalCaseEnvironments:()=>this.customConfig["pascal-case-environments"]??!0,slnFormat:()=>this.customConfig["sln-format"]??"slnx",explicitNamespaces:()=>this.customConfig["explicit-namespaces"]===!0,maxRetries:()=>this.customConfig.maxRetries,retryStatusCodes:()=>this.customConfig.retryStatusCodes??"legacy",defaultTimeoutInMilliseconds:()=>{let t=this.customConfig["default-timeout-in-milliseconds"];if(t!=null)return t;let r=this.customConfig["default-timeout-in-seconds"];if(r!=null)return r==="infinity"?"infinity":r*1e3},outputPath:()=>{let t=this.customConfig["output-path"];return t==null?{library:"src",test:"src",solution:".",other:"."}:typeof t=="string"?{library:t,test:t,solution:".",other:"."}:{library:t.library??"src",test:t.test??"src",solution:t.solution??".",other:t.other??"."}}});constants={folders:vu({mockServerTests:()=>this.support.makeRelativeFilePath("Unit/MockServer"),types:()=>"Types",exceptions:()=>"Exceptions",src:()=>"src",protobuf:()=>"proto",serializationTests:()=>this.support.makeRelativeFilePath("Unit/Serialization"),project:()=>this.support.makeRelativeFilePath(_gi(this.constants.folders.sourceFiles,this.support.makeRelativeFilePath(this.names.files.project))),sourceFiles:()=>this.support.makeRelativeFilePath(this.constants.folders.src),coreFiles:()=>this.support.makeRelativeFilePath(_gi(this.constants.folders.project,this.support.makeRelativeFilePath(this.constants.defaults.core))),publicCoreFiles:()=>this.support.makeRelativeFilePath(_gi(this.constants.folders.project,this.support.makeRelativeFilePath(this.constants.defaults.core),this.support.makeRelativeFilePath(this.constants.defaults.publicCore))),testFiles:()=>this.support.makeRelativeFilePath(_gi(this.constants.folders.sourceFiles,this.support.makeRelativeFilePath(this.names.files.testProject)))}),formatting:vu({indent:()=>" "}),defaults:vu({core:()=>"Core",publicCore:()=>"Public",version:()=>"0.0.0"})};namespaces=vu({root:()=>this.settings.namespace,core:()=>`${this.namespaces.root}.Core`,qualifiedRoot:()=>this.qualifyNamespace(this.namespaces.root),qualifiedCore:()=>this.qualifyNamespace(this.namespaces.core),test:()=>this.registry.canonicalizeNamespace(`${this.namespaces.root}.Test`),testUtils:()=>`${this.namespaces.test}.Utils`,mockServerTest:()=>`${this.namespaces.test}.Unit.MockServer`,publicCore:()=>this.namespaces.root,webSocketsCore:()=>`${this.namespaces.core}.WebSockets`,publicCoreTest:()=>`${this.namespaces.root}.Test.PublicCore`,asIsTestUtils:()=>`${this.namespaces.root}.Test.Utils`,publicCoreClasses:()=>this.settings.rootNamespaceForCoreClasses?this.namespaces.root:this.namespaces.core,implicit:()=>new Set(["System","System.Collections.Generic","System.IO","System.Linq","System.Threading","System.Threading.Tasks","System.Net.Http"])});names={classes:vu({baseApiException:()=>this.settings.baseApiExceptionClassName||`${this.names.project.clientPrefix}ApiException`,baseException:()=>this.settings.baseExceptionClassName||`${this.names.project.clientPrefix}Exception`,rootClient:()=>this.settings.clientClassName||`${this.names.project.clientPrefix}Client`,rootClientForSnippets:()=>this.settings.exportedClientClassName||this.names.classes.rootClient,customPager:()=>this.settings.customPagerName||`${this.names.project.packageId.replace(/[^a-zA-Z0-9]/g,"")}Pager`,environment:()=>this.settings.environmentClassName||`${this.names.project.clientPrefix}Environment`,exceptionInterceptor:()=>this.settings.exceptionInterceptorClassName||`${this.names.project.packageId.replace(/[^a-zA-Z0-9]/g,"")}ExceptionInterceptor`}),project:vu({client:()=>Ogi(Bgi(`${this.generatorConfig.organization}_${this.generatorConfig.workspaceName}`)),clientPrefix:()=>this.settings.exportedClientClassName||this.settings.clientClassName||this.names.project.client,packageId:()=>this.settings.packageId||this.namespaces.root}),files:vu({project:()=>this.namespaces.root,testProject:()=>`${this.namespaces.root}.Test`}),methods:vu({mockOauth:()=>"MockOAuthEndpoint",mockInferredAuth:()=>"MockInferredAuthEndpoint",getAccessTokenAsync:()=>"GetAccessTokenAsync",getAuthHeadersAsync:()=>"GetAuthHeadersAsync"}),variables:vu({client:()=>"client",response:()=>"response",httpRequest:()=>"httpRequest",sendRequest:()=>"sendRequest",responseBody:()=>"responseBody",query:()=>"_query",headers:()=>"_headers"}),parameters:vu({cancellationToken:()=>"cancellationToken",requestOptions:()=>"options",idempotentOptions:()=>"options"})};Types=vu({Arbitrary:t=>new fd.ArbitraryType(t,this),HttpMethodExtensions:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("HttpMethodExtensions")}),FormRequest:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("FormRequest")}),Optional:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("Optional")}),ClientOptions:()=>this.csharp.classReference({origin:this.model.staticExplicit("ClientOptions"),namespace:this.namespaces.publicCoreClasses}),RawClient:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("RawClient")}),RequestOptions:()=>this.csharp.classReference({namespace:this.namespaces.publicCoreClasses,origin:this.model.staticExplicit("RequestOptions")}),RequestOptionsInterface:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("IRequestOptions")}),JsonRequest:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("JsonRequest")}),Version:()=>this.csharp.classReference({namespace:this.namespaces.publicCore,origin:this.model.staticExplicit("Version")}),ValueConvert:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("ValueConvert")}),FileParameter:()=>this.csharp.classReference({namespace:this.namespaces.publicCore,origin:this.model.staticExplicit("FileParameter"),multipartMethodName:"AddFileParameterPart",multipartMethodNameForCollection:"AddFileParameterParts",isReferenceType:!0}),DefaultHttpClientFactory:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("DefaultHttpClientFactory")}),Headers:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("Headers")}),HeaderValue:()=>this.csharp.classReference({namespace:this.namespaces.core,origin:this.model.staticExplicit("HeaderValue")}),RootClient:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.rootClient),namespace:this.namespaces.root}),RootClientForSnippets:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.rootClientForSnippets),namespace:this.namespaces.root}),BaseApiException:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.baseApiException),namespace:this.namespaces.publicCoreClasses}),BaseException:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.baseException),namespace:this.namespaces.publicCoreClasses}),ExceptionInterceptor:()=>this.csharp.classReference({origin:this.model.staticExplicit("IExceptionInterceptor"),namespace:this.namespaces.core}),ExceptionHandler:()=>this.csharp.classReference({origin:this.model.staticExplicit("ExceptionHandler"),namespace:this.namespaces.core}),CustomExceptionInterceptor:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.exceptionInterceptor),namespace:this.namespaces.core}),ProtoAnyMapper:()=>this.csharp.classReference({origin:this.model.staticExplicit("ProtoAnyMapper"),namespace:this.namespaces.core}),Constants:()=>this.csharp.classReference({origin:this.model.staticExplicit("Constants"),namespace:this.namespaces.core}),DateTimeSerializer:()=>this.csharp.classReference({origin:this.model.staticExplicit("DateTimeSerializer"),namespace:this.namespaces.core}),JsonUtils:()=>this.csharp.classReference({origin:this.model.staticExplicit("JsonUtils"),namespace:this.namespaces.core}),JsonAssert:()=>this.csharp.classReference({origin:this.model.staticExplicit("JsonAssert"),namespace:this.namespaces.testUtils}),CustomPagerFactory:()=>this.csharp.classReference({origin:this.model.staticExplicit(`${this.names.classes.customPager}Factory`),namespace:this.namespaces.core}),CustomPagerContext:()=>this.csharp.classReference({origin:this.model.staticExplicit(`${this.names.classes.customPager}Context`),namespace:this.namespaces.core}),Environments:()=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.environment),namespace:this.namespaces.publicCoreClasses}),TestClient:()=>this.csharp.classReference({origin:this.model.staticExplicit("TestClient"),namespace:this.namespaces.test}),BaseMockServerTest:()=>this.csharp.classReference({origin:this.model.staticExplicit("BaseMockServerTest"),namespace:this.namespaces.mockServerTest}),IdempotentRequestOptions:()=>this.csharp.classReference({origin:this.model.staticExplicit("IdempotentRequestOptions"),namespace:this.namespaces.publicCoreClasses}),IdempotentRequestOptionsInterface:()=>this.csharp.classReference({origin:this.model.staticExplicit("IIdempotentRequestOptions"),namespace:this.namespaces.core}),IStringEnum:()=>this.csharp.classReference({origin:this.model.staticExplicit("IStringEnum"),namespace:this.namespaces.core}),WebSocketClient:()=>this.csharp.classReference({origin:this.model.staticExplicit("WebSocketClient"),namespace:this.namespaces.webSocketsCore}),QueryBuilder:()=>this.csharp.classReference({origin:this.model.staticExplicit("Query"),namespace:this.namespaces.webSocketsCore}),QueryStringBuilder:()=>this.csharp.classReference({origin:this.model.staticExplicit("QueryStringBuilder"),namespace:this.namespaces.core}),QueryStringBuilderBuilder:()=>this.csharp.classReference({origin:this.model.staticExplicit("QueryStringBuilder.Builder"),namespace:this.namespaces.core}),OAuthTokenProvider:()=>this.csharp.classReference({origin:this.model.staticExplicit("OAuthTokenProvider"),namespace:this.namespaces.core}),InferredAuthTokenProvider:()=>this.csharp.classReference({origin:this.model.staticExplicit("InferredAuthTokenProvider"),namespace:this.namespaces.core}),ProtoConverter:()=>this.csharp.classReference({origin:this.model.staticExplicit("ProtoConverter"),namespace:this.namespaces.core}),RawGrpcClient:()=>this.csharp.classReference({origin:this.model.staticExplicit("RawGrpcClient"),namespace:this.namespaces.core}),Extensions:()=>this.csharp.classReference({origin:this.model.staticExplicit("Extensions"),namespace:this.namespaces.core}),GrpcRequestOptions:()=>this.csharp.classReference({origin:this.model.staticExplicit("GrpcRequestOptions"),namespace:this.namespaces.root}),GrpcChannelOptions:()=>this.csharp.classReference({origin:this.model.staticExplicit("GrpcChannelOptions"),namespace:"Grpc.Net.Client"}),StringEnum:t=>this.csharp.classReference({origin:this.model.staticExplicit("StringEnum"),namespace:this.namespaces.core,generics:t?[t]:void 0}),WebSocketEvent:t=>this.csharp.classReference({origin:this.model.staticExplicit("Event"),namespace:this.namespaces.webSocketsCore,generics:[t]}),ConnectionStatus:()=>this.csharp.classReference({origin:this.model.staticExplicit("ConnectionStatus"),namespace:this.namespaces.webSocketsCore}),WebSocketConnected:()=>this.csharp.classReference({origin:this.model.staticExplicit("Connected"),namespace:this.namespaces.webSocketsCore}),WebSocketClosed:()=>this.csharp.classReference({origin:this.model.staticExplicit("Closed"),namespace:this.namespaces.webSocketsCore}),ReconnectionInfo:()=>this.csharp.classReference({origin:this.model.staticExplicit("ReconnectionInfo"),namespace:this.namespaces.webSocketsCore}),CustomPagerClass:t=>this.csharp.classReference({origin:this.model.staticExplicit(this.names.classes.customPager),namespace:this.namespaces.core,generics:[t]}),Pager:t=>this.csharp.classReference({origin:this.model.staticExplicit("Pager"),namespace:this.namespaces.core,generics:[t]}),OffsetPager:({requestType:t,requestOptionsType:r,responseType:n,offsetType:i,stepType:o,itemType:s})=>this.csharp.classReference({origin:this.model.staticExplicit("OffsetPager"),namespace:this.namespaces.core,generics:[t,r,n,i,o,s]}),CursorPager:({requestType:t,requestOptionsType:r,responseType:n,cursorType:i,itemType:o})=>this.csharp.classReference({origin:this.model.staticExplicit("CursorPager"),namespace:this.namespaces.core,generics:[t,r,n,i,o]}),CollectionItemSerializer:(t,r)=>this.csharp.classReference({origin:this.model.staticExplicit("CollectionItemSerializer"),namespace:this.namespaces.core,generics:[t,r]}),OneOfSerializer:t=>this.csharp.classReference({origin:this.model.staticExplicit("OneOfSerializer"),namespace:this.namespaces.core,generics:[t]}),AdditionalProperties:t=>this.csharp.classReference({origin:this.model.staticExplicit("AdditionalProperties"),namespace:this.namespaces.publicCore,generics:t?[t]:void 0}),ReadOnlyAdditionalProperties:t=>this.csharp.classReference({origin:this.model.staticExplicit("ReadOnlyAdditionalProperties"),namespace:this.namespaces.publicCore,generics:t?[t]:void 0})});Primitive=vu({string:()=>new fd.String(this),boolean:()=>new fd.Boolean(this),integer:()=>new fd.Integer(this),long:()=>new fd.Long(this),uint:()=>new fd.Uint(this),ulong:()=>new fd.ULong(this),float:()=>new fd.Float(this),double:()=>new fd.Double(this),object:()=>new fd.Object(this)});Value=vu({binary:()=>new H3.Binary(this),dateOnly:()=>new H3.DateOnly(this),dateTime:()=>new H3.DateTime(this),uuid:()=>new H3.Uuid(this),stringEnum:t=>new H3.StringEnum(t,this)});Collection=vu({array:t=>new JT.Array(t,this),listType:t=>new JT.ListType(t,this),list:t=>new JT.List(t,this),set:t=>new JT.Set(t,this),map:(t,r,n)=>new JT.Map(t,r,this,n),idictionary:(t,r,n)=>new JT.IDictionary(t,r,this,n),keyValuePair:(t,r)=>new JT.KeyValuePair(t,r,this)});format=vu({private:t=>`_${Pgi.camelCase(t)}`});initialize(){return this.initializers.implicitNamespaces}initializers=vu({implicitNamespaces:()=>{for(let t of this.namespaces.implicit)this.registry.addImplicitNamespace(t);return!0}});get System(){return this.extern.System}get NUnit(){return this.extern.NUnit}get OneOf(){return this.extern.OneOf}get Google(){return this.extern.Google}get Grpc(){return this.extern.Grpc}get WireMock(){return this.extern.WireMock}qualifyNamespace(t){let r=t.split(".")[0];return r&&this.registry.hasTypeNamespaceConflict(r)?`global::${t}`:t}};var MK=class{generation;constructor(t){this.generation=t}get csharp(){return this.generation.csharp}get case(){return this.generation.case}get settings(){return this.generation.settings}get constants(){return this.generation.constants}get namespaces(){return this.generation.namespaces}get names(){return this.generation.names}get model(){return this.generation.model}get format(){return this.generation.format}get registry(){return this.generation.registry}get Types(){return this.generation.Types}get System(){return this.generation.extern.System}get NUnit(){return this.generation.extern.NUnit}get OneOf(){return this.generation.extern.OneOf}get Google(){return this.generation.extern.Google}get Grpc(){return this.generation.extern.Grpc}get WireMock(){return this.generation.extern.WireMock}get Primitive(){return this.generation.Primitive}get Value(){return this.generation.Value}get Collection(){return this.generation.Collection}};Dt();var qgi=class extends MK{context;constructor({context:t}){super(t.generation),this.context=t}convert(t){if(t.value===null)return this.context.isNullable(t.typeReference)?this.csharp.Literal.null():(this.context.errors.add({severity:Or.Critical,message:"Expected non-null value, but got null"}),this.csharp.Literal.nop());if(t.value===void 0&&!t.fallbackToDefault)return this.csharp.Literal.nop();switch(t.typeReference.type){case"list":return this.convertList({list:t.typeReference.value,value:t.value,fallbackToDefault:t.fallbackToDefault});case"literal":return this.convertLiteral({literal:t.typeReference.value,fallbackToDefault:t.forceLiteral?t.fallbackToDefault:void 0,value:t.value,forceLiteral:t.forceLiteral});case"map":return this.convertMap({map:t.typeReference,value:t.value,fallbackToDefault:t.fallbackToDefault});case"named":{let r=this.context.resolveNamedType({typeId:t.typeReference.value});return r==null?this.csharp.Literal.nop():this.convertNamed({named:r,value:t.value,as:t.as,fallbackToDefault:t.fallbackToDefault})}case"nullable":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as,forceLiteral:t.forceLiteral});case"optional":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as,forceLiteral:t.forceLiteral});case"primitive":return this.convertPrimitive({primitive:t.typeReference.value,value:t.value,as:t.as,fallbackToDefault:t.fallbackToDefault});case"set":return this.convertSet({set:t.typeReference.value,value:t.value,fallbackToDefault:t.fallbackToDefault});case"unknown":return this.convertUnknown({value:t.value,fallbackToDefault:t.fallbackToDefault});default:be(t.typeReference)}}convertList({list:t,value:r,fallbackToDefault:n}){return Array.isArray(r)?this.csharp.Literal.list({valueType:this.context.dynamicTypeMapper.convert({typeReference:t,unboxOptionals:!0}),values:r.map((i,o)=>{this.context.errors.scope({index:o});try{return this.convert({typeReference:t,value:i})}finally{this.context.errors.unscope()}})}):(this.context.errors.add({severity:Or.Critical,message:`Expected array but got: ${typeof r}`}),this.csharp.Literal.nop())}convertLiteral({literal:t,value:r,fallbackToDefault:n,forceLiteral:i}){if(this.settings.generateLiterals&&!i)return this.csharp.Literal.nop();switch(t.type){case"boolean":{let o=this.context.getValueAsBoolean({value:r});return o==null?this.csharp.Literal.nop():this.csharp.Literal.boolean(o)}case"string":{let o=this.context.getValueAsString({value:r});return o==null?n?this.Primitive.string.getDeterminsticDefault(n):this.csharp.Literal.nop():this.csharp.Literal.string(o)}default:be(t)}}convertSet({set:t,value:r,fallbackToDefault:n}){return Array.isArray(r)?this.csharp.Literal.set({valueType:this.context.dynamicTypeMapper.convert({typeReference:t,unboxOptionals:!0}),values:r.map((i,o)=>{this.context.errors.scope({index:o});try{return this.convert({typeReference:t,value:i})}finally{this.context.errors.unscope()}})}):(this.context.errors.add({severity:Or.Critical,message:`Expected array but got: ${typeof r}`}),this.csharp.Literal.nop())}convertMap({map:t,value:r,fallbackToDefault:n}){return typeof r!="object"||r==null?(this.context.errors.add({severity:Or.Critical,message:`Expected object but got: ${r==null?"null":typeof r}`}),this.csharp.Literal.nop()):this.csharp.Literal.dictionary({keyType:this.context.dynamicTypeMapper.convert({typeReference:t.key}),valueType:t.value.type==="unknown"?this.context.dynamicTypeMapper.convert({typeReference:t.value}).asOptional():this.context.dynamicTypeMapper.convert({typeReference:t.value}),entries:Object.entries(r).map(([i,o])=>{this.context.errors.scope(i);try{return{key:this.convert({typeReference:t.key,value:i,as:"key"}),value:this.convert({typeReference:t.value,value:o})}}finally{this.context.errors.unscope()}})})}convertNamed({named:t,value:r,as:n,fallbackToDefault:i}){switch(t.type){case"alias":return this.settings.generateLiterals&&t.typeReference.type==="literal"?this.csharp.Literal.reference(this.csharp.instantiateClass({classReference:this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}),arguments_:[]})):this.convert({typeReference:t.typeReference,value:r,as:n,fallbackToDefault:i});case"discriminatedUnion":return this.settings.shouldGeneratedDiscriminatedUnions?this.convertDiscriminatedUnion({discriminatedUnion:t,value:r,fallbackToDefault:i}):this.convertUnknown({value:r,fallbackToDefault:i});case"enum":return this.getEnumValue(t,r);case"object":return this.convertObject({object_:t,value:r,fallbackToDefault:i});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r,fallbackToDefault:i});default:be(t)}}convertDiscriminatedUnion({discriminatedUnion:t,value:r,fallbackToDefault:n}){let i=this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}),o=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:t,value:r});if(o==null)return this.csharp.Literal.nop();let s=o.singleDiscriminatedUnionType,a=this.getBaseProperties({discriminatedUnionTypeInstance:o,singleDiscriminatedUnionType:s});switch(s.type){case"samePropertiesAsObject":{let c=this.context.resolveNamedType({typeId:s.typeId});return c==null?this.csharp.Literal.nop():this.instantiateUnionWithBaseProperties({classReference:i,baseProperties:a,arguments_:[this.convertNamed({named:c,value:o.value})]})}case"singleProperty":{if(this.context.getRecord(o.value)==null)return this.csharp.Literal.nop();try{let u=["Value","Type"].includes(s.discriminantValue.name.pascalCase.safeName)?`${s.discriminantValue.name.pascalCase.safeName}Inner`:s.discriminantValue.name.pascalCase.safeName;return this.context.errors.scope(s.discriminantValue.wireValue),this.instantiateUnionWithBaseProperties({classReference:i,baseProperties:a,arguments_:[this.csharp.instantiateClass({classReference:this.csharp.classReference({name:u,enclosingType:i}),arguments_:[this.convert({typeReference:s.typeReference,value:s.discriminantValue.wireValue})]})]})}finally{this.context.errors.unscope()}}case"noProperties":return this.instantiateUnionWithBaseProperties({classReference:i,baseProperties:a,arguments_:[this.csharp.instantiateClass({classReference:this.csharp.classReference({origin:o.discriminantValue,enclosingType:i}),arguments_:[]})]});default:be(s)}}getBaseProperties({discriminatedUnionTypeInstance:t,singleDiscriminatedUnionType:r}){return this.context.associateByWireValue({parameters:r.properties??[],values:this.context.getRecord(t.value)??{},ignoreMissingParameters:!0}).map(i=>{this.context.errors.scope(i.name.wireValue);try{return{name:this.context.getPropertyName(i.name.name),assignment:this.convert(i)}}finally{this.context.errors.unscope()}})}instantiateUnionWithBaseProperties({classReference:t,arguments_:r,baseProperties:n}){let i=this.csharp.instantiateClass({classReference:t,arguments_:r,multiline:!0});return n.length===0?this.csharp.Literal.reference(i):this.csharp.Literal.reference(this.csharp.codeblock(o=>{o.write(i," "),o.pushScope();for(let s of n)o.write(s.name," = ",s.assignment,",");o.popScope(!1)}))}getEnumValue(t,r){if(typeof r!="string")return this.context.errors.add({severity:Or.Critical,message:`Expected enum value string, got: ${typeof r}`}),this.csharp.Literal.nop();let n=t.values.find(s=>s.wireValue===r);if(n==null)return this.context.errors.add({severity:Or.Critical,message:`An enum value named "${r}" does not exist in this context`}),this.csharp.Literal.nop();let i=this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}),o=i.registerField(this.model.getPropertyNameFor(n),n);return this.csharp.Literal.reference(this.csharp.enumInstantiation({reference:i,value:o}))}convertObject({object_:t,value:r,fallbackToDefault:n}){let i=this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}),o=this.getOmittedBasePropertyWireValues(t),s=o.size===0?t.properties:t.properties.filter(f=>!o.has(f.name.wireValue)),a=new Map;for(let f of s){let m=this.context.resolvePropertyName(i,f.name.name);a.set(f.name.wireValue,m)}let c=this.context.getRecord(r)??{},u=o.size===0?c:Object.fromEntries(Object.entries(c).filter(([f])=>!o.has(f))),p=this.context.associateByWireValue({parameters:s,values:u}).map(f=>{this.context.errors.scope(f.name.wireValue);try{return{name:a.get(f.name.wireValue)??this.context.getClassName(f.name.name),value:this.convert(f)}}finally{this.context.errors.unscope()}}),d=new Set(Object.keys(u));for(let f of s){let m=a.get(f.name.wireValue)??this.context.getClassName(f.name.name);if(d.has(f.name.wireValue)){if(this.isRequiredProperty(f.typeReference)){let g=p.find(A=>A.name===m);if(g!=null&&Da.Literal.nop(g.value)){let A=this.getDefaultLiteralForType(f.typeReference);A!=null&&(g.value=A)}}continue}if(this.isRequiredProperty(f.typeReference)){let g=this.getDefaultLiteralForType(f.typeReference);g!=null&&p.push({name:m,value:g})}}return this.csharp.Literal.class_({reference:i,fields:p})}getOmittedBasePropertyWireValues(t){return this.settings.dedupeUnionBaseProperties?new Set((t.deferredUnionBaseProperties??[]).map(r=>r.wireValue)):new Set}isRequiredProperty(t){return!(this.context.isOptional(t)||this.context.isNullable(t)||t.type==="list"||t.type==="set"||t.type==="map")}getDefaultLiteralForType(t,r){switch(t.type){case"primitive":return this.getDefaultLiteralForPrimitive(t.value);case"literal":return this.convertLiteral({literal:t.value,value:t.value.value});case"named":{let n=this.context.resolveNamedType({typeId:t.value});if(n==null)return;if(n.type==="alias")return this.getDefaultLiteralForType(n.typeReference,r);if(n.type==="enum"&&n.values.length>0){let i=n.values[0];if(i!=null)return this.getEnumValue(n,i.wireValue)}return n.type==="undiscriminatedUnion"?this.getDefaultLiteralForUndiscriminatedUnion(n,r):n.type==="object"?this.getDefaultLiteralForObject(n,t.value,r):void 0}default:return}}getDefaultLiteralForObject(t,r,n){let i=n??new Set;if(i.has(r))return;i.add(r);let o=this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}),s=[];for(let a of t.properties)if(this.isRequiredProperty(a.typeReference)){let c=this.getDefaultLiteralForType(a.typeReference,i);c!=null&&s.push({name:this.context.resolvePropertyName(o,a.name.name),value:c})}return i.delete(r),this.csharp.Literal.class_({reference:o,fields:s})}getDefaultLiteralForUndiscriminatedUnion(t,r){for(let n of t.types){let i=this.getDefaultLiteralForType(n,r);if(i!=null)return i}}getDefaultLiteralForPrimitive(t){switch(t){case"INTEGER":return this.csharp.Literal.integer(0);case"LONG":return this.csharp.Literal.long(0);case"UINT":return this.csharp.Literal.uint(0);case"UINT_64":return this.csharp.Literal.ulong(0);case"FLOAT":return this.csharp.Literal.float(0);case"DOUBLE":return this.csharp.Literal.double(0);case"BOOLEAN":return this.csharp.Literal.boolean(!1);case"STRING":case"UUID":case"BASE_64":case"BIG_INTEGER":return this.csharp.Literal.string("");case"DATE":return this.csharp.Literal.date("0001-01-01");case"DATE_TIME":case"DATE_TIME_RFC_2822":return this.csharp.Literal.datetime("0001-01-01T00:00:00.000Z");default:be(t)}}convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r,fallbackToDefault:n}){let i=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r});return i==null?this.csharp.Literal.nop():i.typeLiteral}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r}){for(let n of t.types){let i=this.context.errors.size();try{let o=this.convert({typeReference:n,value:r});if(Da.Literal.nop(o)||this.context.errors.size()>i){this.context.errors.truncate(i);continue}return{valueTypeReference:n,typeLiteral:o}}catch{this.context.errors.truncate(i);continue}}this.context.errors.add({severity:Or.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof r}" value`})}convertUnknown({value:t,fallbackToDefault:r}){return this.csharp.Literal.unknown(t)}convertPrimitive({primitive:t,value:r,as:n,fallbackToDefault:i}){switch(t){case"INTEGER":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.integer.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.integer(o)}case"LONG":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.long.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.long(o)}case"UINT":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.uint.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.uint(o)}case"UINT_64":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.ulong.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.ulong(o)}case"FLOAT":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.float.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.float(o)}case"DOUBLE":{let o=this.getValueAsNumber({value:r,as:n});return o==null?i?this.Primitive.double.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.double(o)}case"BOOLEAN":{let o=this.getValueAsBoolean({value:r,as:n});return o==null?i?this.Primitive.boolean.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.boolean(o)}case"STRING":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Primitive.string.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.string(o)}case"DATE":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Value.dateOnly.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.date(o)}case"DATE_TIME":case"DATE_TIME_RFC_2822":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Value.dateTime.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.datetime(o)}case"UUID":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Primitive.string.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.string(o)}case"BASE_64":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Primitive.string.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.string(o)}case"BIG_INTEGER":{let o=this.context.getValueAsString({value:r});return o==null?i?this.Primitive.string.getDeterminsticDefault(i):this.csharp.Literal.nop():this.csharp.Literal.string(o)}default:be(t)}}getValueAsNumber({value:t,as:r}){let n=r==="key"&&typeof t=="string"?Number(t):t;return this.context.getValueAsNumber({value:n})}getValueAsBoolean({value:t,as:r}){let n=r==="key"?typeof t=="string"?t==="true":t==="false"?!1:t:t;return this.context.getValueAsBoolean({value:n})}};Dt();var Ggi=class extends MK{context;constructor({context:t}){super(t.generation),this.context=t}convert(t){switch(t.typeReference.type){case"list":return this.Collection.list(this.convert({typeReference:t.typeReference.value,unboxOptionals:!0}));case"literal":return this.convertLiteral({literal:t.typeReference.value});case"map":return this.Collection.map(this.convert({typeReference:t.typeReference.key}),this.convert({typeReference:t.typeReference.value}));case"named":{let r=this.context.resolveNamedType({typeId:t.typeReference.value});return r==null?this.convertUnknown():this.convertNamed({named:r,typeId:t.typeReference.value})}case"optional":case"nullable":{let r=this.convert({typeReference:t.typeReference.value});return t.unboxOptionals?r.asNonOptional():r.asOptional()}case"primitive":return this.convertPrimitive({primitive:t.typeReference.value});case"set":return this.Collection.set(this.convert({typeReference:t.typeReference.value,unboxOptionals:!0}));case"unknown":return this.convertUnknown();default:be(t.typeReference)}}convertToClassReference(t,r){return this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)})}convertNamed({named:t,typeId:r}){switch(t.type){case"alias":return this.settings.generateLiterals&&t.typeReference.type==="literal"?this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)}):this.convert({typeReference:t.typeReference});case"enum":case"object":return this.convertToClassReference(t,r);case"discriminatedUnion":return this.settings.shouldGeneratedDiscriminatedUnions?this.convertToClassReference(t,r):this.Primitive.object;case"undiscriminatedUnion":return this.settings.shouldGenerateUndiscriminatedUnions?this.convertToClassReference(t,r):this.OneOf.OneOf(t.types.map(n=>this.convert({typeReference:n})));default:be(t)}}convertLiteral({literal:t}){switch(t.type){case"boolean":return this.Primitive.boolean;case"string":return this.Primitive.string}}convertUnknown(){return this.Primitive.object}convertPrimitive({primitive:t}){switch(t){case"INTEGER":return this.Primitive.integer;case"UINT":return this.Primitive.uint;case"LONG":return this.Primitive.long;case"UINT_64":return this.Primitive.ulong;case"FLOAT":return this.Primitive.float;case"DOUBLE":return this.Primitive.double;case"BOOLEAN":return this.Primitive.boolean;case"STRING":return this.Primitive.string;case"DATE":return this.Value.dateOnly;case"DATE_TIME":case"DATE_TIME_RFC_2822":return this.Value.dateTime;case"UUID":return this.Primitive.string;case"BASE_64":return this.Primitive.string;case"BIG_INTEGER":return this.Primitive.string;default:be(t)}}};Dt();var Wgi=class extends MK{context;constructor({context:t}){super(t.generation),this.context=t}getFilePropertyInfo({body:t,value:r}){let n={fileFields:[],bodyPropertyFields:[]},i=this.context.getRecord(r)??{};for(let o of t.properties)switch(o.type){case"file":Da.Record.missingKey(i,o.wireValue)&&(i[o.wireValue]="[bytes]"),n.fileFields.push({name:this.context.getPropertyName(o.name),value:this.getSingleFileProperty({property:o,record:i})});break;case"fileArray":Da.Record.missingKey(i,o.wireValue)&&(i[o.wireValue]=["[bytes]"]),n.fileFields.push({name:this.context.getPropertyName(o.name),value:this.getArrayFileProperty({property:o,record:i})});break;case"bodyProperty":if(Da.Record.missingKey(i,o.name.wireValue))switch(o.typeReference.type){case"optional":break;case"primitive":{switch(o.typeReference.value.toLowerCase()){case"integer":{i[o.name.wireValue]=123;break}case"string":{i[o.name.wireValue]="[string]";break}case"boolean":{i[o.name.wireValue]=!0;break}case"double":{i[o.name.wireValue]=123.456;break}case"float":{i[o.name.wireValue]=123.456;break}case"long":{i[o.name.wireValue]=123456789;break}case"uint":{i[o.name.wireValue]=123;break}case"uint64":{i[o.name.wireValue]=12345;break}case"date":{i[o.name.wireValue]=new Date(2021,1,1);break}case"datetime":{i[o.name.wireValue]=new Date(2021,1,1,12,0,0);break}case"uuid":{i[o.name.wireValue]="123e4567-e89b-12d3-a456-426614174000";break}case"base64":{i[o.name.wireValue]="SGVsbG8gd29ybGQh";break}case"biginteger":{i[o.name.wireValue]="12345678901234567890";break}}break}default:break}n.bodyPropertyFields.push({name:this.context.getPropertyName(o.name.name),value:this.getBodyProperty({property:o,record:i})});break;default:be(o)}return n}getSingleFileProperty({property:t,record:r}){let n=this.context.getSingleFileValue({property:t,record:r});return n==null?this.csharp.Literal.nop():this.context.getFileParameterForString(n)}getArrayFileProperty({property:t,record:r}){let n=this.context.getFileArrayValues({property:t,record:r});return n==null?this.csharp.Literal.nop():this.csharp.Literal.list({valueType:this.Types.FileParameter,values:n.map(i=>this.context.getFileParameterForString(i))})}getBodyProperty({property:t,record:r}){let n=r[t.name.wireValue];return n==null?this.csharp.Literal.nop():this.context.dynamicLiteralMapper.convert({typeReference:t.typeReference,value:n})}};var Hgi=class e extends fx{ir;dynamicTypeMapper;dynamicLiteralMapper;filePropertyMapper;generation;get namespaces(){return this.generation.namespaces}get registry(){return this.generation.registry}get settings(){return this.generation.settings}get constants(){return this.generation.constants}get names(){return this.generation.names}get model(){return this.generation.model}get format(){return this.generation.format}get csharp(){return this.generation.csharp}get Types(){return this.generation.Types}get System(){return this.generation.extern.System}get NUnit(){return this.generation.extern.NUnit}get OneOf(){return this.generation.extern.OneOf}get Google(){return this.generation.extern.Google}get WireMock(){return this.generation.extern.WireMock}get Primitive(){return this.generation.Primitive}get Value(){return this.generation.Value}get Collection(){return this.generation.Collection}constructor({ir:t,config:r,options:n,generation:i}){super({ir:t,config:r,options:n}),this.ir=t,this.generation=i??new XKt(t,r.workspaceName,r.customConfig!=null?r.customConfig:{},r),this.dynamicTypeMapper=new Ggi({context:this}),this.dynamicLiteralMapper=new qgi({context:this}),this.filePropertyMapper=new Wgi({context:this})}clone(){return new e({ir:this.ir,config:this.config,options:this.options,generation:this.generation})}getFileParameterForString(t){return this.csharp.Literal.reference(this.csharp.instantiateClass({classReference:this.Types.FileParameter,arguments_:[],properties:[{name:"Stream",value:this.getMemoryStreamForString(t)}],multiline:!0}))}getMemoryStreamForString(t){return this.System.IO.MemoryStream.new({arguments_:[this.csharp.invokeMethod({on:this.System.Text.Encoding_UTF8,method:"GetBytes",arguments_:[this.csharp.Literal.string(t)]})]})}getClassName(t){return t.pascalCase.safeName}getParameterName(t){return t.camelCase.safeName}getPropertyName(t){return t.pascalCase.safeName}resolvePropertyName(t,r){let n=r.pascalCase.safeName,i=t.scope.getRedirectedFieldName(n);return i||(t.scope.isField(n)?n:t.registerField(n))}getMethodName(t){return`${t.pascalCase.safeName}Async`}getNamespace(t,r){let n=this.getNamespaceSegments(t);return n=r!=null?[...n,r]:n,[this.namespaces.root,...n].join(".")}getEnvironmentTypeReferenceFromID(t){let r=this.resolveEnvironmentName(t);if(r!=null)return this.getEnvironmentClassReferenceForEnumName(r)}getEnvironmentClassReferenceForEnumName(t){return this.csharp.classReference({name:`${this.generation.Types.Environments.name}.${this.getClassName(t)}`,namespace:this.namespaces.root})}getNamespaceSegments(t){return(this.settings.explicitNamespaces?t.allParts:t.packagePath).map(n=>n.pascalCase.safeName)}precalculate(t){this.generation.initialize(),this.System.Collections.Generic.KeyValuePair(),this.System.Collections.Generic.IEnumerable(),this.System.Collections.Generic.IAsyncEnumerable(),this.System.Collections.Generic.HashSet(),this.System.Collections.Generic.List(),this.System.Collections.Generic.Dictionary(),this.System.Threading.Tasks.Task(),Object.entries(this.ir.types).sort((r,n)=>r[0].length-n[0].length).forEach(([r,n])=>{this.dynamicTypeMapper.convertToClassReference(n,r)});for(let[r,n]of t.entries())if(this.csharp.classReference({origin:this.model.staticExplicit(`Example${r}`),namespace:"Usage"}),n.endpoint){let i=this.resolveEndpointLocation(n.endpoint);for(let o of i)switch(o.request.type){case"inlined":this.csharp.classReference({origin:o.request.declaration.name,namespace:this.getNamespace(o.request.declaration.fernFilepath)});break;case"body":break}}this.generation.Types.ClientOptions,this.generation.Types.RootClientForSnippets,this.csharp.freezeClassReferences()}};Dt();_i();var kZl="request",Kgi=class extends MK{context;constructor({context:t}){super(t.generation),this.context=t}async generateSnippet({endpoint:t,request:r,options:n}){return this.buildCodeBlock({endpoint:t,snippet:r,options:n}).toString({namespace:"Examples",generation:this.generation,allNamespaceSegments:new Set,allTypeClassReferences:new Map,skipGlobalQualifier:!0})}generateSnippetSync({endpoint:t,request:r,options:n}){return this.buildCodeBlock({endpoint:t,snippet:r,options:n}).toString({namespace:"Examples",generation:this.generation,allNamespaceSegments:new Set,allTypeClassReferences:new Map,skipGlobalQualifier:!0})}async generateSnippetAst({endpoint:t,request:r,options:n}){throw new Error("Unsupported")}buildCodeBlock({endpoint:t,snippet:r,options:n}){if(t.examples&&Da.DynamicIR.EndpointExample(r)&&!t.examples.find(s=>s.id===r.id))throw new Error("Endpoint does not have an example that matches the snippet");let i=this.csharp.codeblock(s=>{s.writeNodeStatement(this.constructClient({endpoint:t,snippet:r})),s.newLine(),s.writeNodeStatement(this.callMethod({endpoint:t,snippet:r}))}),o=this.getStyle(n);switch(o){case oS.Concise:return i;case oS.Full:return this.buildFullCodeBlock({body:i,options:n});default:be(o)}}buildFullCodeBlock({body:t,options:r}){let n=this.getConfig(r),i=n.fullStyleMethodName??n.fullStyleClassName??"Example",o=this.csharp.class_({name:"Examples",namespace:"Examples",partial:!0,skipNamespaceDeclaration:!0,access:wCt.Access.Public});return o.addNamespaceReference(this.Types.RootClientForSnippets.namespace),o.addMethod({name:i,access:wCt.Access.Public,isAsync:!0,parameters:[],body:t}),o}constructClient({endpoint:t,snippet:r}){return this.csharp.codeblock(n=>{n.write("var client = "),n.writeNode(this.getRootClientConstructorInvocation(this.getConstructorArgs({endpoint:t,snippet:r})))})}callMethod({endpoint:t,snippet:r}){let n=t.response?.type==="streaming"||t.response?.type==="streamParameter",i=this.csharp.invokeMethod({on:this.csharp.codeblock("client"),method:this.getMethod({endpoint:t}),arguments_:this.getMethodArgs({endpoint:t,snippet:r}),async:!0,configureAwait:!0,multiline:!0,isAsyncEnumerable:n});return n?this.csharp.codeblock(o=>{o.write("await foreach (var item in "),o.writeNode(i),o.writeLine(")"),o.pushScope(),o.writeLine("/* consume each item */"),o.popScope()}):i}getConstructorArgs({endpoint:t,snippet:r}){let n=[];t.auth!=null&&(r.auth!=null?n.push(...this.getConstructorAuthArgs({auth:t.auth,values:r.auth})):this.context.errors.add({severity:Or.Warning,message:`Auth with ${t.auth.type} configuration is required for this endpoint`}));let i=[],o=this.getConstructorBaseUrlArgs({baseUrl:r.baseURL,environment:r.environment});o.length>0&&i.push(...o),this.context.errors.scope(Fo.Headers);let s=[];if(this.context.ir.headers!=null&&r.headers!=null&&s.push(...this.getConstructorHeaderArgs({headers:this.context.ir.headers,values:r.headers})),this.context.errors.unscope(),this.settings.unifiedClientOptions){let a=[...n.map(c=>({name:ku(c.name),assignment:c.assignment})),...s.map(c=>({name:ku(c.name),assignment:c.assignment})),...i.map(c=>({name:c.name,assignment:c.assignment}))];return a.length===0?[]:[{name:"clientOptions",assignment:this.csharp.instantiateClass({classReference:this.Types.ClientOptions,arguments_:a,multiline:!0})}]}return i.length===0?[...n,...s]:[...n,...s,{name:"clientOptions",assignment:this.csharp.instantiateClass({classReference:this.Types.ClientOptions,arguments_:i.map(a=>({name:a.name,assignment:a.assignment})),multiline:!0})}]}getConstructorBaseUrlArgs({baseUrl:t,environment:r}){let n=this.getBaseUrlArg({baseUrl:t,environment:r});return Da.Literal.nop(n)?[]:[{name:this.getBaseUrlOptionName(),assignment:n}]}getBaseUrlArg({baseUrl:t,environment:r}){if(t!=null&&r!=null)return this.context.errors.add({severity:Or.Critical,message:"Cannot specify both baseUrl and environment options"}),this.csharp.Literal.nop();if(t!=null)return this.context.ir.environments?.environments.type==="multipleBaseUrls"?(this.context.errors.add({severity:Or.Critical,message:"The C# SDK doesn't support a baseUrl when multiple URL environments are configured"}),this.csharp.Literal.nop()):this.csharp.Literal.string(t);if(r!=null){if(this.context.isSingleEnvironmentID(r)){let n=this.context.getEnvironmentTypeReferenceFromID(r);return n==null?(this.context.errors.add({severity:Or.Warning,message:`Environment ${JSON.stringify(r)} was not found`}),this.csharp.Literal.nop()):this.csharp.Literal.reference(n)}if(this.context.isMultiEnvironmentValues(r))return this.context.validateMultiEnvironmentUrlValues(r)?this.csharp.Literal.reference(this.csharp.instantiateClass({classReference:this.Types.Environments,arguments_:Object.entries(r).map(([n,i])=>({name:ku($n(n)),assignment:this.context.dynamicLiteralMapper.convert({typeReference:{type:"primitive",value:"STRING"},value:i})})),multiline:!0})):this.csharp.Literal.nop()}return this.csharp.Literal.nop()}getConstructorAuthArgs({auth:t,values:r}){if(r.type!==t.type)return this.addError(this.context.newAuthMismatchError({auth:t,values:r}).message),[];switch(t.type){case"basic":return r.type==="basic"?this.getConstructorBasicAuthArg({auth:t,values:r}):[];case"bearer":return r.type==="bearer"?this.getConstructorBearerAuthArgs({auth:t,values:r}):[];case"header":return r.type==="header"?this.getConstructorHeaderAuthArgs({auth:t,values:r}):[];case"oauth":return r.type==="oauth"?this.getConstructorOAuthArgs({auth:t,values:r}):[];case"inferred":return r.type==="inferred"?this.getConstructorInferredAuthArgs({auth:t,values:r}):[];default:be(t)}}addError(t){this.context.errors.add({severity:Or.Critical,message:t})}addWarning(t){this.context.errors.add({severity:Or.Warning,message:t})}getConstructorBasicAuthArg({auth:t,values:r}){let n=t,i=!!n.usernameOmit,o=!!n.passwordOmit,s=[];return i||s.push({name:this.context.getParameterName(t.username),assignment:this.csharp.Literal.string(r.username)}),o||s.push({name:this.context.getParameterName(t.password),assignment:this.csharp.Literal.string(r.password)}),s}getConstructorBearerAuthArgs({auth:t,values:r}){return[{name:this.context.getParameterName(t.token),assignment:this.csharp.Literal.string(r.token)}]}getConstructorHeaderAuthArgs({auth:t,values:r}){return[{name:this.context.getParameterName(t.header.name.name),assignment:this.context.dynamicLiteralMapper.convert({typeReference:t.header.typeReference,value:r.value,fallbackToDefault:t.header.name.wireValue})}]}getConstructorOAuthArgs({auth:t,values:r}){return[{name:this.context.getParameterName(t.clientId),assignment:this.csharp.Literal.string(r.clientId)},{name:this.context.getParameterName(t.clientSecret),assignment:this.csharp.Literal.string(r.clientSecret)}]}getConstructorInferredAuthArgs({auth:t,values:r}){let n=[];if(t.parameters!=null)for(let i of t.parameters){let o=i.name.wireValue,s=r.values?.[o];n.push({name:this.context.getParameterName(i.name.name),assignment:this.context.dynamicLiteralMapper.convert({typeReference:i.typeReference,value:s,fallbackToDefault:o})})}else this.context.errors.add({severity:Or.Critical,message:"Inferred auth parameters are not defined in the IR. Please ensure you're using IR version 62.3.0 or later."});return n}getConstructorHeaderArgs({headers:t,values:r}){let n=[];for(let i of t){let o=r[i.name.wireValue],s=this.getConstructorHeaderArg({header:i,value:o});s!=null&&n.push({name:this.context.getParameterName(i.name.name),assignment:s})}return n}getConstructorHeaderArg({header:t,value:r}){let n=this.context.dynamicLiteralMapper.convert({typeReference:t.typeReference,value:r,fallbackToDefault:t.name.wireValue});if(!Da.Literal.nop(n))return n}getMethodArgs({endpoint:t,snippet:r}){switch(t.request.type){case"inlined":return this.getMethodArgsForInlinedRequest({request:t.request,snippet:r});case"body":return this.getMethodArgsForBodyRequest({request:t.request,snippet:r});default:be(t.request)}}getMethodArgsForInlinedRequest({request:t,snippet:r}){this.context.errors.scope(Fo.PathParameters);let n=[...this.context.ir.pathParameters??[],...t.pathParameters??[]],i=this.context.includePathParametersInWrappedRequest({request:t,inlinePathParameters:this.settings.shouldInlinePathParameters}),o=i?this.getPathParameters({namedParameters:n,snippet:r}):[],s=i?[]:this.getPathParameterArguments({namedParameters:n,snippet:r});this.context.errors.unscope(),this.context.errors.scope(Fo.RequestBody);let a=this.getFilePropertyInfo({request:t,snippet:r});this.context.errors.unscope();let c=this.getInlinedRequestArg({request:t,snippet:r,pathParameterFields:o,filePropertyInfo:a});return s.length>0?[...s.map(u=>this.namedArgument({name:u.name,value:u.value})),this.namedArgument({name:kZl,value:c})]:[c]}getFilePropertyInfo({request:t,snippet:r}){return t.body==null||!this.context.isFileUploadRequestBody(t.body)?{fileFields:[],bodyPropertyFields:[]}:this.context.filePropertyMapper.getFilePropertyInfo({body:t.body,value:r.requestBody})}getInlinedRequestArg({request:t,snippet:r,pathParameterFields:n,filePropertyInfo:i}){let o=this.csharp.classReference({origin:t.declaration,namespace:this.context.getNamespace(t.declaration.fernFilepath)});this.context.errors.scope(Fo.QueryParameters);let a=this.context.associateQueryParametersByWireValue({parameters:t.queryParameters??[],values:r.queryParameters??{}}).map(p=>({name:this.context.resolvePropertyName(o,p.name.name),value:this.context.dynamicLiteralMapper.convert(p)}));this.context.errors.unscope(),this.context.errors.scope(Fo.Headers);let u=this.context.associateByWireValue({parameters:t.headers??[],values:r.headers??{}}).map(p=>({name:this.context.resolvePropertyName(o,p.name.name),value:this.context.dynamicLiteralMapper.convert({...p,fallbackToDefault:p.name.wireValue})}));this.context.errors.unscope(),this.context.errors.scope(Fo.RequestBody);let l=t.body!=null?this.getInlinedRequestBodyConstructorFields({body:t.body,value:r.requestBody,filePropertyInfo:i,classReference:o}):[];return this.context.errors.unscope(),this.csharp.Literal.class_({reference:o,fields:[...n,...a,...u,...l]})}getInlinedRequestBodyConstructorFields({body:t,value:r,filePropertyInfo:n,classReference:i}){switch(t.type){case"properties":return this.getInlinedRequestBodyPropertyConstructorFields({parameters:t.value,value:r,classReference:i});case"referenced":return[this.getReferencedRequestBodyPropertyConstructorField({body:t,value:r,classReference:i})];case"fileUpload":return this.getFileUploadRequestBodyConstructorFields({filePropertyInfo:n});default:be(t)}}getInlinedRequestBodyPropertyConstructorFields({parameters:t,value:r,classReference:n}){let i=[],o=this.context.associateByWireValue({parameters:t,values:this.context.getRecord(r)??{}});for(let s of o)i.push({name:this.context.resolvePropertyName(n,s.name.name),value:this.context.dynamicLiteralMapper.convert({...s,fallbackToDefault:s.name.wireValue})});return i}getFileUploadRequestBodyConstructorFields({filePropertyInfo:t}){return[...t.fileFields,...t.bodyPropertyFields]}getReferencedRequestBodyPropertyConstructorField({body:t,value:r,classReference:n}){return{name:this.context.resolvePropertyName(n,t.bodyKey),value:this.getReferencedRequestBodyPropertyLiteral({body:t.bodyType,value:r})}}getReferencedRequestBodyPropertyLiteral({body:t,value:r}){switch(t.type){case"bytes":return this.getBytesBodyRequestArg({value:r});case"typeReference":return this.context.dynamicLiteralMapper.convert({typeReference:t.value,value:r,fallbackToDefault:JSON.stringify(t.value)});default:be(t)}}getMethodArgsForBodyRequest({request:t,snippet:r}){this.context.errors.scope(Fo.PathParameters);let n=[...this.context.ir.pathParameters??[],...t.pathParameters??[]],i=this.getPathParameterArguments({namedParameters:n,snippet:r});this.context.errors.unscope(),this.context.errors.scope(Fo.RequestBody);let o=t.body!=null?this.getBodyRequestArg({body:t.body,value:r.requestBody}):void 0;if(this.context.errors.unscope(),i.length>0&&o!=null)return[...i.map(a=>this.namedArgument({name:a.name,value:a.value})),this.namedArgument({name:kZl,value:o})];let s=i.map(a=>a.value);return o!=null&&s.push(o),s}getPathParameterArguments({namedParameters:t,snippet:r}){return this.context.associateByWireValueOrDefault({parameters:t,values:r.pathParameters??{}}).map(i=>({name:this.context.getParameterName(i.name.name),value:this.context.dynamicLiteralMapper.convert({...i,fallbackToDefault:i.name.wireValue,forceLiteral:!0})}))}namedArgument({name:t,value:r}){return this.csharp.codeblock(n=>{n.write(`${t}: `),n.writeNode(r)})}getBodyRequestArg({body:t,value:r}){switch(t.type){case"bytes":return this.getBytesBodyRequestArg({value:r});case"typeReference":return t.value.type==="optional"&&r==null?this.csharp.Literal.null():this.context.dynamicLiteralMapper.convert({typeReference:t.value,value:r,fallbackToDefault:JSON.stringify(t.value)});default:be(t)}}getBytesBodyRequestArg({value:t}){let r=this.context.getValueAsString({value:t});return r==null&&(this.context.errors.add({severity:Or.Critical,message:"The bytes request body must be provided in string format"}),r="[bytes]"),this.csharp.Literal.reference(this.context.getMemoryStreamForString(r))}getRootClientConstructorInvocation(t){return this.csharp.instantiateClass({classReference:this.Types.RootClientForSnippets,arguments_:t,forceUseConstructor:!0,multiline:!0})}getPathParameters({namedParameters:t,snippet:r}){let n=[],i=this.context.associateByWireValueOrDefault({parameters:t,values:r.pathParameters??{}});for(let o of i)n.push({name:this.context.getPropertyName(o.name.name),value:this.context.dynamicLiteralMapper.convert({...o,fallbackToDefault:o.name.wireValue})});return n}getMethod({endpoint:t}){return t.declaration.fernFilepath.allParts.length>0?`${t.declaration.fernFilepath.allParts.map(r=>this.context.getClassName(r)).join(".")}.${this.context.getMethodName(t.declaration.name)}`:this.context.getMethodName(t.declaration.name)}getBaseUrlOptionName(){return this.context.ir.environments?.environments.type==="multipleBaseUrls"?"Environment":"BaseUrl"}getStyle(t){return t.style??this.context.options.style??oS.Full}getConfig(t){return t.config??this.context.options.config??{}}};var ZKt=class extends px{constructor({ir:t,config:r,options:n={}}){super(new Hgi({ir:t,config:r,options:n}))}precalculate(t){this.context.precalculate(t)}async generate(t,r={}){return super.generate(t,r)}generateSync(t,r={}){return super.generateSync(t,r)}async generateSnippetAst(t){return super.generateSnippetAst(t)}createSnippetGenerator(t){return new Kgi({context:t})}};Xt();var TCt=require("fs/promises"),jZl=ye(require("path"),1);function ZT(e){let t=e.endpoint.method;if(t!=="HEAD")return{...e,baseURL:e.baseUrl,endpoint:{...e.endpoint,method:t},auth:b2g(e.auth)}}function b2g(e){if(e!=null)return e}function NZl(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,E2g(r)]).filter(([t,r])=>r!=null))}function E2g(e){let t=e.location.method;if(t!=="HEAD")return{...e,location:{...e.location,method:t},examples:e.examples!=null?I2g(e.examples):void 0,auth:C2g(e.auth)}}function I2g(e){return e.map(t=>v2g(t)).filter(t=>t!=null)}function v2g(e){let t=e.endpoint.method;if(t!=="HEAD")return{...e,baseURL:e.baseUrl,endpoint:{...e.endpoint,method:t},auth:x2g(e.auth)}}function x2g(e){if(e!=null)return e}function C2g(e){if(e!=null)return e}function $T(e){return{...e,endpoints:NZl(e.endpoints)}}var w2g=`<Project Sdk="Microsoft.NET.Sdk">
4509
4509
  <PropertyGroup>
4510
4510
  <TargetFramework>net10.0</TargetFramework>
4511
4511
  <RootNamespace>Snippets</RootNamespace>
@@ -4885,7 +4885,7 @@ ${r}`}function abi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
4885
4885
  `),g="";return c&&(g=l.style.error(c)),[`${p} ${f} ${s}`,[m,g].filter(Boolean).join(`
4886
4886
  `)]});var iUg=yx((e,t)=>{let{validate:r=()=>!0}=e,n=oI(e.theme),[i,o]=Zc("idle"),[s,a]=Zc(),[c,u]=Zc(""),l=gx({status:i,theme:n});Ax(async(g,A)=>{if(i==="idle")if(hx(g)){let y=c;o("loading");let E=await r(y);E===!0?(u(y),o("done"),t(y)):(A.write(c),a(E||"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]")}${Hwt}`),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 $5e=ye(Fw(),1);var oUg={icon:{cursor:cC.pointer},style:{disabled:e=>$5e.default.dim(`- ${e}`),searchTerm:e=>$5e.default.cyan(e),description:e=>$5e.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${$5e.default.bold(t)} ${$5e.default.dim(r)}`).join($5e.default.dim(" \u2022 "))},helpMode:"always"};function Oks(e){return!dd.isSeparator(e)&&!e.disabled}function sUg(e){return e.map(t=>{if(dd.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 aUg=yx((e,t)=>{let{pageSize:r=7,validate:n=()=>!0}=e,i=oI(oUg,e.theme),[o,s]=Zc("loading"),[a,c]=Zc(""),[u,l]=Zc([]),[p,d]=Zc(),f=gx({status:o,theme:i}),m=r6(()=>{let M=u.findIndex(Oks),K=u.findLastIndex(Oks);return{first:M,last:K}},[u]),[g=m.first,A]=Zc();t4(()=>{let M=new AbortController;return s("loading"),d(void 0),(async()=>{try{let Y=await e.source(a||void 0,{signal:M.signal});M.signal.aborted||(A(void 0),d(void 0),l(sUg(Y)),s("idle"))}catch(Y){!M.signal.aborted&&Y instanceof Error&&d(Y.message)}})(),()=>{M.abort()}},[a]);let y=u[g];Ax(async(M,K)=>{if(hx(M))if(y){s("loading");let Y=await n(y.value);s("idle"),Y===!0?(s("done"),t(y.value)):y.name===a?d(Y||"You must provide a valid value"):(K.write(y.name),c(y.name))}else K.write(a);else if(Nhe(M)&&y)K.clearLine(0),K.write(y.name),c(y.name);else if(o!=="loading"&&(oP(M)||t6(M))){if(K.clearLine(0),oP(M)&&g!==m.first||t6(M)&&g!==m.last){let Y=oP(M)?-1:1,Z=g;do Z=(Z+Y+u.length)%u.length;while(!Oks(u[Z]));A(Z)}}else c(K.line)});let E=i.style.message(e.message,o),v;if(i.helpMode!=="never")if(e.instructions){let{pager:M,navigation:K}=e.instructions;v=i.style.help(u.length>r?M:K)}else v=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let I=J5e({items:u,active:g,renderItem({item:M,isActive:K}){if(dd.isSeparator(M))return` ${M.separator}`;if(M.disabled){let ae=typeof M.disabled=="string"?M.disabled:"(disabled)";return i.style.disabled(`${M.name} ${ae}`)}let Y=K?i.style.highlight:ae=>ae,Z=K?i.icon.cursor:" ";return Y(`${Z} ${M.name}`)},pageSize:r,loop:!1}),C;p?C=i.style.error(p):u.length===0&&a!==""&&o==="idle"&&(C=i.style.error("No results found"));let S;if(o==="done"&&y)return[f,E,i.style.answer(y.short)].filter(Boolean).join(" ").trimEnd();S=i.style.searchTerm(a);let O=y?.description,D=[f,E,S].filter(Boolean).join(" ").trimEnd(),T=[C??I," ",O?i.style.description(O):"",v].filter(Boolean).join(`
4887
4887
  `).trimEnd();return[D,T]});var Jwt=ye(Fw(),1);var cUg={icon:{cursor:cC.pointer},style:{disabled:e=>Jwt.default.dim(`- ${e}`),description:e=>Jwt.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${Jwt.default.bold(t)} ${Jwt.default.dim(r)}`).join(Jwt.default.dim(" \u2022 "))},helpMode:"always",indexMode:"hidden",keybindings:[]};function Kwt(e){return!dd.isSeparator(e)&&!e.disabled}function uUg(e){return e.map(t=>{if(dd.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 Bks=yx((e,t)=>{let{loop:r=!0,pageSize:n=7}=e,i=oI(cUg,e.theme),{keybindings:o}=i,[s,a]=Zc("idle"),c=gx({status:s,theme:i}),u=K5e(),l=!o.includes("vim"),p=r6(()=>uUg(e.choices),[e.choices]),d=r6(()=>{let O=p.findIndex(Kwt),D=p.findLastIndex(Kwt);if(O===-1)throw new vae("[select prompt] No selectable choices. All choices are disabled.");return{first:O,last:D}},[p]),f=r6(()=>"default"in e?p.findIndex(O=>Kwt(O)&&O.value===e.default):-1,[e.default,p]),[m,g]=Zc(f===-1?d.first:f),A=p[m];Ax((O,D)=>{if(clearTimeout(u.current),hx(O))a("done"),t(A.value);else if(oP(O,o)||t6(O,o)){if(D.clearLine(0),r||oP(O,o)&&m!==d.first||t6(O,o)&&m!==d.last){let T=oP(O,o)?-1:1,M=m;do M=(M+T+p.length)%p.length;while(!Kwt(p[M]));g(M)}}else if(fYt(O)&&!Number.isNaN(Number(D.line))){let T=Number(D.line)-1,M=-1,K=p.findIndex(Z=>dd.isSeparator(Z)?!1:(M++,M===T)),Y=p[K];Y!=null&&Kwt(Y)&&g(K),u.current=setTimeout(()=>{D.clearLine(0)},700)}else if(G5e(O))D.clearLine(0);else if(l){let T=D.line.toLowerCase(),M=p.findIndex(K=>dd.isSeparator(K)||!Kwt(K)?!1:K.name.toLowerCase().startsWith(T));M!==-1&&g(M),u.current=setTimeout(()=>{D.clearLine(0)},700)}}),t4(()=>()=>{clearTimeout(u.current)},[]);let y=i.style.message(e.message,s),E;if(i.helpMode!=="never")if(e.instructions){let{pager:O,navigation:D}=e.instructions;E=i.style.help(p.length>n?O:D)}else E=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let v=0,I=J5e({items:p,active:m,renderItem({item:O,isActive:D,index:T}){if(dd.isSeparator(O))return v++,` ${O.separator}`;let M=i.indexMode==="number"?`${T+1-v}. `:"";if(O.disabled){let Z=typeof O.disabled=="string"?O.disabled:"(disabled)";return i.style.disabled(`${M}${O.name} ${Z}`)}let K=D?i.style.highlight:Z=>Z,Y=D?i.icon.cursor:" ";return K(`${Y} ${M}${O.name}`)},pageSize:n,loop:r});if(s==="done")return[c,y,i.style.answer(A.short)].filter(Boolean).join(" ");let{description:C}=A;return`${[[c,y].filter(Boolean).join(" "),I," ",C?i.style.description(C):"",E].filter(Boolean).join(`
4888
- `).trimEnd()}${Hwt}`});En();_i();var xae={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"},lUg={[xae.GENERATION_STARTED]:!1,[xae.GENERATION_COMPLETED]:!1,[xae.GENERATION_FAILED]:!0,[xae.VERIFICATION_FAILED]:!0,[xae.SDK_PR_CREATED]:!1,[xae.UPGRADE_APPLIED]:!1,[xae.MAJOR_VERSION_BUMP]:!1};function Xsp(e){return lUg[e]}function Zsp(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 $sp(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 eap(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 tap(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 rap(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?xae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?xae.VERIFICATION_FAILED:xae.GENERATION_FAILED}var pUg="",fUg="FERN_AUTOMATION_EVENTS_ORIGIN",dUg=3e3,_bi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[fUg]??pUg)),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(),dUg);try{let s={"content-type":"application/json"},a=await u_();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(tap(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function nap(){let{fern_run_id:e,github_run_id:t}=ece();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.74.2"}}function iap(){return process.env.FERN_AUTOMATION==="true"}var qbi=class{constructor(t,r=_bi.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=nap()}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:Zsp(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!Xsp(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:$sp(t,r),context:{automation:eap(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};Qt();function Gbi(e,t,r){if(t instanceof tu)return;let n=Gke(t,r?.code),i=r?.argv??process.argv,o=i.join(" "),s=r?.message??(t instanceof Error?t.message:void 0)??"",a=t??new B({message:s,code:n});iap()?hUg(i,e,n,s,a):mUg(e,o,n,a)}function mUg(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),hBt(r)&&e.captureException(n,{tags:{"error.code":r}})}function hUg(e,t,r,n,i){let o=rap(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}Qt();function e8e(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function Wbi({cliName:e,packageVersion:t,isLocal:r}){return e8e()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var Hbi=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(Wbi(r)&&n!=null&&n.length>0){let i="production";if(i==null||i.length===0)throw new B({message:"SENTRY_ENVIRONMENT must be set when SENTRY_DSN is configured",code:B.Code.ConfigError});this.sentry=cBt({dsn:n,release:t,environment:i,defaultIntegrations:!1,integrations:[W9e(),Mge(),Lge(),xge(),zge()],tracesSampleRate:0,attachStacktrace:!0,sendClientReports:!1}),uBt()}}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):lO(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(()=>{})}};Qt();var Kbi=class{originalWrite;redirected=!1;redirect(){if(this.redirected)throw new B({message:"StdoutRedirector: already redirected \u2014 did you forget to restore()?",code:B.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()}}};Ape();Dt();Ab();Qt();En();var gYt=class{result=Rf.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 tu}failWithoutThrowing(t,r,n){this.result=Rf.Failure,!(r instanceof tu)&&(t!=null&&(this.lastFailureMessage=t),LMt({message:t,error:r,logger:this.logger}),Gbi(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=lv(this.logAtLevel.bind(this));addInteractiveTask({name:t,subtitle:r}){let n=new Pks({name:t,subtitle:r,logImmediately:i=>this.logImmediately(i),logPrefix:`${this.logPrefix}${de.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()===Rf.Success}printInteractiveTasks({spinner:t}){return this.subtasks.map(r=>r.print({spinner:t})).join(`
4888
+ `).trimEnd()}${Hwt}`});En();_i();var xae={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"},lUg={[xae.GENERATION_STARTED]:!1,[xae.GENERATION_COMPLETED]:!1,[xae.GENERATION_FAILED]:!0,[xae.VERIFICATION_FAILED]:!0,[xae.SDK_PR_CREATED]:!1,[xae.UPGRADE_APPLIED]:!1,[xae.MAJOR_VERSION_BUMP]:!1};function Xsp(e){return lUg[e]}function Zsp(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 $sp(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 eap(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 tap(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 rap(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?xae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?xae.VERIFICATION_FAILED:xae.GENERATION_FAILED}var pUg="",fUg="FERN_AUTOMATION_EVENTS_ORIGIN",dUg=3e3,_bi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[fUg]??pUg)),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(),dUg);try{let s={"content-type":"application/json"},a=await u_();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(tap(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function nap(){let{fern_run_id:e,github_run_id:t}=ece();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.74.3"}}function iap(){return process.env.FERN_AUTOMATION==="true"}var qbi=class{constructor(t,r=_bi.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=nap()}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:Zsp(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!Xsp(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:$sp(t,r),context:{automation:eap(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};Qt();function Gbi(e,t,r){if(t instanceof tu)return;let n=Gke(t,r?.code),i=r?.argv??process.argv,o=i.join(" "),s=r?.message??(t instanceof Error?t.message:void 0)??"",a=t??new B({message:s,code:n});iap()?hUg(i,e,n,s,a):mUg(e,o,n,a)}function mUg(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),hBt(r)&&e.captureException(n,{tags:{"error.code":r}})}function hUg(e,t,r,n,i){let o=rap(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}Qt();function e8e(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function Wbi({cliName:e,packageVersion:t,isLocal:r}){return e8e()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var Hbi=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(Wbi(r)&&n!=null&&n.length>0){let i="production";if(i==null||i.length===0)throw new B({message:"SENTRY_ENVIRONMENT must be set when SENTRY_DSN is configured",code:B.Code.ConfigError});this.sentry=cBt({dsn:n,release:t,environment:i,defaultIntegrations:!1,integrations:[W9e(),Mge(),Lge(),xge(),zge()],tracesSampleRate:0,attachStacktrace:!0,sendClientReports:!1}),uBt()}}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):lO(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(()=>{})}};Qt();var Kbi=class{originalWrite;redirected=!1;redirect(){if(this.redirected)throw new B({message:"StdoutRedirector: already redirected \u2014 did you forget to restore()?",code:B.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()}}};Ape();Dt();Ab();Qt();En();var gYt=class{result=Rf.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 tu}failWithoutThrowing(t,r,n){this.result=Rf.Failure,!(r instanceof tu)&&(t!=null&&(this.lastFailureMessage=t),LMt({message:t,error:r,logger:this.logger}),Gbi(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=lv(this.logAtLevel.bind(this));addInteractiveTask({name:t,subtitle:r}){let n=new Pks({name:t,subtitle:r,logImmediately:i=>this.logImmediately(i),logPrefix:`${this.logPrefix}${de.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()===Rf.Success}printInteractiveTasks({spinner:t}){return this.subtasks.map(r=>r.print({spinner:t})).join(`
4889
4889
  `)}},Pks=class extends gYt{name;subtitle;constructor({name:t,subtitle:r,...n}){super(n),this.name=t,this.subtitle=r}start(){return super.start(),this.logAtLevelWithOverrides(Un.Info,["Started."],{omitOnTTY:!0}),this.flushLogs(),this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.result===Rf.Success?this.logAtLevelWithOverrides(Un.Info,["Finished."],{omitOnTTY:!0}):this.logAtLevelWithOverrides(Un.Error,["Failed."],{omitOnTTY:!0}),super.finish())}setSubtitle(t){this.subtitle=t}print({spinner:t}){let r=[this.name];return this.subtitle!=null&&r.push(de.dim(this.subtitle)),r.push(...this.subtasks.map(n=>n.print({spinner:t}))),ej({prefix:this.getIcon({spinner:t}),content:r.join(`
4890
4890
  `)})}printInteractiveTasks({spinner:t}){return this.print({spinner:t})}getIcon({spinner:t}){let r=this.subtasks.length>0;switch(this.status){case"notStarted":return r?de.dim("\u25B8 "):de.dim("\u25E6 ");case"running":return r?de.cyan("\u25BE "):t;case"finished":switch(this.getResult()){case Rf.Success:return r?de.green("\u25BE "):de.green("\u2713 ");case Rf.Failure:return r?de.red("\u25BE "):de.red("x ")}}}getResult(){if(this.result===Rf.Failure)return Rf.Failure;for(let t of this.subtasks)if(t.getResult()===Rf.Failure)return Rf.Failure;return Rf.Success}};Qt();var oap=ye(Pze(),1);En();function sap(e){return e.filter(t=>t.isUpgradeAvailable).length>0}function gUg(e){return(e.cliUpgradeInfo?.isUpgradeAvailable??!1)||sap(e.generatorUpgradeInfo)}async function aap({cliEnvironment:e,upgradeInfo:t}){if(!gUg(t)||e.packageVersion==t.cliUpgradeInfo?.latestVersion)return;let r=`${de.underline("Upgrades available")}
4891
4891
 
@@ -4894,7 +4894,7 @@ ${r}`}function abi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
4894
4894
  Run ${de.cyan("fern generator upgrade")} to upgrade your generators.`),i.length>2&&(r+=`
4895
4895
  Run ${de.cyan("fern generator upgrade --list")} to see the full list of generator upgrades available.`),cit(r,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"})}async function Dks({generatorUpgradeInfo:e,header:t,limit:r,includeBoxen:n=!0}){if(!sap(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+=`
4896
4896
  ${await AUg(a.generatorName)} (${a.apiName!=null?"API: "+a.apiName+", ":""}Group: ${a.generatorGroup}) `+de.dim(a.currentVersion)+de.reset(" \u2192 ")+de.green(a.latestVersion);return i+=`
4897
- `,n?cit(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function AUg(e){let r=await new oap.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new B({message:`Generator ${e} not found`,code:B.Code.ConfigError});return r.body.displayName}Qo();rIe();Qt();async function yUg({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await cap({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=Eze(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await a1({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 cap({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=Eze(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await a1({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 cap({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 bL({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?BA(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 uap(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=bQ(a.latestVersion,a.previousVersion)}catch{throw new B({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:B.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 Jbi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await yUg({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(...uap(u,c,t.logger));else s.push(...uap(a.versions,void 0,t.logger))}return s}Qt();B8i();async function jhe({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await fRt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new B({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:B.Code.NetworkError})}}var lap=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Ybi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Un.Info;isLocal;stdoutRedirector=new Kbi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await RUt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new n6t(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 Hbi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new qbi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.74.2"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${de.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new tu}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof tu)&&(LMt({message:t,error:r,logger:this.logger}),Gbi(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)+`
4897
+ `,n?cit(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function AUg(e){let r=await new oap.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new B({message:`Generator ${e} not found`,code:B.Code.ConfigError});return r.body.displayName}Qo();rIe();Qt();async function yUg({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await cap({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=Eze(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await a1({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 cap({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=Eze(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await a1({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 cap({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 bL({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?BA(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 uap(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=bQ(a.latestVersion,a.previousVersion)}catch{throw new B({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:B.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 Jbi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await yUg({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(...uap(u,c,t.logger));else s.push(...uap(a.versions,void 0,t.logger))}return s}Qt();B8i();async function jhe({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await fRt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new B({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:B.Code.NetworkError})}}var lap=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Ybi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Un.Info;isLocal;stdoutRedirector=new Kbi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await RUt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new n6t(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 Hbi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new qbi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.74.3"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${de.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new tu}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof tu)&&(LMt({message:t,error:r,logger:this.logger}),Gbi(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)+`
4898
4898
  `),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 aap({cliEnvironment:this.environment,upgradeInfo:t});r!=null&&(r.endsWith(`
4899
4899
  `)||(r+=`
4900
4900
  `),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=gDi(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 gYt(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 tu}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=lv((t,...r)=>this.log(t,...r));stderr=lv((t,...r)=>this.logStderr(t,...r));constructTaskInitForWorkspace(t){let r=t.type==="docs"?"docs":t.workspaceName??"api",n=pap(r),i=1+(this.longestWorkspaceName!=null?pap(this.longestWorkspaceName):n).length,o=n.padEnd(i),s=lap[this.numTasks++%lap.length],a=de.hex(s)(o);return{...this.constructTaskInit(),logPrefix:a,title:de.hex(s).bold(r)}}constructTaskInit(){return{logImmediately:t=>this.logImmediately(t),takeOverTerminal:t=>this.ttyAwareLogger.takeOverTerminal(t),onResult:t=>{t===Rf.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=>nw.indexOf(i.level)>=nw.indexOf(this.logLevel));this.ttyAwareLogger.log(n,{includeDebugInfo:this.logLevel===Un.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 jhe({cliEnvironment:this.environment,includePreReleases:t}),n=bQ(r,this.environment.packageVersion);this.logger.debug(`Latest version: ${r}. `+(n?"Upgrade available.":"No upgrade available."));let i={isUpgradeAvailable:n,latestVersion:r},o=await Jbi({project:this.project,cliContext:this});this._isUpgradeAvailable={cliUpgradeInfo:i,generatorUpgradeInfo:o}}return this._isUpgradeAvailable}async confirmPrompt(t,r=!1){try{return await Bks({message:t,choices:[{name:"No",value:!1},{name:"Yes",value:!0}],default:r,theme:{prefix:de.yellow("?"),style:{answer:i=>de.cyan(i),message:i=>de.bold(i),highlight:i=>de.cyan(i)}}})}catch(n){throw n?.name==="ExitPromptError"?(this.logger.info(`