fern-api 5.44.9 → 5.44.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.cjs +7 -7
- package/package.json +1 -1
package/cli.cjs
CHANGED
|
@@ -3222,7 +3222,7 @@ ${gQc.default.cursorShow}`)}releaseCursor(){this.extraLinesUnderPrompt>0&&fxo(th
|
|
|
3222
3222
|
`+bze.default.red(">> ")+t),this.screen.render(r,n)}getMaskedValue(t){return this.status==="answered"?this.opt.mask?bze.default.cyan(xQc(t,this.opt.mask)):bze.default.italic(bze.default.dim("[hidden]")):this.opt.mask?xQc(t,this.opt.mask):bze.default.italic(bze.default.dim("[input is hidden] "))}getSpinningValue(t){return this.getMaskedValue(t)}filterInput(t){return t||(this.opt.default==null?"":this.opt.default)}onEnd(t){this.status="answered",this.answer=t.value,this.render(),this.screen.done(),this.done(t.value)}onError(t){this.render(t.isValid)}onKeypress(){this.opt.default&&=void 0,this.render()}};var $7r=we(pS(),1);var wMc=we(Hxo(),1),X7r=require("child_process"),Wot=require("fs"),Y7r=we(require("path"),1),xMc=we(require("os"),1),SMc=require("crypto"),DSo=we(IMc(),1);var H7r=class extends Error{originalError;constructor(t){super(`Failed to create temporary file. ${t.message}`),this.originalError=t}};var nVt=class extends Error{originalError;constructor(t){super(`Failed to launch editor. ${t.message}`),this.originalError=t}};var K7r=class extends Error{originalError;constructor(t){super(`Failed to read temporary file. ${t.message}`),this.originalError=t}};var J7r=class extends Error{originalError;constructor(t){super(`Failed to remove temporary file. ${t.message}`),this.originalError=t}};function Z7r(e="",t,r){let n=new RSo(e,r);n.runAsync((i,o)=>{if(i)setImmediate(t,i,void 0);else try{n.cleanup(),setImmediate(t,void 0,o)}catch(s){setImmediate(t,s,void 0)}})}function CMc(e){return e?e.replace(/[^a-zA-Z0-9_.-]/g,"_"):""}function lVd(e){let t=[],r="";for(let n=0;n<e.length;n++){let i=e.charAt(n);n>0&&i===" "&&e[n-1]!=="\\"&&r.length>0?(t.push(r),r=""):r=`${r}${i}`}return r.length>0&&t.push(r),t}var RSo=class{text="";tempFile;editor;lastExitStatus=0;fileOptions={};get temp_file(){return console.log("DEPRECATED: temp_file. Use tempFile moving forward."),this.tempFile}get last_exit_status(){return console.log("DEPRECATED: last_exit_status. Use lastExitStatus moving forward."),this.lastExitStatus}constructor(t="",r){this.text=t,r&&(this.fileOptions=r),this.determineEditor(),this.createTemporaryFile()}run(){return this.launchEditor(),this.readTemporaryFile(),this.text}runAsync(t){try{this.launchEditorAsync(()=>{try{this.readTemporaryFile(),setImmediate(t,void 0,this.text)}catch(r){setImmediate(t,r,void 0)}})}catch(r){setImmediate(t,r,void 0)}}cleanup(){this.removeTemporaryFile()}determineEditor(){let t=process.env.VISUAL?process.env.VISUAL:process.env.EDITOR?process.env.EDITOR:process.platform.startsWith("win")?"notepad":"vim",r=lVd(t).map(i=>i.replace("\\ "," ")),n=r.shift();this.editor={args:r,bin:n}}createTemporaryFile(){try{let t=this.fileOptions.dir??xMc.default.tmpdir(),r=(0,SMc.randomUUID)(),n=CMc(this.fileOptions.prefix),i=CMc(this.fileOptions.postfix),o=`${n}${r}${i}`,s=Y7r.default.resolve(t,o),a=Y7r.default.resolve(t)+Y7r.default.sep;if(!s.startsWith(a))throw new Error("Resolved temporary file escaped the base directory");this.tempFile=s;let c={encoding:"utf8",flag:"wx"};Object.prototype.hasOwnProperty.call(this.fileOptions,"mode")&&(c.mode=this.fileOptions.mode),(0,Wot.writeFileSync)(this.tempFile,this.text,c)}catch(t){throw new H7r(t)}}readTemporaryFile(){try{let t=(0,Wot.readFileSync)(this.tempFile);if(t.length===0)this.text="";else{let r=(0,wMc.detect)(t)??"utf8";DSo.default.encodingExists(r)||(r="utf8"),this.text=DSo.default.decode(t,r)}}catch(t){throw new K7r(t)}}removeTemporaryFile(){try{(0,Wot.unlinkSync)(this.tempFile)}catch(t){throw new J7r(t)}}launchEditor(){try{let t=(0,X7r.spawnSync)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"});this.lastExitStatus=t.status??0}catch(t){throw new nVt(t)}}launchEditorAsync(t){try{(0,X7r.spawn)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"}).on("exit",n=>{this.lastExitStatus=n,setImmediate(t)})}catch(r){throw new nVt(r)}}};var TMc=we(yz(),1);var iVt=class extends fS{_run(t){this.done=t,this.editorResult=new TMc.Subject;let r=HO(this.rl);this.lineSubscription=r.line.subscribe(this.startExternalEditor.bind(this));let n=this.opt.waitUserInput===void 0?!0:this.opt.waitUserInput,i=this.handleSubmitEvents(this.editorResult);return i.success.forEach(this.onEnd.bind(this)),i.error.forEach(this.onError.bind(this)),this.currentText=this.opt.default,this.opt.default=null,n?this.render():this.startExternalEditor(),this}render(t){let r="",n=this.getQuestion();n+=this.status==="answered"?$7r.default.dim("Received"):$7r.default.dim("Press <enter> to launch your preferred editor."),t&&(r=$7r.default.red(">> ")+t),this.screen.render(n,r)}startExternalEditor(){this.rl.pause(),Z7r(this.currentText,this.endExternalEditor.bind(this),{postfix:this.opt.postfix??".txt"})}endExternalEditor(t,r){this.rl.resume(),t?this.editorResult.error(t):this.editorResult.next(r)}onEnd(t){this.editorResult.unsubscribe(),this.lineSubscription.unsubscribe(),this.answer=t.value,this.status="answered",this.render(),this.screen.done(),this.done(this.answer)}onError(t){this.render(t.isValid)}};var RMc=require("stream");var PMc=we(require("readline"),1),DMc=we(OMc(),1),Cze=class{constructor(t){this.rl||=PMc.default.createInterface(fVd(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 fVd(e={}){e.skipTTYChecks=e.skipTTYChecks===void 0?!0:e.skipTTYChecks;let t=e.input||process.stdin;if(!e.skipTTYChecks&&!t.isTTY){let i=new Error("Prompts can not be meaningfully rendered in non-TTY environments");throw i.isTtyError=!0,i}let r=new DMc.default;return r.pipe(e.output||process.stdout),{terminal:!0,...e,input:t,output:r}}var oVt=class extends Cze{constructor(t={}){super(t),this.log=new RMc.Writable({write:(r,n,i)=>{this.writeLog(r),i()}}),this.bottomBar=t.bottomBar||"",this.render()}render(){return this.write(this.bottomBar),this}clean(){return __t(this.rl,this.bottomBar.split(`
|
|
3223
3223
|
`).length),this}updateBottomBar(t){return __t(this.rl,1),this.rl.output.unmute(),this.clean(),this.bottomBar=t,this.render(),this.rl.output.mute(),this}writeLog(t){return this.rl.output.unmute(),this.clean(),this.rl.output.write(this.enforceLF(t.toString())),this.render(),this.rl.output.mute(),this}enforceLF(t){return/[\n\r]$/.test(t)?t:t+`
|
|
3224
3224
|
`}write(t){let r=t.split(/\n/);this.height=r.length,this.rl.setPrompt(r.at(-1)),this.rl.output.rows===0&&this.rl.output.columns===0&&v7r(this.rl,t.length+this.rl.line.length),this.rl.output.write(t)}};var qd=we(yz(),1),NMc=we(b_t(),1);var eqr=we(yz(),1),FMc=we(b_t(),1),tqr=function(e,t,r){return typeof e[t]!="function"?(0,eqr.of)(e):(0,eqr.from)((0,FMc.default)(e[t])(r).then(n=>(e[t]=n,e)))};var kMc={set:(e,t="",r)=>{let n=e;t.split(".").forEach((i,o,s)=>{i==="__proto__"||i==="constructor"||(o===s.length-1?n[i]=r:(!(i in n)||typeof n[i]!="object")&&(n[i]={}),n=n[i])})},get:(e,t="",r)=>{let n=o=>String.prototype.split.call(t,o).filter(Boolean).reduce((s,a)=>s!=null?s[a]:s,e),i=n(/[,[\]]+?/)||n(/[,.[\]]+?/);return i===void 0||i===e?r:i}},Hot=class extends Cze{constructor(t,r){super(r),this.prompts=t}run(t,r){this.answers=typeof r=="object"?{...r}:{};let n;return Array.isArray(t)?n=(0,qd.from)(t):(0,qd.isObservable)(t)?n=t:Object.values(t).every(i=>typeof i=="object"&&!Array.isArray(i)&&i!=null)?n=(0,qd.from)(Object.entries(t).map(([i,o])=>({name:i,...o}))):n=(0,qd.from)([t]),this.process=n.pipe((0,qd.concatMap)(this.processQuestion.bind(this)),(0,qd.publish)()),this.process.connect(),this.process.pipe((0,qd.reduce)((i,o)=>(kMc.set(i,o.name,o.answer),i),this.answers)).toPromise(Promise).then(this.onCompletion.bind(this),this.onError.bind(this))}onCompletion(){return this.close(),this.answers}onError(t){return this.close(),Promise.reject(t)}processQuestion(t){return t={...t},(0,qd.defer)(()=>(0,qd.of)(t).pipe((0,qd.concatMap)(this.setDefaultType.bind(this)),(0,qd.concatMap)(this.filterIfRunnable.bind(this)),(0,qd.concatMap)(()=>tqr(t,"message",this.answers)),(0,qd.concatMap)(()=>tqr(t,"default",this.answers)),(0,qd.concatMap)(()=>tqr(t,"choices",this.answers)),(0,qd.concatMap)(this.fetchAnswer.bind(this))))}fetchAnswer(t){let r=this.prompts[t.type];return this.activePrompt=new r(t,this.rl,this.answers),(0,qd.defer)(()=>(0,qd.from)(this.activePrompt.run().then(n=>({name:t.name,answer:n}))))}setDefaultType(t){return this.prompts[t.type]||(t.type="input"),(0,qd.defer)(()=>(0,qd.of)(t))}filterIfRunnable(t){if(t.askAnswered!==!0&&kMc.get(this.answers,t.name)!==void 0)return qd.EMPTY;if(t.when===!1)return qd.EMPTY;if(typeof t.when!="function")return(0,qd.of)(t);let{answers:r}=this;return(0,qd.defer)(()=>(0,qd.from)((0,NMc.default)(t.when)(r).then(n=>{if(n)return t})).pipe((0,qd.filter)(n=>n!=null)))}};function jMc(e){let t=function(r,n){let i;try{i=new Hot(t.prompts,e)}catch(s){return Promise.reject(s)}let o=i.run(r,n);return o.ui=i,o};return t.prompts={},t.registerPrompt=function(r,n){return t.prompts[r]=n,this},t.restoreDefaultPrompts=function(){this.registerPrompt("list",q_t),this.registerPrompt("input",yze),this.registerPrompt("number",G_t),this.registerPrompt("confirm",W_t),this.registerPrompt("rawlist",H_t),this.registerPrompt("expand",K_t),this.registerPrompt("checkbox",J_t),this.registerPrompt("password",Y_t),this.registerPrompt("editor",iVt)},t.restoreDefaultPrompts(),t}var kSo=jMc();function mVd(e,t){kSo.registerPrompt(e,t)}function hVd(){kSo.restoreDefaultPrompts()}var gVd={prompt:kSo,ui:{BottomBar:oVt,Prompt:Hot},createPromptModule:jMc,registerPrompt:mVd,restoreDefaultPrompts:hVd,Separator:cM},Nu=gVd;var Kot=require("path");function MMc(){let e=AVd();return async t=>{for(let r of t)r.module=e(r.filename);return t}}function AVd(e=process.argv[1]?(0,Kot.dirname)(process.argv[1]):process.cwd(),t=Kot.sep==="\\"){let r=t?QMc(e):e;return n=>{if(!n)return;let i=t?QMc(n):n,{dir:o,base:s,ext:a}=Kot.posix.parse(i);(a===".js"||a===".mjs"||a===".cjs")&&(s=s.slice(0,-1*a.length));let c=decodeURIComponent(s);o||(o=".");let u=o.lastIndexOf("/node_modules");if(u>-1)return`${o.slice(u+14).replace(/\//g,".")}:${c}`;if(o.startsWith(r)){let l=o.slice(r.length+1).replace(/\//g,".");return l?`${l}:${c}`:c}return c}}function QMc(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var NSo=e=>{if("flags"in e){let t=LMc(e.flags),r=zMc(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([i,o])=>[i,jSo(o)])),n=Object.fromEntries(Object.entries(t).map(([i,o])=>[i,yVd(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function yVd(e,t,r){return{key:e,enabled:typeof t=="string"?!0:t,variant:typeof t=="string"?t:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:r?JSON.stringify(r):void 0,description:void 0}}}var LMc=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,sVt(r)]).filter(([,t])=>t!==void 0)),zMc=e=>{let t=e??{};return Object.fromEntries(Object.keys(t).filter(r=>{let n=t[r];return n.enabled&&n.metadata&&n.metadata.payload!==void 0}).map(r=>{let n=t[r].metadata?.payload;return[r,n?jSo(n):void 0]}))};var sVt=e=>e===void 0?void 0:e.variant??e.enabled,jSo=e=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};function UMc(){return"CompressionStream"in globalThis}async function rqr(e,t=!0){try{let n=new Blob([e],{type:"text/plain"}).stream().pipeThrough(new CompressionStream("gzip"));return await new Response(n).blob()}catch(r){return t&&console.error("Failed to gzip compress data",r),null}}var nqr="0123456789abcdef",iqr=class e{constructor(t){this.bytes=t}static ofInner(t){if(t.length===16)return new e(t);throw new TypeError("not 128-bit length")}static fromFieldsV7(t,r,n,i){if(!Number.isInteger(t)||!Number.isInteger(r)||!Number.isInteger(n)||!Number.isInteger(i)||t<0||r<0||n<0||i<0||t>0xffffffffffff||r>4095||n>1073741823||i>4294967295)throw new RangeError("invalid field value");let o=new Uint8Array(16);return o[0]=t/2**40,o[1]=t/2**32,o[2]=t/2**24,o[3]=t/2**16,o[4]=t/256,o[5]=t,o[6]=112|r>>>8,o[7]=r,o[8]=128|n>>>24,o[9]=n>>>16,o[10]=n>>>8,o[11]=n,o[12]=i>>>24,o[13]=i>>>16,o[14]=i>>>8,o[15]=i,new e(o)}static parse(t){let r;switch(t.length){case 32:r=/^[0-9a-f]{32}$/i.exec(t)?.[0];break;case 36:r=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join("");break;case 38:r=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(t)?.slice(1,6).join("");break;case 45:r=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join("");break;default:break}if(r){let n=new Uint8Array(16);for(let i=0;i<16;i+=4){let o=parseInt(r.substring(2*i,2*i+8),16);n[i+0]=o>>>24,n[i+1]=o>>>16,n[i+2]=o>>>8,n[i+3]=o}return new e(n)}throw new SyntaxError("could not parse UUID string")}toString(){let t="";for(let r=0;r<this.bytes.length;r++)t+=nqr.charAt(this.bytes[r]>>>4),t+=nqr.charAt(15&this.bytes[r]),(r===3||r===5||r===7||r===9)&&(t+="-");return t}toHex(){let t="";for(let r=0;r<this.bytes.length;r++)t+=nqr.charAt(this.bytes[r]>>>4),t+=nqr.charAt(15&this.bytes[r]);return t}toJSON(){return this.toString()}getVariant(){let t=this.bytes[8]>>>4;if(t<0)throw new Error("unreachable");if(t<=7)return this.bytes.every(r=>r===0)?"NIL":"VAR_0";if(t<=11)return"VAR_10";if(t<=13)return"VAR_110";if(t<=15)return this.bytes.every(r=>r===255)?"MAX":"VAR_RESERVED";throw new Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new e(this.bytes.slice(0))}equals(t){return this.compareTo(t)===0}compareTo(t){for(let r=0;r<16;r++){let n=this.bytes[r]-t.bytes[r];if(n!==0)return Math.sign(n)}return 0}},QSo=class{constructor(t){this.timestamp=0,this.counter=0,this.random=t??bVd()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(t,r){let n=this.generateOrAbortCore(t,r);return n===void 0&&(this.timestamp=0,n=this.generateOrAbortCore(t,r)),n}generateOrAbortCore(t,r){if(!Number.isInteger(t)||t<1||t>0xffffffffffff)throw new RangeError("`unixTsMs` must be a 48-bit positive integer");if(r<0||r>0xffffffffffff)throw new RangeError("`rollbackAllowance` out of reasonable range");if(t>this.timestamp)this.timestamp=t,this.resetCounter();else{if(!(t+r>=this.timestamp))return;this.counter++,this.counter>4398046511103&&(this.timestamp++,this.resetCounter())}return iqr.fromFieldsV7(this.timestamp,Math.trunc(this.counter/2**30),this.counter&2**30-1,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let t=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return t[6]=64|t[6]>>>4,t[8]=128|t[8]>>>2,iqr.ofInner(t)}},bVd=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),_Mc,ACe=()=>EVd().toString(),EVd=()=>(_Mc||(_Mc=new QSo)).generate();var lM=(function(e){return e.AnonymousId="anonymous_id",e.DistinctId="distinct_id",e.Props="props",e.EnablePersonProcessing="enable_person_processing",e.PersonMode="person_mode",e.FeatureFlagDetails="feature_flag_details",e.FeatureFlags="feature_flags",e.FeatureFlagPayloads="feature_flag_payloads",e.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",e.BootstrapFeatureFlags="bootstrap_feature_flags",e.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",e.OverrideFeatureFlags="override_feature_flags",e.Queue="queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionStartTimestamp="session_start_timestamp",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version",e.SessionReplay="session_replay",e.SurveyLastSeenDate="survey_last_seen_date",e.SurveysSeen="surveys_seen",e.Surveys="surveys",e.RemoteConfig="remote_config",e.FlagsEndpointWasHit="flags_endpoint_was_hit",e.DeviceId="device_id",e})({});var vVd=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],VMc=function(e,t=[]){if(!e)return!1;let r=e.toLowerCase();return vVd.concat(t).some(n=>{let i=n.toLowerCase();return r.indexOf(i)!==-1})};var CVd=Array.isArray,qMc=Object.prototype,FtE=qMc.hasOwnProperty,MSo=qMc.toString,LSo=CVd||function(e){return MSo.call(e)==="[object Array]"};var zSo=e=>e===Object(e)&&!LSo(e);var aVt=e=>e===void 0,cVt=e=>MSo.call(e)=="[object String]",GMc=e=>cVt(e)&&e.trim().length===0;var WMc=e=>MSo.call(e)=="[object Number]"&&e===e;var USo=e=>e instanceof Error;function oqr(e){return e===null||typeof e!="object"}function wze(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function HMc(e){return wze(e,"ErrorEvent")}function Jot(e){return typeof Event<"u"&&wVd(e,Event)}function KMc(e){return wze(e,"Object")}function wVd(e,t){try{return e instanceof t}catch{return!1}}function uVt(e,t,r,n,i){return t>r&&(n.warn("min cannot be greater than max."),t=r),WMc(e)?e>r?(n.warn(" cannot be greater than max: "+r+". Using max value instead."),r):e<t?(n.warn(" cannot be less than min: "+t+". Using min value instead."),t):e:(n.warn(" must be a number. using max or fallback. max: "+r+", fallback: "+i),uVt(i||r,t,r,n))}var xVd=864e5,sqr=class{constructor(t){this._buckets={},this._onBucketRateLimited=t._onBucketRateLimited,this._bucketSize=uVt(t.bucketSize,0,100,t._logger),this._refillRate=uVt(t.refillRate,0,this._bucketSize,t._logger),this._refillInterval=uVt(t.refillInterval,0,xVd,t._logger)}_applyRefill(t,r){let n=r-t.lastAccess,i=Math.floor(n/this._refillInterval);if(i>0){let o=i*this._refillRate;t.tokens=Math.min(t.tokens+o,this._bucketSize),t.lastAccess=t.lastAccess+i*this._refillInterval}}consumeRateLimit(t){let r=Date.now(),n=String(t),i=this._buckets[n];return i?this._applyRefill(i,r):(i={tokens:this._bucketSize,lastAccess:r},this._buckets[n]=i),i.tokens===0?!0:(i.tokens--,i.tokens===0&&this._onBucketRateLimited?.(t),i.tokens===0)}stop(){this._buckets={}}};var aqr=class{add(t){let r=ACe();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 SVd(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var JMc=(e,t,r)=>{function n(o,...s){t(()=>{let a=r[o];a(e,...s)})}return{info:(...o)=>{n("log",...o)},warn:(...o)=>{n("warn",...o)},error:(...o)=>{n("error",...o)},critical:(...o)=>{r.error(e,...o)},createLogger:o=>JMc(`${e} ${o}`,t,r)}},TVd=e=>e();function YMc(e,t=TVd){return JMc(e,t,SVd())}var Xot="Mobile",uqr="iOS",Yot="Android",XMc="Tablet",GtE=Yot+" "+XMc;var BVd="Apple",WtE=BVd+" Watch",ZMc="Safari",lqr="BlackBerry",$Mc="Samsung",OVd=$Mc+"Browser",PVd=$Mc+" Internet",pqr="Chrome",DVd=pqr+" OS",RVd=pqr+" "+uqr,e6c="Internet Explorer",FVd=e6c+" "+Xot,VSo="Opera",HtE=VSo+" Mini",t6c="Edge",kVd="Microsoft "+t6c,qSo="Firefox",NVd=qSo+" "+uqr,GSo="Nintendo",WSo="PlayStation",cqr="Xbox",jVd=Yot+" "+Xot,QVd=Xot+" "+ZMc,lVt="Windows",MVd=lVt+" Phone";var r6c="Generic",KtE=r6c+" "+Xot.toLowerCase(),JtE=r6c+" "+XMc.toLowerCase(),LVd="Konqueror",D2="(\\d+(\\.\\d+)?)",_So=new RegExp("Version/"+D2),YtE=new RegExp(cqr,"i"),XtE=new RegExp(WSo+" \\w+","i"),ZtE=new RegExp(GSo+" \\w+","i"),zVd=new RegExp(lqr+"|PlayBook|BB10","i"),UVd={"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 $tE={[FVd]:[new RegExp("rv:"+D2)],[kVd]:[new RegExp(t6c+"?\\/"+D2)],[pqr]:[new RegExp("("+pqr+"|CrMo)\\/"+D2)],[RVd]:[new RegExp("CriOS\\/"+D2)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+D2)],[ZMc]:[_So],[QVd]:[_So],[VSo]:[new RegExp("("+VSo+"|OPR)\\/"+D2)],[qSo]:[new RegExp(qSo+"\\/"+D2)],[NVd]:[new RegExp("FxiOS\\/"+D2)],[LVd]:[new RegExp("Konqueror[:/]?"+D2,"i")],[lqr]:[new RegExp(lqr+" "+D2),_So],[jVd]:[new RegExp("android\\s"+D2,"i")],[PVd]:[new RegExp(OVd+"\\/"+D2)],[e6c]:[new RegExp("(rv:|MSIE )"+D2)],Mozilla:[new RegExp("rv:"+D2)]};var erE=[[new RegExp(cqr+"; "+cqr+" (.*?)[);]","i"),e=>[cqr,e&&e[1]||""]],[new RegExp(GSo,"i"),[GSo,""]],[new RegExp(WSo,"i"),[WSo,""]],[zVd,[lqr,""]],[new RegExp(lVt,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[MVd,""];if(new RegExp(Xot).test(t)&&!/IEMobile\b/.test(t))return[lVt+" "+Xot,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let n=r[1],i=UVd[n]||"";return/arm/i.test(t)&&(i="RT"),[lVt,i]}return[lVt,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,e=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[uqr,t.join(".")]}return[uqr,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,e=>{let t="";return e&&e.length>=3&&(t=aVt(e[2])?e[3]:e[2]),["watchOS",t]}],[new RegExp("("+Yot+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Yot+")","i"),e=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[Yot,t.join(".")]}return[Yot,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,e=>{let t=["Mac OS X",""];if(e&&e[1]){let r=[e[1],e[2],e[3]||"0"];t[1]=r.join(".")}return t}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[DVd,""]],[/Linux|debian/i,["Linux",""]]];var n6c="utf8";function i6c(e,t){if(!e||typeof e!="string"||_Vd(e))throw new Error(t)}function _Vd(e){return e.trim().length===0}function o6c(e){return e?.replace(/\/+$/,"")}async function s6c(e,t){let r=null;for(let n=0;n<t.retryCount+1;n++){n>0&&await new Promise(i=>setTimeout(i,t.retryDelay));try{return await e()}catch(i){if(r=i,!t.retryCheck(i))throw i}}throw r}function fqr(){return new Date().toISOString()}function Nfe(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}var a6c=e=>e instanceof Error;function HSo(e){return Promise.all(e.map(t=>(t??Promise.resolve()).then(r=>({status:"fulfilled",value:r}),r=>({status:"rejected",reason:r}))))}var dqr=class{constructor(){this.events={},this.events={}}on(t,r){return this.events[t]||(this.events[t]=[]),this.events[t].push(r),()=>{this.events[t]=this.events[t].filter(n=>n!==r)}}emit(t,r){for(let n of this.events[t]||[])n(r);for(let n of this.events["*"]||[])n(t,r)}};var xze=class extends Error{constructor(t,r){super("HTTP error while fetching PostHog: status="+t.status+", reqByteLength="+r),this.response=t,this.reqByteLength=r,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}},Zot=class extends Error{constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};async function c6c(e){if(e instanceof xze){let t="";try{t=await e.text}catch{}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error("Error while flushing PostHog",e);return Promise.resolve()}function KSo(e){return typeof e=="object"&&(e instanceof xze||e instanceof Zot)}function u6c(e){return typeof e=="object"&&e instanceof xze&&e.status===413}var pVt=class{constructor(t,r={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new aqr,this._events=new dqr,this._isInitialized=!1,i6c(t,"You must pass your PostHog project's api key."),this.apiKey=t,this.host=o6c(r.host||"https://us.i.posthog.com"),this.flushAt=r.flushAt?Math.max(r.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,r.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,r.maxQueueSize??1e3),this.flushInterval=r.flushInterval??1e4,this.preloadFeatureFlags=r.preloadFeatureFlags??!0,this.defaultOptIn=r.defaultOptIn??!0,this.disableSurveys=r.disableSurveys??!1,this._retryOptions={retryCount:r.fetchRetryCount??3,retryDelay:r.fetchRetryDelay??3e3,retryCheck:KSo},this.requestTimeout=r.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=r.featureFlagsRequestTimeoutMs??3e3,this.remoteConfigRequestTimeoutMs=r.remoteConfigRequestTimeoutMs??3e3,this.disableGeoip=r.disableGeoip??!0,this.disabled=r.disabled??!1,this.historicalMigration=r?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this._logger=YMc("[PostHog]",this.logMsgIfDebug.bind(this)),this.evaluationContexts=r?.evaluationContexts??r?.evaluationEnvironments,r?.evaluationEnvironments&&!r?.evaluationContexts&&this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version."),this.disableCompression=!UMc()||(r?.disableCompression??!1)}logMsgIfDebug(t){this.isDebug&&t()}wrap(t){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return t();this._initPromise.then(()=>t())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(lM.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(lM.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(lM.OptedOut,!0)})}on(t,r){return this._events.on(t,r)}debug(t=!0){if(this.removeDebugCallback?.(),t){let r=this.on("*",(n,i)=>this._logger.info(n,i));this.removeDebugCallback=()=>{r(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(t){return{distinct_id:t.distinct_id,event:t.event,properties:{...t.properties||{},...this.getCommonEventProperties()}}}addPendingPromise(t){return this.promiseQueue.add(t)}identifyStateless(t,r,n){this.wrap(()=>{let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};this.enqueue("identify",i,n)})}async identifyStatelessImmediate(t,r,n){let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};await this.sendImmediate("identify",i,n)}captureStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({distinct_id:t,event:r,properties:n});this.enqueue("capture",o,i)})}async captureStatelessImmediate(t,r,n,i){let o=this.buildPayload({distinct_id:t,event:r,properties:n});await this.sendImmediate("capture",o,i)}aliasStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});this.enqueue("alias",o,i)})}async aliasStatelessImmediate(t,r,n,i){let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});await this.sendImmediate("alias",o,i)}groupIdentifyStateless(t,r,n,i,o,s){this.wrap(()=>{let a=this.buildPayload({distinct_id:o||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{},...s||{}}});this.enqueue("capture",a,i)})}async getRemoteConfig(){await this._initPromise;let t=this.host;t==="https://us.i.posthog.com"?t="https://us-assets.i.posthog.com":t==="https://eu.i.posthog.com"&&(t="https://eu-assets.i.posthog.com");let r=`${t}/array/${this.apiKey}/config`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(r,n,{retryCount:0},this.remoteConfigRequestTimeoutMs).then(i=>i.json()).catch(i=>{this._logger.error("Remote config could not be loaded",i),this._events.emit("error",i)})}async getFlags(t,r={},n={},i={},o={},s=!1){await this._initPromise;let a=s?"&config=true":"",c=`${this.host}/flags/?v=2${a}`,u={token:this.apiKey,distinct_id:t,groups:r,person_properties:n,group_properties:i,...o};this.evaluationContexts&&this.evaluationContexts.length>0&&(u.evaluation_contexts=this.evaluationContexts);let l={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(u)};return this._logger.info("Flags URL",c),this.fetchWithRetry(c,l,{retryCount:0},this.featureFlagsRequestTimeoutMs).then(p=>p.json()).then(p=>({success:!0,response:NSo(p)})).catch(p=>(this._events.emit("error",p),{success:!1,error:this.categorizeRequestError(p)}))}categorizeRequestError(t){if(t instanceof xze)return{type:"api_error",statusCode:t.status};if(t instanceof Zot){let r=t.error;return r instanceof Error&&(r.name==="AbortError"||r.name==="TimeoutError")?{type:"timeout"}:{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagDetailStateless(t,r,n,i,o,s);if(a===void 0)return{response:void 0,requestId:void 0};let c=sVt(a.response);return c===void 0&&(c=!1),{response:c,requestId:a.requestId}}async getFeatureFlagDetailStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagDetailsStateless(r,n,i,o,s,[t]);return a===void 0?void 0:{response:a.flags[t],requestId:a.requestId,evaluatedAt:a.evaluatedAt}}async getFeatureFlagPayloadStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagPayloadsStateless(r,n,i,o,s,[t]);if(!a)return;let c=a[t];return c===void 0?null:c}async getFeatureFlagPayloadsStateless(t,r={},n={},i={},o,s){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o,s)).payloads}async getFeatureFlagsStateless(t,r={},n={},i={},o,s){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o,s)}async getFeatureFlagsAndPayloadsStateless(t,r={},n={},i={},o,s){await this._initPromise;let a=await this.getFeatureFlagDetailsStateless(t,r,n,i,o,s);return a?{flags:a.featureFlags,payloads:a.featureFlagPayloads,requestId:a.requestId}:{flags:void 0,payloads:void 0,requestId:void 0}}async getFeatureFlagDetailsStateless(t,r={},n={},i={},o,s){await this._initPromise;let a={};(o??this.disableGeoip)&&(a.geoip_disable=!0),s&&(a.flag_keys_to_evaluate=s);let c=await this.getFlags(t,r,n,i,a);if(!c.success)return;let u=c.response;return u.errorsWhileComputingFlags&&console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices"),u.quotaLimited?.includes("feature_flags")?(console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:u?.requestId,quotaLimited:u.quotaLimited}):u}async getSurveysStateless(){if(await this._initPromise,this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let t=`${this.host}/api/surveys/?token=${this.apiKey}`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},i=(await this.fetchWithRetry(t,r).then(o=>{if(o.status!==200||!o.json){let s=`Surveys API could not be loaded: ${o.status}`,a=new Error(s);this._logger.error(a),this._events.emit("error",new Error(s));return}return o.json()}).catch(o=>{this._logger.error("Surveys API could not be loaded",o),this._events.emit("error",o)}))?.surveys;return i&&this._logger.info("Surveys fetched from API: ",JSON.stringify(i)),i??[]}get props(){return this._props||(this._props=this.getPersistedProperty(lM.Props)),this._props||{}}set props(t){this._props=t}async register(t){this.wrap(()=>{this.props={...this.props,...t},this.setPersistedProperty(lM.Props,this.props)})}async unregister(t){this.wrap(()=>{delete this.props[t],this.setPersistedProperty(lM.Props,this.props)})}processBeforeEnqueue(t){return t}async flushStorage(){}enqueue(t,r,n){this.wrap(()=>{if(this.optedOut)return void this._events.emit(t,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let i=this.prepareMessage(t,r,n);if(i=this.processBeforeEnqueue(i),i===null)return;let o=this.getPersistedProperty(lM.Queue)||[];o.length>=this.maxQueueSize&&(o.shift(),this._logger.info("Queue is full, the oldest event is dropped.")),o.push({message:i}),this.setPersistedProperty(lM.Queue,o),this._events.emit(t,i),o.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=Nfe(()=>this.flushBackground(),this.flushInterval))})}async sendImmediate(t,r,n){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized||await this._initPromise,this.optedOut)return void this._events.emit(t,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let i=this.prepareMessage(t,r,n);if(i=this.processBeforeEnqueue(i),i===null)return;let o={api_key:this.apiKey,batch:[i],sent_at:fqr()};this.historicalMigration&&(o.historical_migration=!0);let s=JSON.stringify(o),a=`${this.host}/batch/`,c=this.disableCompression?null:await rqr(s,this.isDebug),u={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...c!==null&&{"Content-Encoding":"gzip"}},body:c||s};try{await this.fetchWithRetry(a,u)}catch(l){this._events.emit("error",l)}}prepareMessage(t,r,n){let i={...r,type:t,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:n?.timestamp?n?.timestamp:fqr(),uuid:n?.uuid?n.uuid:ACe()};return(n?.disableGeoip??this.disableGeoip)&&(i.properties||(i.properties={}),i.properties.$geoip_disable=!0),i.distinctId&&(i.distinct_id=i.distinctId,delete i.distinctId),i}clearFlushTimer(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=void 0)}flushBackground(){this.flush().catch(async t=>{await c6c(t)})}async flush(){let t=HSo([this.flushPromise]).then(()=>this._flush());return this.flushPromise=t,this.addPendingPromise(t),HSo([t]).then(()=>{this.flushPromise===t&&(this.flushPromise=null)}),t}getCustomHeaders(){let t=this.getCustomUserAgent(),r={};return t&&t!==""&&(r["User-Agent"]=t),r}async _flush(){this.clearFlushTimer(),await this._initPromise;let t=this.getPersistedProperty(lM.Queue)||[];if(!t.length)return;let r=[],n=t.length;for(;t.length>0&&r.length<n;){let i=t.slice(0,this.maxBatchSize),o=i.map(f=>f.message),s=async()=>{let m=(this.getPersistedProperty(lM.Queue)||[]).slice(i.length);this.setPersistedProperty(lM.Queue,m),t=m,await this.flushStorage()},a={api_key:this.apiKey,batch:o,sent_at:fqr()};this.historicalMigration&&(a.historical_migration=!0);let c=JSON.stringify(a),u=`${this.host}/batch/`,l=this.disableCompression?null:await rqr(c,this.isDebug),p={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...l!==null&&{"Content-Encoding":"gzip"}},body:l||c},d={retryCheck:f=>u6c(f)?!1:KSo(f)};try{await this.fetchWithRetry(u,p,d)}catch(f){if(u6c(f)&&o.length>1){this.maxBatchSize=Math.max(1,Math.floor(o.length/2)),this._logger.warn(`Received 413 when sending batch of size ${o.length}, reducing batch size to ${this.maxBatchSize}`);continue}throw f instanceof Zot||await s(),this._events.emit("error",f),f}await s(),r.push(...o)}this._events.emit("flush",r)}async fetchWithRetry(t,r,n,i){let o=r.body?r.body:"",s=-1;try{s=o instanceof Blob?o.size:Buffer.byteLength(o,n6c)}catch{o instanceof Blob?s=o.size:s=new TextEncoder().encode(o).length}return await s6c(async()=>{let a=new AbortController,c=i??this.requestTimeout,u=Nfe(()=>a.abort(),c),l=null;try{l=await this.fetch(t,{signal:a.signal,...r})}catch(d){throw new Zot(d)}finally{clearTimeout(u)}if(!(r.mode==="no-cors")&&(l.status<200||l.status>=400))throw new xze(l,s);return l},{...this._retryOptions,...n})}async _shutdown(t=3e4){await this._initPromise;let r=!1;this.clearFlushTimer();let n=async()=>{try{for(await this.promiseQueue.join();!((this.getPersistedProperty(lM.Queue)||[]).length===0||(await this.flush(),r)););}catch(o){if(!KSo(o))throw o;await c6c(o)}},i;try{return await Promise.race([new Promise((o,s)=>{i=Nfe(()=>{this._logger.error("Timed out while shutting down PostHog"),r=!0,s("Timeout while shutting down PostHog. Some events may not have been sent.")},t)}),n()])}finally{clearTimeout(i)}}async shutdown(t=3e4){return this.shutdownPromise?this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup"):this.shutdownPromise=this._shutdown(t).finally(()=>{this.shutdownPromise=null}),this.shutdownPromise}};var pM={};te(pM,{DOMExceptionCoercer:()=>ZSo,ErrorCoercer:()=>$So,ErrorEventCoercer:()=>e1o,ErrorPropertiesBuilder:()=>JSo,EventCoercer:()=>n1o,ObjectCoercer:()=>r1o,PrimitiveCoercer:()=>i1o,PromiseRejectionEventCoercer:()=>o1o,ReduceableCache:()=>s1o,StringCoercer:()=>t1o,chromeStackLineParser:()=>YSo,createDefaultStackParser:()=>n5d,createStackParser:()=>E6c,geckoStackLineParser:()=>XSo,nodeStackLineParser:()=>g6c,opera10StackLineParser:()=>d6c,opera11StackLineParser:()=>m6c,reverseAndStripFrames:()=>b6c,winjsStackLineParser:()=>f6c});var mqr,l6c,hqr;function p6c(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);return hqr&&r.length===l6c||(l6c=r.length,hqr=r.reduce((n,i)=>{mqr||(mqr={});let o=mqr[i];if(o)n[o[0]]=o[1];else{let s=e(i);for(let a=s.length-1;a>=0;a--){let u=s[a]?.filename,l=t[i];if(u&&l){n[u]=l,mqr[i]=[u,l];break}}}return n},{})),hqr}var qVd=4,JSo=class{constructor(t,r,n=[]){this.coercers=t,this.stackParser=r,this.modifiers=n}buildFromUnknown(t,r={}){let i=r&&r.mechanism||{handled:!0,type:"generic"},s=this.buildCoercingContext(i,r,0).apply(t),a=this.buildParsingContext(r),c=this.parseStacktrace(s,a);return{$exception_list:this.convertToExceptionList(c,i),$exception_level:"error"}}async modifyFrames(t){for(let r of t)r.stacktrace&&r.stacktrace.frames&&LSo(r.stacktrace.frames)&&(r.stacktrace.frames=await this.applyModifiers(r.stacktrace.frames));return t}coerceFallback(t){return{type:"Error",value:"Unknown error",stack:t.syntheticException?.stack,synthetic:!0}}parseStacktrace(t,r){let n;t.cause!=null&&(n=this.parseStacktrace(t.cause,r));let i;return t.stack!=""&&t.stack!=null&&(i=this.applyChunkIds(this.stackParser(t.stack,t.synthetic?r.skipFirstLines:0),r.chunkIdMap)),{...t,cause:n,stack:i}}applyChunkIds(t,r){return t.map(n=>(n.filename&&r&&(n.chunk_id=r[n.filename]),n))}applyCoercers(t,r){for(let n of this.coercers)if(n.match(t))return n.coerce(t,r);return this.coerceFallback(r)}async applyModifiers(t){let r=t;for(let n of this.modifiers)r=await n(r);return r}convertToExceptionList(t,r){let n={type:t.type,value:t.value,mechanism:{type:r.type??"generic",handled:r.handled??!0,synthetic:t.synthetic??!1}};t.stack&&(n.stacktrace={type:"raw",frames:t.stack});let i=[n];return t.cause!=null&&i.push(...this.convertToExceptionList(t.cause,{...r,handled:!0})),i}buildParsingContext(t){return{chunkIdMap:p6c(this.stackParser),skipFirstLines:t.skipFirstLines??1}}buildCoercingContext(t,r,n=0){let i=(s,a)=>{if(a<=qVd){let c=this.buildCoercingContext(t,r,a);return this.applyCoercers(s,c)}};return{...r,syntheticException:n==0?r.syntheticException:void 0,mechanism:t,apply:s=>i(s,n),next:s=>i(s,n+1)}}};var JO="?";function Aee(e,t,r,n,i){let o={platform:e,filename:t,function:r==="<anonymous>"?JO:r,in_app:!0};return aVt(n)||(o.lineno=n),aVt(i)||(o.colno=i),o}var gqr=(e,t)=>{let r=e.indexOf("safari-extension")!==-1,n=e.indexOf("safari-web-extension")!==-1;return r||n?[e.indexOf("@")!==-1?e.split("@")[0]:JO,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var GVd=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,WVd=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,HVd=/\((\S*)(?::(\d+))(?::(\d+))\)/,YSo=(e,t)=>{let r=GVd.exec(e);if(r){let[,i,o,s]=r;return Aee(t,i,JO,+o,+s)}let n=WVd.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let a=HVd.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}let[o,s]=gqr(n[1]||JO,n[2]);return Aee(t,s,o,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var KVd=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,JVd=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,XSo=(e,t)=>{let r=KVd.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let s=JVd.exec(r[3]);s&&(r[1]=r[1]||"eval",r[3]=s[1],r[4]=s[2],r[5]="")}let i=r[3],o=r[1]||JO;return[o,i]=gqr(o,i),Aee(t,i,o,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var YVd=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,f6c=(e,t)=>{let r=YVd.exec(e);return r?Aee(t,r[2],r[1]||JO,+r[3],r[4]?+r[4]:void 0):void 0};var XVd=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,d6c=(e,t)=>{let r=XVd.exec(e);return r?Aee(t,r[2],r[3]||JO,+r[1]):void 0},ZVd=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,m6c=(e,t)=>{let r=ZVd.exec(e);return r?Aee(t,r[5],r[3]||r[4]||JO,+r[1],+r[2]):void 0};var $Vd=/^\s*[-]{4,}$/,e5d=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,g6c=(e,t)=>{let r=e.match(e5d);if(r){let n,i,o,s,a;if(r[1]){o=r[1];let l=o.lastIndexOf(".");if(o[l-1]==="."&&l--,l>0){n=o.slice(0,l),i=o.slice(l+1);let p=n.indexOf(".Module");p>0&&(o=o.slice(p+1),n=n.slice(0,p))}s=void 0}i&&(s=n,a=i),i==="<anonymous>"&&(a=void 0,o=void 0),o===void 0&&(a=a||JO,o=s?`${s}.${a}`:a);let c=r[2]?.startsWith("file://")?r[2].slice(7):r[2],u=r[5]==="native";return c?.match(/\/[A-Z]:/)&&(c=c.slice(1)),!c&&r[5]&&!u&&(c=r[5]),{filename:c?decodeURI(c):void 0,module:void 0,function:o,lineno:h6c(r[3]),colno:h6c(r[4]),in_app:t5d(c||"",u),platform:t}}if(e.match($Vd))return{filename:e,platform:t}};function t5d(e,t=!1){return!(t||e&&!e.startsWith("/")&&!e.match(/^[A-Z]:/)&&!e.startsWith(".")&&!e.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&e!==void 0&&!e.includes("node_modules/")}function h6c(e){return parseInt(e||"",10)||void 0}var A6c=/\(error: (.*)\)/,y6c=50;function b6c(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,y6c).map(r=>({...r,filename:r.filename||r5d(t).filename,function:r.function||JO}))}function r5d(e){return e[e.length-1]||{}}function n5d(){return E6c("web:javascript",YSo,XSo)}function E6c(e,...t){return(r,n=0)=>{let i=[],o=r.split(`
|
|
3225
|
-
`);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=A6c.test(a)?a.replace(A6c,"$1"):a;if(!c.match(/\S*Error: /)){for(let u of t){let l=u(c,e);if(l){i.push(l);break}}if(i.length>=y6c)break}}return b6c(i)}}var ZSo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=cVt(t.stack);return{type:this.getType(t),value:this.getValue(t),stack:n?t.stack:void 0,cause:t.cause?r.next(t.cause):void 0,synthetic:!1}}getType(t){return this.isDOMError(t)?"DOMError":"DOMException"}getValue(t){let r=t.name||(this.isDOMError(t)?"DOMError":"DOMException");return t.message?`${r}: ${t.message}`:r}isDOMException(t){return wze(t,"DOMException")}isDOMError(t){return wze(t,"DOMError")}};var $So=class{match(t){return USo(t)}coerce(t,r){return{type:this.getType(t),value:this.getMessage(t,r),stack:this.getStack(t),cause:t.cause?r.next(t.cause):void 0,synthetic:!1}}getType(t){return t.name||t.constructor.name}getMessage(t,r){let n=t.message;return n.error&&typeof n.error.message=="string"?String(n.error.message):String(n)}getStack(t){return t.stacktrace||t.stack||void 0}};var e1o=class{constructor(){}match(t){return HMc(t)&&t.error!=null}coerce(t,r){let n=r.apply(t.error);return n||{type:"ErrorEvent",value:t.message,stack:r.syntheticException?.stack,synthetic:!0}}};var i5d=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,t1o=class{match(t){return typeof t=="string"}coerce(t,r){let[n,i]=this.getInfos(t);return{type:n??"Error",value:i??t,stack:r.syntheticException?.stack,synthetic:!0}}getInfos(t){let r="Error",n=t,i=t.match(i5d);return i&&(r=i[1],n=i[2]),[r,n]}};var v6c=["fatal","error","warning","log","info","debug"];function Aqr(e,t=40){let r=Object.keys(e);if(r.sort(),!r.length)return"[object has no keys]";for(let n=r.length;n>0;n--){let i=r.slice(0,n).join(", ");if(!(i.length>t))return n===r.length||i.length<=t?i:`${i.slice(0,t)}...`}return""}var r1o=class{match(t){return typeof t=="object"&&t!==null}coerce(t,r){let n=this.getErrorPropertyFromObject(t);return n?r.apply(n):{type:this.getType(t),value:this.getValue(t),stack:r.syntheticException?.stack,level:this.isSeverityLevel(t.level)?t.level:"error",synthetic:!0}}getType(t){return Jot(t)?t.constructor.name:"Error"}getValue(t){if("name"in t&&typeof t.name=="string"){let i=`'${t.name}' captured as exception`;return"message"in t&&typeof t.message=="string"&&(i+=` with message: '${t.message}'`),i}if("message"in t&&typeof t.message=="string")return t.message;let r=this.getObjectClassName(t),n=Aqr(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return cVt(t)&&!GMc(t)&&v6c.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(a6c(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var n1o=class{match(t){return Jot(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${Aqr(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var i1o=class{match(t){return oqr(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var o1o=class{match(t){return wze(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!Jot(t))return!1;try{let r=t.detail;return r!=null&&typeof r=="object"&&"reason"in r}catch{return!1}}coerce(t,r){let n=this.getUnhandledRejectionReason(t);return oqr(n)?{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(n)}`,stack:r.syntheticException?.stack,synthetic:!0}:r.apply(n)}getUnhandledRejectionReason(t){try{if("reason"in t)return t.reason;if("detail"in t&&t.detail!=null&&typeof t.detail=="object"&&"reason"in t.detail)return t.detail.reason}catch{}return t}};var s1o=class{constructor(t){this._maxSize=t,this._cache=new Map}get(t){let r=this._cache.get(t);if(r!==void 0)return this._cache.delete(t),this._cache.set(t,r),r}set(t,r){this._cache.set(t,r)}reduce(){for(;this._cache.size>=this._maxSize;){let t=this._cache.keys().next().value;t&&this._cache.delete(t)}}};var w6c=require("fs"),x6c=require("readline"),yqr=new pM.ReduceableCache(25),S6c=new pM.ReduceableCache(20),a1o=7,o5d=1e3,s5d=1e4;async function T6c(e){let t={};for(let i=e.length-1;i>=0;i--){let o=e[i],s=o?.filename;if(!o||typeof s!="string"||typeof o.lineno!="number"||l5d(s)||p5d(o))continue;t[s]||(t[s]=[]),t[s].push(o.lineno)}let r=Object.keys(t);if(r.length==0)return e;let n=[];for(let i of r){if(S6c.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=d5d(o);if(s.every(c=>f5d(i,c)))continue;let a=m5d(yqr,i,{});n.push(a5d(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&c5d(e,yqr),yqr.reduce(),e}function a5d(e,t,r){return new Promise(n=>{let i=(0,w6c.createReadStream)(e),o=(0,x6c.createInterface)({input:i});function s(){i.destroy(),n()}let a=0,c=0,u=t[c];if(u===void 0)return void s();let l=u[0],p=u[1];function d(){S6c.set(e,1),o.close(),o.removeAllListeners(),s()}i.on("error",d),o.on("error",d),o.on("close",s),o.on("line",f=>{if(a++,!(a<l)&&(r[a]=h5d(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 c5d(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;u5d(r.lineno,r,n)}}function u5d(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=B6c(e);i<e;i++){let o=r[i];if(o===void 0)return void I6c(t);t.pre_context.push(o)}if(r[e]===void 0)return void I6c(t);t.context_line=r[e];let n=O6c(e);t.post_context=[];for(let i=e+1;i<=n;i++){let o=r[i];if(o===void 0)break;t.post_context.push(o)}}function I6c(e){delete e.pre_context,delete e.context_line,delete e.post_context}function l5d(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function p5d(e){return e.lineno!==void 0&&e.lineno>s5d||e.colno!==void 0&&e.colno>o5d}function f5d(e,t){let r=yqr.get(e);if(r===void 0)return!1;for(let n=t[0];n<=t[1];n++)if(r[n]===void 0)return!1;return!0}function d5d(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=C6c(r),i=[];for(;;){if(t===e.length-1){i.push(n);break}let o=e[t+1];if(typeof o!="number")break;o<=n[1]?n[1]=o+a1o:(i.push(n),n=C6c(o)),t++}return i}function C6c(e){return[B6c(e),O6c(e)]}function B6c(e){return Math.max(1,e-a1o)}function O6c(e){return e+a1o}function m5d(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function h5d(e,t){let r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);let i=Math.max(t-60,0);i<5&&(i=0);let o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r=`...${r}`),o<n&&(r+="..."),r}function g5d(e,t){let r=!1;return Object.assign(n=>{let o=global.process.listeners("uncaughtException").filter(s=>s.name!=="domainUncaughtExceptionClear"&&s._posthogErrorHandler!==!0).length===0;e(n,{mechanism:{type:"onuncaughtexception",handled:!1}}),!r&&o&&(r=!0,t(n))},{_posthogErrorHandler:!0})}function P6c(e,t){globalThis.process?.on("uncaughtException",g5d(e,t))}function D6c(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var A5d=2e3,gH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new sqr({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return zSo(t)&&"__posthog_previously_captured_error"in t&&t.__posthog_previously_captured_error===!0}static async buildEventMessage(t,r,n,i){let o={...i},s=this.errorPropertiesBuilder.buildFromUnknown(t,r);return s.$exception_list=await this.errorPropertiesBuilder.modifyFrames(s.$exception_list),{event:"$exception",distinctId:n,properties:{...s,...o},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){this.isEnabled()&&(P6c(this.onException.bind(this),this.onFatalError.bind(this)),D6c(this.onException.bind(this)))}onException(t,r){this.client.addPendingPromise((async()=>{if(!e.isPreviouslyCapturedError(t)){let n=await e.buildEventMessage(t,r),o=n.properties?.$exception_list[0]?.type??"Exception";return this._rateLimiter.consumeRateLimit(o)?void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:o}):this.client.capture(n)}})())}async onFatalError(t){console.error(t),await this.client.shutdown(A5d),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var R6c="5.29.1";var fVt={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};async function F6c(e){let t=globalThis.crypto?.subtle;if(!t)throw new Error("SubtleCrypto API not available");let r=await t.digest("SHA-1",new TextEncoder().encode(e));return Array.from(new Uint8Array(r)).map(i=>i.toString(16).padStart(2,"0")).join("")}var y5d=6e4,b5d=1152921504606847e3,E5d=["is_not"],$ot=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},Gd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},yee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},bqr=class{constructor({pollingInterval:t,personalApiKey:r,projectApiKey:n,timeout:i,host:o,customHeaders:s,...a}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=t,this.personalApiKey=r,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=i,this.projectApiKey=n,this.host=o,this.poller=void 0,this.fetch=a.fetch||fetch,this.onError=a.onError,this.customHeaders=s,this.onLoad=a.onLoad,this.cacheProvider=a.cacheProvider,this.strictLocalEvaluation=a.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(t=!0){this.debugMode=t}logMsgIfDebug(t){this.debugMode&&t()}createEvaluationContext(t,r={},n={},i={},o={}){return{distinctId:t,groups:r,personProperties:n,groupProperties:i,evaluationCache:o}}async getFeatureFlag(t,r,n={},i={},o={}){await this.loadFeatureFlags();let s,a;if(!this.loadedSuccessfullyOnce)return s;if(a=this.featureFlagsByKey[t],a!==void 0){let c=this.createEvaluationContext(r,n,i,o);try{s=(await this.computeFlagAndPayloadLocally(a,c)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${t} -> ${s}`))}catch(u){u instanceof yee||u instanceof Gd?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${t}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${t}: ${u}`))}}return s}async getAllFlagsAndPayloads(t,r){await this.loadFeatureFlags();let n={},i={},o=this.featureFlags.length==0,s=r?r.map(c=>this.featureFlagsByKey[c]).filter(Boolean):this.featureFlags,a={...t,evaluationCache:t.evaluationCache??{}};return await Promise.all(s.map(async c=>{try{let{value:u,payload:l}=await this.computeFlagAndPayloadLocally(c,a);n[c.key]=u,l&&(i[c.key]=l)}catch(u){u instanceof yee||u instanceof Gd?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${c.key}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${c.key}: ${u}`)),o=!0}})),{response:n,payloads:i,fallbackToFlags:o}}async computeFlagAndPayloadLocally(t,r,n={}){let{matchValue:i,skipLoadCheck:o=!1}=n;if(o||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=i!==void 0?i:await this.computeFlagValueLocally(t,r);let a=this.getFeatureFlagPayload(t.key,s);return{value:s,payload:a}}async computeFlagValueLocally(t,r){let{distinctId:n,groups:i,personProperties:o,groupProperties:s}=r;if(t.ensure_experience_continuity)throw new Gd("Flag has experience continuity enabled");if(!t.active)return!1;let c=(t.filters||{}).aggregation_group_type_index;if(c!=null){let u=this.groupTypeMapping[String(c)];if(!u)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${c} for feature flag ${t.key}`)),new Gd("Flag has unknown group type index");if(!(u in i))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${t.key} without group names passed in`)),!1;t.bucketing_identifier==="device_id"&&(o?.$device_id===void 0||o?.$device_id===null||o?.$device_id==="")&&this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${t.key}`));let l=s[u];return await this.matchFeatureFlagProperties(t,i[u],l,r)}{let u=this.getBucketingValueForFlag(t,n,o);if(u===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${t.key} without $device_id, falling back to server evaluation`)),new Gd(`Can't compute feature flag: ${t.key} without $device_id`);return await this.matchFeatureFlagProperties(t,u,o,r)}}getBucketingValueForFlag(t,r,n){if(t.filters?.aggregation_group_type_index!=null)return r;if(t.bucketing_identifier==="device_id"){let i=n?.$device_id;return i==null||i===""?void 0:i}return r}getFeatureFlagPayload(t,r){let n=null;if(r!==!1&&r!=null&&(typeof r=="boolean"?n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r.toString()]||null:typeof r=="string"&&(n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r]||null),n!=null)){if(typeof n=="object")return n;if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}return null}async evaluateFlagDependency(t,r,n){let{evaluationCache:i}=n,o=t.key;if(!this.featureFlagsByKey)throw new Gd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Gd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Gd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Gd(`Circular dependency detected for flag '${o}' (empty dependency chain)`);for(let c of s){if(!(c in i)){let l=this.featureFlagsByKey[c];if(l)if(l.active)try{let p=await this.computeFlagValueLocally(l,n);i[c]=p}catch(p){throw new Gd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new Gd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Gd(`Dependency '${c}' could not be evaluated`)}let a=i[o];return this.flagEvaluatesToExpectedValue(t.value,a)}flagEvaluatesToExpectedValue(t,r){return typeof t=="boolean"?t===r||typeof r=="string"&&r!==""&&t===!0:typeof t=="string"?r===t:!1}async matchFeatureFlagProperties(t,r,n,i){let o=t.filters||{},s=o.groups||[],a=!1,c;for(let u of s)try{if(await this.isConditionMatch(t,r,u,n,i)){let l=u.variant,p=o.multivariate?.variants||[];c=l&&p.some(d=>d.key===l)?l:await this.getMatchingVariant(t,r)||!0;break}}catch(l){if(l instanceof yee)throw l;if(l instanceof Gd)a=!0;else throw l}if(c!==void 0)return c;if(a)throw new Gd("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(t,r,n,i,o){let s=n.rollout_percentage,a=c=>{this.logMsgIfDebug(()=>console.warn(c))};if((n.properties||[]).length>0){for(let c of n.properties){let u=c.type,l=!1;if(l=u==="cohort"?M6c(c,i,this.cohorts,this.debugMode):u==="flag"?await this.evaluateFlagDependency(c,i,o):Q6c(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await k6c(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await k6c(t.key,r,"variant"),i=this.variantLookupTable(t).find(o=>n>=o.valueMin&&n<o.valueMax);if(i)return i.key}variantLookupTable(t){let r=[],n=0,i=0;return((t.filters||{}).multivariate?.variants||[]).forEach(a=>{i=n+a.rollout_percentage/100,r.push({valueMin:n,valueMax:i,key:a.key}),n=i}),r}updateFlagState(t){this.featureFlags=t.flags,this.featureFlagsByKey=t.flags.reduce((r,n)=>(r[n.key]=n,r),{}),this.groupTypeMapping=t.groupTypeMapping,this.cohorts=t.cohorts,this.loadedSuccessfullyOnce=!0}warnAboutExperienceContinuityFlags(t){if(this.strictLocalEvaluation)return;let r=t.filter(n=>n.ensure_experience_continuity);r.length>0&&console.warn(`[PostHog] You are using local evaluation but ${r.length} flag(s) have experience continuity enabled: ${r.map(n=>n.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(t){if(!this.cacheProvider)return!1;try{let r=await this.cacheProvider.getFlagDefinitions();return r?(this.updateFlagState(r),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${t} (${r.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(r.flags),!0):!1}catch(r){return this.onError?.(new Error(`Failed to load from cache: ${r}`)),!1}}async loadFeatureFlags(t=!1){if(!(this.loadedSuccessfullyOnce&&!t))return!t&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt?void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period")):(this.loadingPromise||(this.loadingPromise=this._loadFeatureFlags().catch(r=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${r}`))).finally(()=>{this.loadingPromise=void 0})),this.loadingPromise)}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){return this.shouldBeginExponentialBackoff?Math.min(y5d,this.pollingInterval*2**this.backOffCount):this.pollingInterval}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){this.poller&&(clearTimeout(this.poller),this.poller=void 0),this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let t=!0;if(this.cacheProvider)try{t=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(n){this.onError?.(new Error(`Error in shouldFetchFlagDefinitions: ${n}`))}if(!t&&(await this.loadFromCache("Loaded flags from cache (skipped fetch)")||this.loadedSuccessfullyOnce))return;let r=await this._requestFeatureFlagDefinitions();if(!r)return;switch(r.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=r.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new $ot(`Your project key or personal API key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={};return;case 403:throw this.beginBackoff(),new $ot(`Your personal API key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new $ot(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let n=await r.json()??{};if(!("flags"in n))return void this.onError?.(new Error(`Invalid response when getting feature flags: ${JSON.stringify(n)}`));this.flagsEtag=r.headers?.get("ETag")??void 0;let i={flags:n.flags??[],groupTypeMapping:n.group_type_mapping||{},cohorts:n.cohorts||{}};if(this.updateFlagState(i),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&t)try{await this.cacheProvider.onFlagDefinitionsReceived(i)}catch(o){this.onError?.(new Error(`Failed to store in cache: ${o}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(i.flags);break}default:return}}catch(t){t instanceof $ot&&this.onError?.(t)}}getPersonalApiKeyRequestOptions(t="GET",r){let n={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};return r&&(n["If-None-Match"]=r),{method:t,headers:n}}_requestFeatureFlagDefinitions(){let t=`${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`,r=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;n=Nfe(()=>{i.abort()},this.timeout),r.signal=i.signal}try{let i=this.fetch;return i(t,r)}finally{clearTimeout(n)}}async stopPoller(t=3e4){if(clearTimeout(this.poller),this.cacheProvider)try{let r=this.cacheProvider.shutdown();r instanceof Promise&&await Promise.race([r,new Promise((n,i)=>setTimeout(()=>i(new Error(`Cache shutdown timeout after ${t}ms`)),t))])}catch(r){this.onError?.(new Error(`Error during cache shutdown: ${r}`))}}};async function k6c(e,t,r=""){let n=await F6c(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/b5d}function Q6c(e,t,r){let n=e.key,i=e.value,o=e.operator||"exact";if(n in t){if(o==="is_not_set")throw new Gd("Operator is_not_set is not supported")}else throw new Gd(`Property ${n} not found in propertyValues`);let s=t[n];if(s==null&&!E5d.includes(o))return r&&r(`Property ${n} cannot have a value of null/undefined with the ${o} operator`),!1;function a(u,l){return Array.isArray(u)?u.map(p=>String(p).toLowerCase()).includes(String(l).toLowerCase()):String(u).toLowerCase()===String(l).toLowerCase()}function c(u,l,p){if(p==="gt")return u>l;if(p==="gte")return u>=l;if(p==="lt")return u<l;if(p==="lte")return u<=l;throw new Error(`Invalid operator: ${p}`)}switch(o){case"exact":return a(i,s);case"is_not":return!a(i,s);case"is_set":return n in t;case"icontains":return String(s).toLowerCase().includes(String(i).toLowerCase());case"not_icontains":return!String(s).toLowerCase().includes(String(i).toLowerCase());case"regex":return N6c(String(i))&&String(s).match(String(i))!==null;case"not_regex":return N6c(String(i))&&String(s).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof i=="number"?i:null;if(typeof i=="string")try{u=parseFloat(i)}catch{}return u==null||s==null?c(String(s),String(i),o):typeof s=="string"?c(s,String(i),o):c(s,u,o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new Gd("Date operations cannot be performed on boolean values");let u=x5d(String(i));if(u==null&&(u=j6c(i)),u==null)throw new Gd(`Invalid date: ${i}`);let l=j6c(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return qV(YO(String(s)),YO(String(i)))===0;case"semver_neq":return qV(YO(String(s)),YO(String(i)))!==0;case"semver_gt":return qV(YO(String(s)),YO(String(i)))>0;case"semver_gte":return qV(YO(String(s)),YO(String(i)))>=0;case"semver_lt":return qV(YO(String(s)),YO(String(i)))<0;case"semver_lte":return qV(YO(String(s)),YO(String(i)))<=0;case"semver_tilde":{let u=YO(String(s)),{lower:l,upper:p}=I5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}case"semver_caret":{let u=YO(String(s)),{lower:l,upper:p}=C5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}case"semver_wildcard":{let u=YO(String(s)),{lower:l,upper:p}=w5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}default:throw new Gd(`Unknown operator: ${o}`)}}function v5d(e,t){if(!(e in t))throw new yee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function M6c(e,t,r,n=!1){let i=String(e.value);v5d(i,r);let o=r[i];return L6c(o,t,r,n)}function L6c(e,t,r,n=!1){if(!e)return!0;let i=e.type,o=e.values;if(!o||o.length===0)return!0;let s=!1;if("values"in o[0]){for(let a of o)try{let c=L6c(a,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof yee)throw c;if(c instanceof Gd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Gd("Can't match cohort without a given cohort property value");return i==="AND"}for(let a of o)try{let c;if(a.type==="cohort")c=M6c(a,t,r,n);else if(a.type==="flag"){n&&console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${a.key||"unknown"}'`);continue}else c=Q6c(a,t);let u=a.negation||!1;if(i==="AND"){if(!c&&!u||c&&u)return!1}else if(c&&!u||!c&&u)return!0}catch(c){if(c instanceof yee)throw c;if(c instanceof Gd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Gd("can't match cohort without a given cohort property value");return i==="AND"}function N6c(e){try{return new RegExp(e),!0}catch{return!1}}function YO(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new Gd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>{if(c===void 0||c==="")return 0;if(!/^\d+$/.test(c))throw new Gd(`Invalid semver: ${e}`);return parseInt(c,10)},o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function qV(e,t){for(let r=0;r<3;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return 0}function I5d(e){let t=YO(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function C5d(e){let t=YO(e),[r,n,i]=t,o=[r,n,i],s;return s=r>0?[r+1,0,0]:n>0?[0,n+1,0]:[0,0,i+1],{lower:o,upper:s}}function w5d(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new Gd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=parseInt(n[0],10);if(isNaN(i))throw new Gd(`Invalid wildcard semver: ${e}`);let o,s;if(n.length===1)o=[i,0,0],s=[i+1,0,0];else{let a=parseInt(n[1],10);if(isNaN(a))throw new Gd(`Invalid wildcard semver: ${e}`);o=[i,a,0],s=[i,a+1,0]}return{lower:o,upper:s}}function j6c(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new Gd(`${e} is in an invalid date format`)}throw new Gd(`The date provided ${e} must be a string, number, or date object`)}function x5d(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,r=e.match(t),n=new Date(new Date().toISOString());if(!r)return null;{if(!r.groups)return null;let i=parseInt(r.groups.number);if(i>=1e4)return null;let o=r.groups.interval;if(o=="h")n.setUTCHours(n.getUTCHours()-i);else if(o=="d")n.setUTCDate(n.getUTCDate()-i);else if(o=="w")n.setUTCDate(n.getUTCDate()-7*i);else if(o=="m")n.setUTCMonth(n.getUTCMonth()-i);else{if(o!="y")return null;n.setUTCFullYear(n.getUTCFullYear()-i)}return n}}var Eqr=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var S5d=100,z6c=3e4,T5d=5e4,B5d=50,O5d=500,vqr=class extends pVt{constructor(t,r={}){if(super(t,r),this._memoryStorage=new Eqr,this.options=r,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof r.featureFlagsPollingInterval=="number"?Math.max(r.featureFlagsPollingInterval,S5d):z6c,typeof r.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(r.waitUntilDebounceMs,0)),typeof r.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(r.waitUntilMaxWaitMs,0)),r.personalApiKey){if(r.personalApiKey.includes("phc_"))throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');r.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new bqr({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:r.personalApiKey,projectApiKey:t,timeout:r.requestTimeout??1e4,host:this.host,fetch:r.fetch,onError:i=>{this._events.emit("error",i)},onLoad:i=>{this._events.emit("localEvaluationFlagsLoaded",i)},customHeaders:this.getCustomHeaders(),cacheProvider:r.flagDefinitionCacheProvider,strictLocalEvaluation:r.strictLocalEvaluation}))}this.errorTracking=new gH(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||T5d}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??O5d,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??B5d;this._waitUntilCycle.timer=Nfe(()=>{this.resolveWaitUntilFlush()},o)}_consumeWaitUntilCycle(){let t=this._waitUntilCycle;return t&&(clearTimeout(t.timer),this._waitUntilCycle=void 0),t?.resolve}async resolveWaitUntilFlush(){let t=this._consumeWaitUntilCycle();try{await super.flush()}catch{}finally{t?.()}}getPersistedProperty(t){return this._memoryStorage.getProperty(t)}setPersistedProperty(t,r){return this._memoryStorage.setProperty(t,r)}fetch(t,r){return this.options.fetch?this.options.fetch(t,r):fetch(t,r)}getLibraryVersion(){return R6c}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}capture(t){typeof t=="string"&&this._logger.warn("Called capture() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStateless(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}async captureImmediate(t){return typeof t=="string"&&this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStatelessImmediate(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}identify({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};super.identifyStateless(t,l,{disableGeoip:n})}async identifyImmediate({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};super.identifyStatelessImmediate(t,l,{disableGeoip:n})}alias(t){super.aliasStateless(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}async aliasImmediate(t){await super.aliasStatelessImmediate(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(t=z6c){return this.isLocalEvaluationReady()?!0:this.featureFlagsPoller===void 0?!1:new Promise(r=>{let n=setTimeout(()=>{i(),r(!1)},t),i=this._events.on("localEvaluationFlagsLoaded",o=>{clearTimeout(n),i(),r(o>0)})})}_resolveDistinctId(t,r){return typeof t=="string"?{distinctId:t,options:r}:{distinctId:this.context?.get()?.distinctId,options:t}}async _getFeatureFlagResult(t,r,n={},i){let o=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&t in this._flagOverrides){let T=this._flagOverrides[t];if(T===void 0)return;let O=this._payloadOverrides?.[t];return{key:t,enabled:T!==!1,variant:typeof T=="string"?T:void 0,payload:O}}let{groups:s,disableGeoip:a}=n,{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=n,p=this.addLocalPersonAndGroupProperties(r,s,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(r,s,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f,m=!1,h,A,y,I,w,C;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let T=this.featureFlagsPoller?.featureFlagsByKey[t];if(T)try{let O=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(T,d,{matchValue:i});if(O){m=!0;let R=O.value;I=T.id,C="Evaluated locally",f={key:t,enabled:R!==!1,variant:typeof R=="string"?R:void 0,payload:O.payload??void 0}}}catch(O){if(O instanceof yee||O instanceof Gd)this._logger?.info(`${O.name} when computing flag locally: ${t}: ${O.message}`);else throw O}}if(!m&&!c){let T=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(T===void 0)y=fVt.UNKNOWN_ERROR;else{h=T.requestId,A=T.evaluatedAt;let O=[];T.errorsWhileComputingFlags&&O.push(fVt.ERRORS_WHILE_COMPUTING),T.quotaLimited?.includes("feature_flags")&&O.push(fVt.QUOTA_LIMITED);let R=T.flags[t];if(R===void 0)O.push(fVt.FLAG_MISSING);else{I=R.metadata?.id,w=R.metadata?.version,C=R.reason?.description??R.reason?.code;let P;if(R.metadata?.payload!==void 0)try{P=JSON.parse(R.metadata.payload)}catch{P=R.metadata.payload}f={key:t,enabled:R.enabled,variant:R.variant,payload:P}}O.length>0&&(y=O.join(","))}}if(o){let T=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,O=`${t}_${T}`;if(!(r in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[r].includes(O)){Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(O):this.distinctIdHasSentFlagCalls[r]=[O];let R={$feature_flag:t,$feature_flag_response:T,$feature_flag_id:I,$feature_flag_version:w,$feature_flag_reason:C,locally_evaluated:m,[`$feature/${t}`]:T,$feature_flag_request_id:h,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let P=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();P!==void 0&&(R.$feature_flag_definitions_loaded_at=P)}y&&(R.$feature_flag_error=y),this.capture({distinctId:r,event:"$feature_flag_called",properties:R,groups:s,disableGeoip:a})}}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(!this.options.personalApiKey)throw new Error("Personal API key is required for remote config payload decryption");let r=await this._requestRemoteConfigPayload(t);if(!r)return;let n=await r.json();if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(t,r,n){let i=await this.getFeatureFlag(t,r,n);if(i!==void 0)return!!i||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},h={},A=!0;if(f&&(m=f.response,h=f.payloads,A=f.fallbackToFlags),A&&!c){let y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...y.flags||{}},h={...h,...y.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(h={...h,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:h}}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){super.groupIdentifyStateless(t,r,n,{disableGeoip:o},i)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(t){let r=n=>Object.fromEntries(n.map(i=>[i,!0]));if(t===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(t)){this._flagOverrides=r(t);return}if(this._isFeatureFlagOverrideOptions(t)){"flags"in t&&(t.flags===!1?this._flagOverrides=void 0:Array.isArray(t.flags)?this._flagOverrides=r(t.flags):t.flags!==void 0&&(this._flagOverrides={...t.flags})),"payloads"in t&&(t.payloads===!1?this._payloadOverrides=void 0:t.payloads!==void 0&&(this._payloadOverrides={...t.payloads}));return}this._flagOverrides={...t}}_isFeatureFlagOverrideOptions(t){if(typeof t!="object"||t===null||Array.isArray(t))return!1;let r=t;if("flags"in r){let n=r.flags;if(n===!1||Array.isArray(n)||typeof n=="object"&&n!==null)return!0}if("payloads"in r){let n=r.payloads;if(n===!1||typeof n=="object"&&n!==null)return!0}return!1}withContext(t,r,n){return this.context?this.context.run(t,r,n):r()}getContext(){return this.context?.get()}enterContext(t,r){this.context?.enter(t,r)}async _shutdown(t){let r=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(t),this.errorTracking.shutdown();try{return await super._shutdown(t)}finally{r?.()}}async _requestRemoteConfigPayload(t){if(!this.options.personalApiKey)return;let r=`${this.host}/api/projects/@current/feature_flags/${t}/remote_config?token=${encodeURIComponent(this.apiKey)}`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},i=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let o=new AbortController;i=Nfe(()=>{o.abort()},this.options.requestTimeout),n.signal=o.signal}try{return await this.fetch(r,n)}catch(o){this._events.emit("error",o);return}finally{i&&clearTimeout(i)}}extractPropertiesFromEvent(t,r){if(!t)return{personProperties:{},groupProperties:{}};let n={},i={};for(let[o,s]of Object.entries(t))if(KMc(s)&&r&&o in r){let a={};for(let[c,u]of Object.entries(s))a[String(c)]=String(u);i[String(o)]=a}else n[String(o)]=String(s);return{personProperties:n,groupProperties:i}}async getFeatureFlagsForEvent(t,r,n,i){let o=i?.personProperties||{},s=i?.groupProperties||{},a=i?.flagKeys;if(i?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}else return{};if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}return(await super.getFeatureFlagsStateless(t,r,o,s,n)).flags}addLocalPersonAndGroupProperties(t,r,n,i){let o={distinct_id:t,...n||{}},s={};if(r)for(let a of Object.keys(r))s[a]={$group_key:r[a],...i?.[a]||{}};return{allPersonProperties:o,allGroupProperties:s}}createFeatureFlagEvaluationContext(t,r,n,i){return{distinctId:t,groups:r||{},personProperties:n||{},groupProperties:i||{},evaluationCache:{}}}captureException(t,r,n,i){if(!gH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");this.addPendingPromise(gH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.capture({...s,uuid:i})))}}async captureExceptionImmediate(t,r,n){if(!gH.isPreviouslyCapturedError(t)){let i=new Error("PostHog syntheticException");return this.addPendingPromise(gH.buildEventMessage(t,{syntheticException:i},r,n).then(o=>this.captureImmediate(o)))}}async prepareEventMessage(t){let{distinctId:r,event:n,properties:i,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u}=t,l=this.context?.get(),p=r||l?.distinctId,d={...this.props,...l?.properties||{},...i||{}};p||(p=ACe(),d.$process_person_profile=!1),l?.sessionId&&!d.$session_id&&(d.$session_id=l.sessionId);let f=this._runBeforeSend({distinctId:p,event:n,properties:d,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u});if(!f)return Promise.reject(null);let m=await Promise.resolve().then(async()=>{if(s){let h=typeof s=="object"?s:void 0;return await this.getFeatureFlagsForEvent(f.distinctId,o,c,h)}return f.event,{}}).then(h=>{let A={};if(h)for(let[I,w]of Object.entries(h))A[`$feature/${I}`]=w;let y=Object.keys(h||{}).filter(I=>h?.[I]!==!1).sort();return y.length>0&&(A.$active_feature_flags=y),A}).catch(()=>({})).then(h=>({...h,...f.properties||{},$groups:f.groups||o}));return f.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof m.$raw_user_agent=="string"&&VMc(m.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(f.event="$bot_pageview",m.$browser_type="bot"),{distinctId:f.distinctId,event:f.event,properties:m,options:{timestamp:f.timestamp,disableGeoip:f.disableGeoip,uuid:f.uuid}}}_runBeforeSend(t){let r=this.options.before_send;if(!r)return t;let n=Array.isArray(r)?r:[r],i=t;for(let o of n){if(i=o(i),!i)return this._logger.info(`Event '${t.event}' was rejected in beforeSend function`),null;if(!i.properties||Object.keys(i.properties).length===0){let s=`Event '${i.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}return i}};var U6c=require("async_hooks"),Iqr=class{constructor(){this.storage=new U6c.AsyncLocalStorage}get(){return this.storage.getStore()}run(t,r,n){return this.storage.run(this.resolve(t,n),r)}enter(t,r){this.storage.enterWith(this.resolve(t,r))}resolve(t,r){if(r?.fresh===!0)return t;let n=this.get()||{};return{distinctId:t.distinctId??n.distinctId,sessionId:t.sessionId??n.sessionId,properties:{...n.properties||{},...t.properties||{}}}}};var _6c="posthog-node";function P5d(e,{organization:t,projectId:r,prefix:n,severityAllowList:i=["error"],sendExceptionsToPostHog:o=!0}={}){return s=>{if(!(i==="*"||i.includes(s.level)))return s;s.tags||(s.tags={});let c=s.tags[c1o.POSTHOG_ID_TAG];if(c===void 0)return s;let u=e.options.host??"https://us.i.posthog.com",l=new URL(`/project/${e.apiKey}/person/${c}`,u).toString();s.tags["PostHog Person URL"]=l;let p=s.exception?.values||[],d=p.map(m=>({...m,stacktrace:m.stacktrace?{...m.stacktrace,type:"raw",frames:(m.stacktrace.frames||[]).map(h=>({...h,platform:"node:javascript"}))}:void 0})),f={$exception_message:p[0]?.value||s.message,$exception_type:p[0]?.type,$exception_level:s.level,$exception_list:d,$sentry_event_id:s.event_id,$sentry_exception:s.exception,$sentry_exception_message:p[0]?.value||s.message,$sentry_exception_type:p[0]?.type,$sentry_tags:s.tags};return t&&r&&(f.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+s.event_id),o&&e.capture({event:"$exception",distinctId:c,properties:f}),s}}var c1o=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=_6c,this.name=_6c,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(P5d(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};gH.errorPropertiesBuilder=new pM.ErrorPropertiesBuilder([new pM.EventCoercer,new pM.ErrorCoercer,new pM.ObjectCoercer,new pM.StringCoercer,new pM.PrimitiveCoercer],pM.createStackParser("node:javascript",pM.nodeStackLineParser),[MMc(),T6c]);var yCe=class extends vqr{getLibraryId(){return"posthog-node"}initializeContext(){return new Iqr}};var Cqr=class{posthog;constructor({posthogApiKey:t}){this.posthog=new yCe(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.44.9",usingAccessToken:!0,...tce()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var dVt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};tr();var est=require("fs/promises"),V6c=require("os"),q6c=require("path");var D5d="id",R5d=".fern",mVt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new yCe(r),this.userId=t==null?void 0:DEo(t),this.token=t}async identify(){this.userId!=null&&this.posthog.alias({distinctId:this.userId,alias:await this.getPersistedDistinctId()})}async sendEvent(t){let r=await this.getUserEmail();this.posthog.capture({distinctId:this.userId??await this.getPersistedDistinctId(),event:"CLI",properties:{version:"5.44.9",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...tce()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}userEmail;async getUserEmail(){if(this.userEmail!==null){if(this.userEmail!=null)return this.userEmail;if(this.token==null){this.userEmail=null;return}try{let t=await Hf({token:this.token.value}).user.getMyself();if(t.ok&&t.body.email!=null)return this.userEmail=t.body.email,this.userEmail}catch{}this.userEmail=null}}persistedDistinctId;async getPersistedDistinctId(){if(this.persistedDistinctId==null){let t=lR(),r=Ze(Ht.of((0,V6c.homedir)()),Fe.of(R5d),Fe.of(D5d));try{await sr(r)?this.persistedDistinctId=(await(0,est.readFile)(r)).toString():(await(0,est.mkdir)((0,q6c.dirname)(r),{recursive:!0}),await(0,est.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var u1o;async function hVt(){return u1o==null&&(u1o=await F5d()),u1o}async function F5d(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new dVt;let r=await yit();return r!=null?new mVt({token:r,posthogApiKey:e}):await BV()!=null?new Cqr({posthogApiKey:e}):new mVt({token:void 0,posthogApiKey:e})}catch{return new dVt}}jt();_t();var gVt=we(require("process"),1);E9e();var H6c=we(vdo(),1),K6c=we(W6c(),1);function lT(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=XG(e),e.length===0))return 0;e=e.replace((0,K6c.default)()," ");let r=t.ambiguousIsNarrow?1:2,n=0;for(let i of e){let o=i.codePointAt(0);if(o<=31||o>=127&&o<=159||o>=768&&o<=879)continue;switch(H6c.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}function wqr(e){let t=0;for(let r of e.split(`
|
|
3225
|
+
`);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=A6c.test(a)?a.replace(A6c,"$1"):a;if(!c.match(/\S*Error: /)){for(let u of t){let l=u(c,e);if(l){i.push(l);break}}if(i.length>=y6c)break}}return b6c(i)}}var ZSo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=cVt(t.stack);return{type:this.getType(t),value:this.getValue(t),stack:n?t.stack:void 0,cause:t.cause?r.next(t.cause):void 0,synthetic:!1}}getType(t){return this.isDOMError(t)?"DOMError":"DOMException"}getValue(t){let r=t.name||(this.isDOMError(t)?"DOMError":"DOMException");return t.message?`${r}: ${t.message}`:r}isDOMException(t){return wze(t,"DOMException")}isDOMError(t){return wze(t,"DOMError")}};var $So=class{match(t){return USo(t)}coerce(t,r){return{type:this.getType(t),value:this.getMessage(t,r),stack:this.getStack(t),cause:t.cause?r.next(t.cause):void 0,synthetic:!1}}getType(t){return t.name||t.constructor.name}getMessage(t,r){let n=t.message;return n.error&&typeof n.error.message=="string"?String(n.error.message):String(n)}getStack(t){return t.stacktrace||t.stack||void 0}};var e1o=class{constructor(){}match(t){return HMc(t)&&t.error!=null}coerce(t,r){let n=r.apply(t.error);return n||{type:"ErrorEvent",value:t.message,stack:r.syntheticException?.stack,synthetic:!0}}};var i5d=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,t1o=class{match(t){return typeof t=="string"}coerce(t,r){let[n,i]=this.getInfos(t);return{type:n??"Error",value:i??t,stack:r.syntheticException?.stack,synthetic:!0}}getInfos(t){let r="Error",n=t,i=t.match(i5d);return i&&(r=i[1],n=i[2]),[r,n]}};var v6c=["fatal","error","warning","log","info","debug"];function Aqr(e,t=40){let r=Object.keys(e);if(r.sort(),!r.length)return"[object has no keys]";for(let n=r.length;n>0;n--){let i=r.slice(0,n).join(", ");if(!(i.length>t))return n===r.length||i.length<=t?i:`${i.slice(0,t)}...`}return""}var r1o=class{match(t){return typeof t=="object"&&t!==null}coerce(t,r){let n=this.getErrorPropertyFromObject(t);return n?r.apply(n):{type:this.getType(t),value:this.getValue(t),stack:r.syntheticException?.stack,level:this.isSeverityLevel(t.level)?t.level:"error",synthetic:!0}}getType(t){return Jot(t)?t.constructor.name:"Error"}getValue(t){if("name"in t&&typeof t.name=="string"){let i=`'${t.name}' captured as exception`;return"message"in t&&typeof t.message=="string"&&(i+=` with message: '${t.message}'`),i}if("message"in t&&typeof t.message=="string")return t.message;let r=this.getObjectClassName(t),n=Aqr(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return cVt(t)&&!GMc(t)&&v6c.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(a6c(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var n1o=class{match(t){return Jot(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${Aqr(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var i1o=class{match(t){return oqr(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var o1o=class{match(t){return wze(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!Jot(t))return!1;try{let r=t.detail;return r!=null&&typeof r=="object"&&"reason"in r}catch{return!1}}coerce(t,r){let n=this.getUnhandledRejectionReason(t);return oqr(n)?{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(n)}`,stack:r.syntheticException?.stack,synthetic:!0}:r.apply(n)}getUnhandledRejectionReason(t){try{if("reason"in t)return t.reason;if("detail"in t&&t.detail!=null&&typeof t.detail=="object"&&"reason"in t.detail)return t.detail.reason}catch{}return t}};var s1o=class{constructor(t){this._maxSize=t,this._cache=new Map}get(t){let r=this._cache.get(t);if(r!==void 0)return this._cache.delete(t),this._cache.set(t,r),r}set(t,r){this._cache.set(t,r)}reduce(){for(;this._cache.size>=this._maxSize;){let t=this._cache.keys().next().value;t&&this._cache.delete(t)}}};var w6c=require("fs"),x6c=require("readline"),yqr=new pM.ReduceableCache(25),S6c=new pM.ReduceableCache(20),a1o=7,o5d=1e3,s5d=1e4;async function T6c(e){let t={};for(let i=e.length-1;i>=0;i--){let o=e[i],s=o?.filename;if(!o||typeof s!="string"||typeof o.lineno!="number"||l5d(s)||p5d(o))continue;t[s]||(t[s]=[]),t[s].push(o.lineno)}let r=Object.keys(t);if(r.length==0)return e;let n=[];for(let i of r){if(S6c.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=d5d(o);if(s.every(c=>f5d(i,c)))continue;let a=m5d(yqr,i,{});n.push(a5d(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&c5d(e,yqr),yqr.reduce(),e}function a5d(e,t,r){return new Promise(n=>{let i=(0,w6c.createReadStream)(e),o=(0,x6c.createInterface)({input:i});function s(){i.destroy(),n()}let a=0,c=0,u=t[c];if(u===void 0)return void s();let l=u[0],p=u[1];function d(){S6c.set(e,1),o.close(),o.removeAllListeners(),s()}i.on("error",d),o.on("error",d),o.on("close",s),o.on("line",f=>{if(a++,!(a<l)&&(r[a]=h5d(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 c5d(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;u5d(r.lineno,r,n)}}function u5d(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=B6c(e);i<e;i++){let o=r[i];if(o===void 0)return void I6c(t);t.pre_context.push(o)}if(r[e]===void 0)return void I6c(t);t.context_line=r[e];let n=O6c(e);t.post_context=[];for(let i=e+1;i<=n;i++){let o=r[i];if(o===void 0)break;t.post_context.push(o)}}function I6c(e){delete e.pre_context,delete e.context_line,delete e.post_context}function l5d(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function p5d(e){return e.lineno!==void 0&&e.lineno>s5d||e.colno!==void 0&&e.colno>o5d}function f5d(e,t){let r=yqr.get(e);if(r===void 0)return!1;for(let n=t[0];n<=t[1];n++)if(r[n]===void 0)return!1;return!0}function d5d(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=C6c(r),i=[];for(;;){if(t===e.length-1){i.push(n);break}let o=e[t+1];if(typeof o!="number")break;o<=n[1]?n[1]=o+a1o:(i.push(n),n=C6c(o)),t++}return i}function C6c(e){return[B6c(e),O6c(e)]}function B6c(e){return Math.max(1,e-a1o)}function O6c(e){return e+a1o}function m5d(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function h5d(e,t){let r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);let i=Math.max(t-60,0);i<5&&(i=0);let o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r=`...${r}`),o<n&&(r+="..."),r}function g5d(e,t){let r=!1;return Object.assign(n=>{let o=global.process.listeners("uncaughtException").filter(s=>s.name!=="domainUncaughtExceptionClear"&&s._posthogErrorHandler!==!0).length===0;e(n,{mechanism:{type:"onuncaughtexception",handled:!1}}),!r&&o&&(r=!0,t(n))},{_posthogErrorHandler:!0})}function P6c(e,t){globalThis.process?.on("uncaughtException",g5d(e,t))}function D6c(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var A5d=2e3,gH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new sqr({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return zSo(t)&&"__posthog_previously_captured_error"in t&&t.__posthog_previously_captured_error===!0}static async buildEventMessage(t,r,n,i){let o={...i},s=this.errorPropertiesBuilder.buildFromUnknown(t,r);return s.$exception_list=await this.errorPropertiesBuilder.modifyFrames(s.$exception_list),{event:"$exception",distinctId:n,properties:{...s,...o},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){this.isEnabled()&&(P6c(this.onException.bind(this),this.onFatalError.bind(this)),D6c(this.onException.bind(this)))}onException(t,r){this.client.addPendingPromise((async()=>{if(!e.isPreviouslyCapturedError(t)){let n=await e.buildEventMessage(t,r),o=n.properties?.$exception_list[0]?.type??"Exception";return this._rateLimiter.consumeRateLimit(o)?void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:o}):this.client.capture(n)}})())}async onFatalError(t){console.error(t),await this.client.shutdown(A5d),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var R6c="5.29.1";var fVt={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};async function F6c(e){let t=globalThis.crypto?.subtle;if(!t)throw new Error("SubtleCrypto API not available");let r=await t.digest("SHA-1",new TextEncoder().encode(e));return Array.from(new Uint8Array(r)).map(i=>i.toString(16).padStart(2,"0")).join("")}var y5d=6e4,b5d=1152921504606847e3,E5d=["is_not"],$ot=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},Gd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},yee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},bqr=class{constructor({pollingInterval:t,personalApiKey:r,projectApiKey:n,timeout:i,host:o,customHeaders:s,...a}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=t,this.personalApiKey=r,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=i,this.projectApiKey=n,this.host=o,this.poller=void 0,this.fetch=a.fetch||fetch,this.onError=a.onError,this.customHeaders=s,this.onLoad=a.onLoad,this.cacheProvider=a.cacheProvider,this.strictLocalEvaluation=a.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(t=!0){this.debugMode=t}logMsgIfDebug(t){this.debugMode&&t()}createEvaluationContext(t,r={},n={},i={},o={}){return{distinctId:t,groups:r,personProperties:n,groupProperties:i,evaluationCache:o}}async getFeatureFlag(t,r,n={},i={},o={}){await this.loadFeatureFlags();let s,a;if(!this.loadedSuccessfullyOnce)return s;if(a=this.featureFlagsByKey[t],a!==void 0){let c=this.createEvaluationContext(r,n,i,o);try{s=(await this.computeFlagAndPayloadLocally(a,c)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${t} -> ${s}`))}catch(u){u instanceof yee||u instanceof Gd?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${t}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${t}: ${u}`))}}return s}async getAllFlagsAndPayloads(t,r){await this.loadFeatureFlags();let n={},i={},o=this.featureFlags.length==0,s=r?r.map(c=>this.featureFlagsByKey[c]).filter(Boolean):this.featureFlags,a={...t,evaluationCache:t.evaluationCache??{}};return await Promise.all(s.map(async c=>{try{let{value:u,payload:l}=await this.computeFlagAndPayloadLocally(c,a);n[c.key]=u,l&&(i[c.key]=l)}catch(u){u instanceof yee||u instanceof Gd?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${c.key}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${c.key}: ${u}`)),o=!0}})),{response:n,payloads:i,fallbackToFlags:o}}async computeFlagAndPayloadLocally(t,r,n={}){let{matchValue:i,skipLoadCheck:o=!1}=n;if(o||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=i!==void 0?i:await this.computeFlagValueLocally(t,r);let a=this.getFeatureFlagPayload(t.key,s);return{value:s,payload:a}}async computeFlagValueLocally(t,r){let{distinctId:n,groups:i,personProperties:o,groupProperties:s}=r;if(t.ensure_experience_continuity)throw new Gd("Flag has experience continuity enabled");if(!t.active)return!1;let c=(t.filters||{}).aggregation_group_type_index;if(c!=null){let u=this.groupTypeMapping[String(c)];if(!u)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${c} for feature flag ${t.key}`)),new Gd("Flag has unknown group type index");if(!(u in i))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${t.key} without group names passed in`)),!1;t.bucketing_identifier==="device_id"&&(o?.$device_id===void 0||o?.$device_id===null||o?.$device_id==="")&&this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${t.key}`));let l=s[u];return await this.matchFeatureFlagProperties(t,i[u],l,r)}{let u=this.getBucketingValueForFlag(t,n,o);if(u===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${t.key} without $device_id, falling back to server evaluation`)),new Gd(`Can't compute feature flag: ${t.key} without $device_id`);return await this.matchFeatureFlagProperties(t,u,o,r)}}getBucketingValueForFlag(t,r,n){if(t.filters?.aggregation_group_type_index!=null)return r;if(t.bucketing_identifier==="device_id"){let i=n?.$device_id;return i==null||i===""?void 0:i}return r}getFeatureFlagPayload(t,r){let n=null;if(r!==!1&&r!=null&&(typeof r=="boolean"?n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r.toString()]||null:typeof r=="string"&&(n=this.featureFlagsByKey?.[t]?.filters?.payloads?.[r]||null),n!=null)){if(typeof n=="object")return n;if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}return null}async evaluateFlagDependency(t,r,n){let{evaluationCache:i}=n,o=t.key;if(!this.featureFlagsByKey)throw new Gd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Gd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Gd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Gd(`Circular dependency detected for flag '${o}' (empty dependency chain)`);for(let c of s){if(!(c in i)){let l=this.featureFlagsByKey[c];if(l)if(l.active)try{let p=await this.computeFlagValueLocally(l,n);i[c]=p}catch(p){throw new Gd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new Gd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Gd(`Dependency '${c}' could not be evaluated`)}let a=i[o];return this.flagEvaluatesToExpectedValue(t.value,a)}flagEvaluatesToExpectedValue(t,r){return typeof t=="boolean"?t===r||typeof r=="string"&&r!==""&&t===!0:typeof t=="string"?r===t:!1}async matchFeatureFlagProperties(t,r,n,i){let o=t.filters||{},s=o.groups||[],a=!1,c;for(let u of s)try{if(await this.isConditionMatch(t,r,u,n,i)){let l=u.variant,p=o.multivariate?.variants||[];c=l&&p.some(d=>d.key===l)?l:await this.getMatchingVariant(t,r)||!0;break}}catch(l){if(l instanceof yee)throw l;if(l instanceof Gd)a=!0;else throw l}if(c!==void 0)return c;if(a)throw new Gd("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(t,r,n,i,o){let s=n.rollout_percentage,a=c=>{this.logMsgIfDebug(()=>console.warn(c))};if((n.properties||[]).length>0){for(let c of n.properties){let u=c.type,l=!1;if(l=u==="cohort"?M6c(c,i,this.cohorts,this.debugMode):u==="flag"?await this.evaluateFlagDependency(c,i,o):Q6c(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await k6c(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await k6c(t.key,r,"variant"),i=this.variantLookupTable(t).find(o=>n>=o.valueMin&&n<o.valueMax);if(i)return i.key}variantLookupTable(t){let r=[],n=0,i=0;return((t.filters||{}).multivariate?.variants||[]).forEach(a=>{i=n+a.rollout_percentage/100,r.push({valueMin:n,valueMax:i,key:a.key}),n=i}),r}updateFlagState(t){this.featureFlags=t.flags,this.featureFlagsByKey=t.flags.reduce((r,n)=>(r[n.key]=n,r),{}),this.groupTypeMapping=t.groupTypeMapping,this.cohorts=t.cohorts,this.loadedSuccessfullyOnce=!0}warnAboutExperienceContinuityFlags(t){if(this.strictLocalEvaluation)return;let r=t.filter(n=>n.ensure_experience_continuity);r.length>0&&console.warn(`[PostHog] You are using local evaluation but ${r.length} flag(s) have experience continuity enabled: ${r.map(n=>n.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(t){if(!this.cacheProvider)return!1;try{let r=await this.cacheProvider.getFlagDefinitions();return r?(this.updateFlagState(r),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${t} (${r.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(r.flags),!0):!1}catch(r){return this.onError?.(new Error(`Failed to load from cache: ${r}`)),!1}}async loadFeatureFlags(t=!1){if(!(this.loadedSuccessfullyOnce&&!t))return!t&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt?void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period")):(this.loadingPromise||(this.loadingPromise=this._loadFeatureFlags().catch(r=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${r}`))).finally(()=>{this.loadingPromise=void 0})),this.loadingPromise)}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){return this.shouldBeginExponentialBackoff?Math.min(y5d,this.pollingInterval*2**this.backOffCount):this.pollingInterval}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){this.poller&&(clearTimeout(this.poller),this.poller=void 0),this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let t=!0;if(this.cacheProvider)try{t=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(n){this.onError?.(new Error(`Error in shouldFetchFlagDefinitions: ${n}`))}if(!t&&(await this.loadFromCache("Loaded flags from cache (skipped fetch)")||this.loadedSuccessfullyOnce))return;let r=await this._requestFeatureFlagDefinitions();if(!r)return;switch(r.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=r.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new $ot(`Your project key or personal API key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={};return;case 403:throw this.beginBackoff(),new $ot(`Your personal API key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new $ot(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let n=await r.json()??{};if(!("flags"in n))return void this.onError?.(new Error(`Invalid response when getting feature flags: ${JSON.stringify(n)}`));this.flagsEtag=r.headers?.get("ETag")??void 0;let i={flags:n.flags??[],groupTypeMapping:n.group_type_mapping||{},cohorts:n.cohorts||{}};if(this.updateFlagState(i),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&t)try{await this.cacheProvider.onFlagDefinitionsReceived(i)}catch(o){this.onError?.(new Error(`Failed to store in cache: ${o}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(i.flags);break}default:return}}catch(t){t instanceof $ot&&this.onError?.(t)}}getPersonalApiKeyRequestOptions(t="GET",r){let n={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};return r&&(n["If-None-Match"]=r),{method:t,headers:n}}_requestFeatureFlagDefinitions(){let t=`${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`,r=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;n=Nfe(()=>{i.abort()},this.timeout),r.signal=i.signal}try{let i=this.fetch;return i(t,r)}finally{clearTimeout(n)}}async stopPoller(t=3e4){if(clearTimeout(this.poller),this.cacheProvider)try{let r=this.cacheProvider.shutdown();r instanceof Promise&&await Promise.race([r,new Promise((n,i)=>setTimeout(()=>i(new Error(`Cache shutdown timeout after ${t}ms`)),t))])}catch(r){this.onError?.(new Error(`Error during cache shutdown: ${r}`))}}};async function k6c(e,t,r=""){let n=await F6c(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/b5d}function Q6c(e,t,r){let n=e.key,i=e.value,o=e.operator||"exact";if(n in t){if(o==="is_not_set")throw new Gd("Operator is_not_set is not supported")}else throw new Gd(`Property ${n} not found in propertyValues`);let s=t[n];if(s==null&&!E5d.includes(o))return r&&r(`Property ${n} cannot have a value of null/undefined with the ${o} operator`),!1;function a(u,l){return Array.isArray(u)?u.map(p=>String(p).toLowerCase()).includes(String(l).toLowerCase()):String(u).toLowerCase()===String(l).toLowerCase()}function c(u,l,p){if(p==="gt")return u>l;if(p==="gte")return u>=l;if(p==="lt")return u<l;if(p==="lte")return u<=l;throw new Error(`Invalid operator: ${p}`)}switch(o){case"exact":return a(i,s);case"is_not":return!a(i,s);case"is_set":return n in t;case"icontains":return String(s).toLowerCase().includes(String(i).toLowerCase());case"not_icontains":return!String(s).toLowerCase().includes(String(i).toLowerCase());case"regex":return N6c(String(i))&&String(s).match(String(i))!==null;case"not_regex":return N6c(String(i))&&String(s).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof i=="number"?i:null;if(typeof i=="string")try{u=parseFloat(i)}catch{}return u==null||s==null?c(String(s),String(i),o):typeof s=="string"?c(s,String(i),o):c(s,u,o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new Gd("Date operations cannot be performed on boolean values");let u=x5d(String(i));if(u==null&&(u=j6c(i)),u==null)throw new Gd(`Invalid date: ${i}`);let l=j6c(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return qV(YO(String(s)),YO(String(i)))===0;case"semver_neq":return qV(YO(String(s)),YO(String(i)))!==0;case"semver_gt":return qV(YO(String(s)),YO(String(i)))>0;case"semver_gte":return qV(YO(String(s)),YO(String(i)))>=0;case"semver_lt":return qV(YO(String(s)),YO(String(i)))<0;case"semver_lte":return qV(YO(String(s)),YO(String(i)))<=0;case"semver_tilde":{let u=YO(String(s)),{lower:l,upper:p}=I5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}case"semver_caret":{let u=YO(String(s)),{lower:l,upper:p}=C5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}case"semver_wildcard":{let u=YO(String(s)),{lower:l,upper:p}=w5d(String(i));return qV(u,l)>=0&&qV(u,p)<0}default:throw new Gd(`Unknown operator: ${o}`)}}function v5d(e,t){if(!(e in t))throw new yee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function M6c(e,t,r,n=!1){let i=String(e.value);v5d(i,r);let o=r[i];return L6c(o,t,r,n)}function L6c(e,t,r,n=!1){if(!e)return!0;let i=e.type,o=e.values;if(!o||o.length===0)return!0;let s=!1;if("values"in o[0]){for(let a of o)try{let c=L6c(a,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof yee)throw c;if(c instanceof Gd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Gd("Can't match cohort without a given cohort property value");return i==="AND"}for(let a of o)try{let c;if(a.type==="cohort")c=M6c(a,t,r,n);else if(a.type==="flag"){n&&console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${a.key||"unknown"}'`);continue}else c=Q6c(a,t);let u=a.negation||!1;if(i==="AND"){if(!c&&!u||c&&u)return!1}else if(c&&!u||!c&&u)return!0}catch(c){if(c instanceof yee)throw c;if(c instanceof Gd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new Gd("can't match cohort without a given cohort property value");return i==="AND"}function N6c(e){try{return new RegExp(e),!0}catch{return!1}}function YO(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new Gd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>{if(c===void 0||c==="")return 0;if(!/^\d+$/.test(c))throw new Gd(`Invalid semver: ${e}`);return parseInt(c,10)},o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function qV(e,t){for(let r=0;r<3;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return 0}function I5d(e){let t=YO(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function C5d(e){let t=YO(e),[r,n,i]=t,o=[r,n,i],s;return s=r>0?[r+1,0,0]:n>0?[0,n+1,0]:[0,0,i+1],{lower:o,upper:s}}function w5d(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new Gd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=parseInt(n[0],10);if(isNaN(i))throw new Gd(`Invalid wildcard semver: ${e}`);let o,s;if(n.length===1)o=[i,0,0],s=[i+1,0,0];else{let a=parseInt(n[1],10);if(isNaN(a))throw new Gd(`Invalid wildcard semver: ${e}`);o=[i,a,0],s=[i,a+1,0]}return{lower:o,upper:s}}function j6c(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new Gd(`${e} is in an invalid date format`)}throw new Gd(`The date provided ${e} must be a string, number, or date object`)}function x5d(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,r=e.match(t),n=new Date(new Date().toISOString());if(!r)return null;{if(!r.groups)return null;let i=parseInt(r.groups.number);if(i>=1e4)return null;let o=r.groups.interval;if(o=="h")n.setUTCHours(n.getUTCHours()-i);else if(o=="d")n.setUTCDate(n.getUTCDate()-i);else if(o=="w")n.setUTCDate(n.getUTCDate()-7*i);else if(o=="m")n.setUTCMonth(n.getUTCMonth()-i);else{if(o!="y")return null;n.setUTCFullYear(n.getUTCFullYear()-i)}return n}}var Eqr=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var S5d=100,z6c=3e4,T5d=5e4,B5d=50,O5d=500,vqr=class extends pVt{constructor(t,r={}){if(super(t,r),this._memoryStorage=new Eqr,this.options=r,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof r.featureFlagsPollingInterval=="number"?Math.max(r.featureFlagsPollingInterval,S5d):z6c,typeof r.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(r.waitUntilDebounceMs,0)),typeof r.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(r.waitUntilMaxWaitMs,0)),r.personalApiKey){if(r.personalApiKey.includes("phc_"))throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');r.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new bqr({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:r.personalApiKey,projectApiKey:t,timeout:r.requestTimeout??1e4,host:this.host,fetch:r.fetch,onError:i=>{this._events.emit("error",i)},onLoad:i=>{this._events.emit("localEvaluationFlagsLoaded",i)},customHeaders:this.getCustomHeaders(),cacheProvider:r.flagDefinitionCacheProvider,strictLocalEvaluation:r.strictLocalEvaluation}))}this.errorTracking=new gH(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||T5d}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??O5d,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??B5d;this._waitUntilCycle.timer=Nfe(()=>{this.resolveWaitUntilFlush()},o)}_consumeWaitUntilCycle(){let t=this._waitUntilCycle;return t&&(clearTimeout(t.timer),this._waitUntilCycle=void 0),t?.resolve}async resolveWaitUntilFlush(){let t=this._consumeWaitUntilCycle();try{await super.flush()}catch{}finally{t?.()}}getPersistedProperty(t){return this._memoryStorage.getProperty(t)}setPersistedProperty(t,r){return this._memoryStorage.setProperty(t,r)}fetch(t,r){return this.options.fetch?this.options.fetch(t,r):fetch(t,r)}getLibraryVersion(){return R6c}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}capture(t){typeof t=="string"&&this._logger.warn("Called capture() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStateless(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}async captureImmediate(t){return typeof t=="string"&&this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStatelessImmediate(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}identify({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};super.identifyStateless(t,l,{disableGeoip:n})}async identifyImmediate({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};super.identifyStatelessImmediate(t,l,{disableGeoip:n})}alias(t){super.aliasStateless(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}async aliasImmediate(t){await super.aliasStatelessImmediate(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(t=z6c){return this.isLocalEvaluationReady()?!0:this.featureFlagsPoller===void 0?!1:new Promise(r=>{let n=setTimeout(()=>{i(),r(!1)},t),i=this._events.on("localEvaluationFlagsLoaded",o=>{clearTimeout(n),i(),r(o>0)})})}_resolveDistinctId(t,r){return typeof t=="string"?{distinctId:t,options:r}:{distinctId:this.context?.get()?.distinctId,options:t}}async _getFeatureFlagResult(t,r,n={},i){let o=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&t in this._flagOverrides){let T=this._flagOverrides[t];if(T===void 0)return;let O=this._payloadOverrides?.[t];return{key:t,enabled:T!==!1,variant:typeof T=="string"?T:void 0,payload:O}}let{groups:s,disableGeoip:a}=n,{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=n,p=this.addLocalPersonAndGroupProperties(r,s,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(r,s,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f,m=!1,h,A,y,I,w,C;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let T=this.featureFlagsPoller?.featureFlagsByKey[t];if(T)try{let O=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(T,d,{matchValue:i});if(O){m=!0;let R=O.value;I=T.id,C="Evaluated locally",f={key:t,enabled:R!==!1,variant:typeof R=="string"?R:void 0,payload:O.payload??void 0}}}catch(O){if(O instanceof yee||O instanceof Gd)this._logger?.info(`${O.name} when computing flag locally: ${t}: ${O.message}`);else throw O}}if(!m&&!c){let T=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(T===void 0)y=fVt.UNKNOWN_ERROR;else{h=T.requestId,A=T.evaluatedAt;let O=[];T.errorsWhileComputingFlags&&O.push(fVt.ERRORS_WHILE_COMPUTING),T.quotaLimited?.includes("feature_flags")&&O.push(fVt.QUOTA_LIMITED);let R=T.flags[t];if(R===void 0)O.push(fVt.FLAG_MISSING);else{I=R.metadata?.id,w=R.metadata?.version,C=R.reason?.description??R.reason?.code;let P;if(R.metadata?.payload!==void 0)try{P=JSON.parse(R.metadata.payload)}catch{P=R.metadata.payload}f={key:t,enabled:R.enabled,variant:R.variant,payload:P}}O.length>0&&(y=O.join(","))}}if(o){let T=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,O=`${t}_${T}`;if(!(r in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[r].includes(O)){Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(O):this.distinctIdHasSentFlagCalls[r]=[O];let R={$feature_flag:t,$feature_flag_response:T,$feature_flag_id:I,$feature_flag_version:w,$feature_flag_reason:C,locally_evaluated:m,[`$feature/${t}`]:T,$feature_flag_request_id:h,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let P=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();P!==void 0&&(R.$feature_flag_definitions_loaded_at=P)}y&&(R.$feature_flag_error=y),this.capture({distinctId:r,event:"$feature_flag_called",properties:R,groups:s,disableGeoip:a})}}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(!this.options.personalApiKey)throw new Error("Personal API key is required for remote config payload decryption");let r=await this._requestRemoteConfigPayload(t);if(!r)return;let n=await r.json();if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(t,r,n){let i=await this.getFeatureFlag(t,r,n);if(i!==void 0)return!!i||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},h={},A=!0;if(f&&(m=f.response,h=f.payloads,A=f.fallbackToFlags),A&&!c){let y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...y.flags||{}},h={...h,...y.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(h={...h,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:h}}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){super.groupIdentifyStateless(t,r,n,{disableGeoip:o},i)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(t){let r=n=>Object.fromEntries(n.map(i=>[i,!0]));if(t===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(t)){this._flagOverrides=r(t);return}if(this._isFeatureFlagOverrideOptions(t)){"flags"in t&&(t.flags===!1?this._flagOverrides=void 0:Array.isArray(t.flags)?this._flagOverrides=r(t.flags):t.flags!==void 0&&(this._flagOverrides={...t.flags})),"payloads"in t&&(t.payloads===!1?this._payloadOverrides=void 0:t.payloads!==void 0&&(this._payloadOverrides={...t.payloads}));return}this._flagOverrides={...t}}_isFeatureFlagOverrideOptions(t){if(typeof t!="object"||t===null||Array.isArray(t))return!1;let r=t;if("flags"in r){let n=r.flags;if(n===!1||Array.isArray(n)||typeof n=="object"&&n!==null)return!0}if("payloads"in r){let n=r.payloads;if(n===!1||typeof n=="object"&&n!==null)return!0}return!1}withContext(t,r,n){return this.context?this.context.run(t,r,n):r()}getContext(){return this.context?.get()}enterContext(t,r){this.context?.enter(t,r)}async _shutdown(t){let r=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(t),this.errorTracking.shutdown();try{return await super._shutdown(t)}finally{r?.()}}async _requestRemoteConfigPayload(t){if(!this.options.personalApiKey)return;let r=`${this.host}/api/projects/@current/feature_flags/${t}/remote_config?token=${encodeURIComponent(this.apiKey)}`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},i=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let o=new AbortController;i=Nfe(()=>{o.abort()},this.options.requestTimeout),n.signal=o.signal}try{return await this.fetch(r,n)}catch(o){this._events.emit("error",o);return}finally{i&&clearTimeout(i)}}extractPropertiesFromEvent(t,r){if(!t)return{personProperties:{},groupProperties:{}};let n={},i={};for(let[o,s]of Object.entries(t))if(KMc(s)&&r&&o in r){let a={};for(let[c,u]of Object.entries(s))a[String(c)]=String(u);i[String(o)]=a}else n[String(o)]=String(s);return{personProperties:n,groupProperties:i}}async getFeatureFlagsForEvent(t,r,n,i){let o=i?.personProperties||{},s=i?.groupProperties||{},a=i?.flagKeys;if(i?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}else return{};if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}return(await super.getFeatureFlagsStateless(t,r,o,s,n)).flags}addLocalPersonAndGroupProperties(t,r,n,i){let o={distinct_id:t,...n||{}},s={};if(r)for(let a of Object.keys(r))s[a]={$group_key:r[a],...i?.[a]||{}};return{allPersonProperties:o,allGroupProperties:s}}createFeatureFlagEvaluationContext(t,r,n,i){return{distinctId:t,groups:r||{},personProperties:n||{},groupProperties:i||{},evaluationCache:{}}}captureException(t,r,n,i){if(!gH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");this.addPendingPromise(gH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.capture({...s,uuid:i})))}}async captureExceptionImmediate(t,r,n){if(!gH.isPreviouslyCapturedError(t)){let i=new Error("PostHog syntheticException");return this.addPendingPromise(gH.buildEventMessage(t,{syntheticException:i},r,n).then(o=>this.captureImmediate(o)))}}async prepareEventMessage(t){let{distinctId:r,event:n,properties:i,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u}=t,l=this.context?.get(),p=r||l?.distinctId,d={...this.props,...l?.properties||{},...i||{}};p||(p=ACe(),d.$process_person_profile=!1),l?.sessionId&&!d.$session_id&&(d.$session_id=l.sessionId);let f=this._runBeforeSend({distinctId:p,event:n,properties:d,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u});if(!f)return Promise.reject(null);let m=await Promise.resolve().then(async()=>{if(s){let h=typeof s=="object"?s:void 0;return await this.getFeatureFlagsForEvent(f.distinctId,o,c,h)}return f.event,{}}).then(h=>{let A={};if(h)for(let[I,w]of Object.entries(h))A[`$feature/${I}`]=w;let y=Object.keys(h||{}).filter(I=>h?.[I]!==!1).sort();return y.length>0&&(A.$active_feature_flags=y),A}).catch(()=>({})).then(h=>({...h,...f.properties||{},$groups:f.groups||o}));return f.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof m.$raw_user_agent=="string"&&VMc(m.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(f.event="$bot_pageview",m.$browser_type="bot"),{distinctId:f.distinctId,event:f.event,properties:m,options:{timestamp:f.timestamp,disableGeoip:f.disableGeoip,uuid:f.uuid}}}_runBeforeSend(t){let r=this.options.before_send;if(!r)return t;let n=Array.isArray(r)?r:[r],i=t;for(let o of n){if(i=o(i),!i)return this._logger.info(`Event '${t.event}' was rejected in beforeSend function`),null;if(!i.properties||Object.keys(i.properties).length===0){let s=`Event '${i.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}return i}};var U6c=require("async_hooks"),Iqr=class{constructor(){this.storage=new U6c.AsyncLocalStorage}get(){return this.storage.getStore()}run(t,r,n){return this.storage.run(this.resolve(t,n),r)}enter(t,r){this.storage.enterWith(this.resolve(t,r))}resolve(t,r){if(r?.fresh===!0)return t;let n=this.get()||{};return{distinctId:t.distinctId??n.distinctId,sessionId:t.sessionId??n.sessionId,properties:{...n.properties||{},...t.properties||{}}}}};var _6c="posthog-node";function P5d(e,{organization:t,projectId:r,prefix:n,severityAllowList:i=["error"],sendExceptionsToPostHog:o=!0}={}){return s=>{if(!(i==="*"||i.includes(s.level)))return s;s.tags||(s.tags={});let c=s.tags[c1o.POSTHOG_ID_TAG];if(c===void 0)return s;let u=e.options.host??"https://us.i.posthog.com",l=new URL(`/project/${e.apiKey}/person/${c}`,u).toString();s.tags["PostHog Person URL"]=l;let p=s.exception?.values||[],d=p.map(m=>({...m,stacktrace:m.stacktrace?{...m.stacktrace,type:"raw",frames:(m.stacktrace.frames||[]).map(h=>({...h,platform:"node:javascript"}))}:void 0})),f={$exception_message:p[0]?.value||s.message,$exception_type:p[0]?.type,$exception_level:s.level,$exception_list:d,$sentry_event_id:s.event_id,$sentry_exception:s.exception,$sentry_exception_message:p[0]?.value||s.message,$sentry_exception_type:p[0]?.type,$sentry_tags:s.tags};return t&&r&&(f.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+s.event_id),o&&e.capture({event:"$exception",distinctId:c,properties:f}),s}}var c1o=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=_6c,this.name=_6c,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(P5d(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};gH.errorPropertiesBuilder=new pM.ErrorPropertiesBuilder([new pM.EventCoercer,new pM.ErrorCoercer,new pM.ObjectCoercer,new pM.StringCoercer,new pM.PrimitiveCoercer],pM.createStackParser("node:javascript",pM.nodeStackLineParser),[MMc(),T6c]);var yCe=class extends vqr{getLibraryId(){return"posthog-node"}initializeContext(){return new Iqr}};var Cqr=class{posthog;constructor({posthogApiKey:t}){this.posthog=new yCe(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.44.10",usingAccessToken:!0,...tce()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var dVt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};tr();var est=require("fs/promises"),V6c=require("os"),q6c=require("path");var D5d="id",R5d=".fern",mVt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new yCe(r),this.userId=t==null?void 0:DEo(t),this.token=t}async identify(){this.userId!=null&&this.posthog.alias({distinctId:this.userId,alias:await this.getPersistedDistinctId()})}async sendEvent(t){let r=await this.getUserEmail();this.posthog.capture({distinctId:this.userId??await this.getPersistedDistinctId(),event:"CLI",properties:{version:"5.44.10",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...tce()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}userEmail;async getUserEmail(){if(this.userEmail!==null){if(this.userEmail!=null)return this.userEmail;if(this.token==null){this.userEmail=null;return}try{let t=await Hf({token:this.token.value}).user.getMyself();if(t.ok&&t.body.email!=null)return this.userEmail=t.body.email,this.userEmail}catch{}this.userEmail=null}}persistedDistinctId;async getPersistedDistinctId(){if(this.persistedDistinctId==null){let t=lR(),r=Ze(Ht.of((0,V6c.homedir)()),Fe.of(R5d),Fe.of(D5d));try{await sr(r)?this.persistedDistinctId=(await(0,est.readFile)(r)).toString():(await(0,est.mkdir)((0,q6c.dirname)(r),{recursive:!0}),await(0,est.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var u1o;async function hVt(){return u1o==null&&(u1o=await F5d()),u1o}async function F5d(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new dVt;let r=await yit();return r!=null?new mVt({token:r,posthogApiKey:e}):await BV()!=null?new Cqr({posthogApiKey:e}):new mVt({token:void 0,posthogApiKey:e})}catch{return new dVt}}jt();_t();var gVt=we(require("process"),1);E9e();var H6c=we(vdo(),1),K6c=we(W6c(),1);function lT(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=XG(e),e.length===0))return 0;e=e.replace((0,K6c.default)()," ");let r=t.ambiguousIsNarrow?1:2,n=0;for(let i of e){let o=i.codePointAt(0);if(o<=31||o>=127&&o<=159||o>=768&&o<=879)continue;switch(H6c.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}function wqr(e){let t=0;for(let r of e.split(`
|
|
3226
3226
|
`))t=Math.max(t,lT(r));return t}var mLc=we(p1o(),1);var N5d=/[\p{Lu}]/u,j5d=/[\p{Ll}]/u,X6c=/^[\p{Lu}](?![\p{Lu}])/gu,eLc=/([\p{Alpha}\p{N}_]|$)/u,f1o=/[_.\- ]+/,Q5d=new RegExp("^"+f1o.source),Z6c=new RegExp(f1o.source+eLc.source,"gu"),$6c=new RegExp("\\d+"+eLc.source,"gu"),M5d=(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&&N5d.test(u)?(e=e.slice(0,c)+"-"+e.slice(c),i=!1,s=o,o=!0,c++):o&&s&&j5d.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},L5d=(e,t)=>(X6c.lastIndex=0,e.replace(X6c,r=>t(r))),z5d=(e,t)=>(Z6c.lastIndex=0,$6c.lastIndex=0,e.replace(Z6c,(r,n)=>t(n)).replace($6c,r=>t(r)));function d1o(e,t){if(!(typeof e=="string"||Array.isArray(e)))throw new TypeError("Expected the input to be `string | string[]`");if(t={pascalCase:!1,preserveConsecutiveUppercase:!1,...t},Array.isArray(e)?e=e.map(o=>o.trim()).filter(o=>o.length).join("-"):e=e.trim(),e.length===0)return"";let r=t.locale===!1?o=>o.toLowerCase():o=>o.toLocaleLowerCase(t.locale),n=t.locale===!1?o=>o.toUpperCase():o=>o.toLocaleUpperCase(t.locale);return e.length===1?f1o.test(e)?"":t.pascalCase?n(e):r(e):(e!==r(e)&&(e=M5d(e,r,n,t.preserveConsecutiveUppercase)),e=e.replace(Q5d,""),e=t.preserveConsecutiveUppercase?L5d(e,r):r(e),t.pascalCase&&(e=n(e.charAt(0))+e.slice(1)),z5d(e,n))}var A1o=we(rLc(),1);E9e();var nLc=(e=0)=>t=>`\x1B[${t+e}m`,iLc=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,oLc=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,oE={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},loE=Object.keys(oE.modifier),q5d=Object.keys(oE.color),G5d=Object.keys(oE.bgColor),poE=[...q5d,...G5d];function W5d(){let e=new Map;for(let[t,r]of Object.entries(oE)){for(let[n,i]of Object.entries(r))oE[n]={open:`\x1B[${i[0]}m`,close:`\x1B[${i[1]}m`},r[n]=oE[n],e.set(i[0],i[1]);Object.defineProperty(oE,t,{value:r,enumerable:!1})}return Object.defineProperty(oE,"codes",{value:e,enumerable:!1}),oE.color.close="\x1B[39m",oE.bgColor.close="\x1B[49m",oE.color.ansi=nLc(),oE.color.ansi256=iLc(),oE.color.ansi16m=oLc(),oE.bgColor.ansi=nLc(10),oE.bgColor.ansi256=iLc(10),oE.bgColor.ansi16m=oLc(10),Object.defineProperties(oE,{rgbToAnsi256:{value(t,r,n){return t===r&&r===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(o=>o+o).join(""));let i=Number.parseInt(n,16);return[i>>16&255,i>>8&255,i&255]},enumerable:!1},hexToAnsi256:{value:t=>oE.rgbToAnsi256(...oE.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,n,i;if(t>=232)r=((t-232)*10+8)/255,n=r,i=r;else{t-=16;let a=t%36;r=Math.floor(t/36)/5,n=Math.floor(a/6)/5,i=a%6/5}let o=Math.max(r,n,i)*2;if(o===0)return 30;let s=30+(Math.round(i)<<2|Math.round(n)<<1|Math.round(r));return o===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(t,r,n)=>oE.ansi256ToAnsi(oE.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>oE.ansi256ToAnsi(oE.hexToAnsi256(t)),enumerable:!1}}),oE}var H5d=W5d(),sLc=H5d;var xqr=new Set(["\x1B","\x9B"]),K5d=39,h1o="\x07",uLc="[",J5d="]",lLc="m",g1o=`${J5d}8;;`,aLc=e=>`${xqr.values().next().value}${uLc}${e}${lLc}`,cLc=e=>`${xqr.values().next().value}${g1o}${e}${h1o}`,Y5d=e=>e.split(" ").map(t=>lT(t)),m1o=(e,t,r)=>{let n=[...t],i=!1,o=!1,s=lT(XG(e[e.length-1]));for(let[a,c]of n.entries()){let u=lT(c);if(s+u<=r?e[e.length-1]+=c:(e.push(c),s=0),xqr.has(c)&&(i=!0,o=n.slice(a+1).join("").startsWith(g1o)),i){o?c===h1o&&(i=!1,o=!1):c===lLc&&(i=!1);continue}s+=u,s===r&&a<n.length-1&&(e.push(""),s=0)}!s&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},X5d=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(lT(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},Z5d=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i,o,s=Y5d(e),a=[""];for(let[u,l]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let p=lT(a[a.length-1]);if(u!==0&&(p>=t&&(r.wordWrap===!1||r.trim===!1)&&(a.push(""),p=0),(p>0||r.trim===!1)&&(a[a.length-1]+=" ",p++)),r.hard&&s[u]>t){let d=t-p,f=1+Math.floor((s[u]-d-1)/t);Math.floor((s[u]-1)/t)<f&&a.push(""),m1o(a,l,t);continue}if(p+s[u]>t&&p>0&&s[u]>0){if(r.wordWrap===!1&&p<t){m1o(a,l,t);continue}a.push("")}if(p+s[u]>t&&r.wordWrap===!1){m1o(a,l,t);continue}a[a.length-1]+=l}r.trim!==!1&&(a=a.map(u=>X5d(u)));let c=[...a.join(`
|
|
3227
3227
|
`)];for(let[u,l]of c.entries()){if(n+=l,xqr.has(l)){let{groups:d}=new RegExp(`(?:\\${uLc}(?<code>\\d+)m|\\${g1o}(?<uri>.*)${h1o})`).exec(c.slice(u).join(""))||{groups:{}};if(d.code!==void 0){let f=Number.parseFloat(d.code);i=f===K5d?void 0:f}else d.uri!==void 0&&(o=d.uri.length===0?void 0:d.uri)}let p=sLc.codes.get(Number(i));c[u+1]===`
|
|
3228
3228
|
`?(o&&(n+=cLc("")),i&&p&&(n+=aLc(p))):l===`
|
|
@@ -3691,7 +3691,7 @@ https://buildwithfern.com/learn/docs/getting-started/project-structure#api-defin
|
|
|
3691
3691
|
`).filter(s=>!s.startsWith("#")).join(`
|
|
3692
3692
|
`);try{return wr.load(o)??[]}catch(s){return this.taskContext.logger.warn(`Failed to parse _navigation.yml for library '${t}': ${qn(s)}`),null}}async registerLibraryMdxPage(t,r){let n=Ze(t,Fe.of(r));if(!(0,e$n.existsSync)(n)){this.taskContext.logger.warn(`Library MDX file not found: ${n}`);return}let i=ds(this.docsWorkspace.absoluteFilePath,n),o=await(0,eme.readFile)(n,"utf-8");return this.parsedDocsConfig.pages[i]=o,Ot.PageId(i)}async convertLibraryNavNodes(t,r,n){let i=[];for(let o of t)if(o.type==="page"&&o.pageId!=null){let s=await this.registerLibraryMdxPage(r,o.pageId);if(s==null)continue;let a=n.apply({fullSlug:o.slug.split("/"),urlSlug:qm(o.title)});i.push({id:this.#e.get(s),type:"page",collapsed:void 0,slug:a.get(),title:o.title,icon:void 0,hidden:!1,viewers:void 0,orphaned:void 0,pageId:s,authed:void 0,noindex:void 0,featureFlags:void 0,availability:void 0})}else if(o.type==="section"){let s=n.apply({fullSlug:o.slug.split("/"),urlSlug:qm(o.title)}),a=this.#e.get(`library-section/${o.slug}`),c=await this.registerLibraryMdxPage(r,`${o.slug}.mdx`),u=(o.children??[]).filter(p=>!(p.type==="page"&&p.slug===o.slug)),l=await this.convertLibraryNavNodes(u,r,s);i.push({id:a,type:"section",overviewPageId:c,slug:s.get(),title:o.title,icon:void 0,collapsed:void 0,collapsible:void 0,collapsedByDefault:void 0,hidden:!1,viewers:void 0,orphaned:void 0,children:l,authed:void 0,pointsTo:void 0,noindex:void 0,featureFlags:void 0,availability:void 0})}return i}async toPageNode({item:t,parentSlug:r,hideChildren:n,parentAvailability:i}){let o=Ot.PageId(this.toRelativeFilepath(t.absolutePath)),s=r.apply({urlSlug:t.slug??qm(t.title),fullSlug:this.markdownFilesToFullSlugs.get(t.absolutePath)?.split("/")}),a=this.#e.get(o),c=this.markdownFilesToAvailability.get(t.absolutePath);return{id:a,type:"page",collapsed:void 0,slug:s.get(),title:this.markdownFilesToSidebarTitle.get(t.absolutePath)??t.title,icon:this.resolveIconFileId(t.icon),hidden:n||t.hidden,viewers:t.viewers,orphaned:t.orphaned,pageId:o,authed:void 0,noindex:t.noindex||this.markdownFilesToNoIndex.get(t.absolutePath),featureFlags:t.featureFlags,availability:pA(c??t.availability??i)}}async toSectionNode({prefix:t,item:r,parentSlug:n,hideChildren:i,parentAvailability:o}){let s=this.toRelativeFilepath(r.overviewAbsolutePath),a=s?Ot.PageId(s):void 0,c=this.#e.get(a??`${t}/section`),u=r.overviewAbsolutePath?this.markdownFilesToFullSlugs.get(r.overviewAbsolutePath)?.split("/"):void 0,l=r.slug??qm(r.title),p,d;if(r.skipUrlSlug&&u!=null)p=n.apply({urlSlug:l,fullSlug:u}),d=n.apply({urlSlug:l,skipUrlSlug:!0});else{let I=n.apply({urlSlug:l,fullSlug:u,skipUrlSlug:r.skipUrlSlug});p=I,d=I}let f=r.overviewAbsolutePath!=null?this.markdownFilesToNoIndex.get(r.overviewAbsolutePath):void 0,m=r.overviewAbsolutePath!=null?this.markdownFilesToAvailability.get(r.overviewAbsolutePath):void 0,h=i||r.hidden,y=(await Promise.all(r.contents.map(I=>this.toNavigationChild({prefix:c,item:I,parentSlug:d,hideChildren:h,parentAvailability:r.availability??o})))).filter(I=>I!=null);if(a==null){let I=y.find(w=>w.type==="apiReference"&&w.hideTitle===!0&&w.overviewPageId!=null);I!=null&&(a=I.overviewPageId)}return{id:c,type:"section",overviewPageId:a,slug:p.get(),title:r.overviewAbsolutePath!=null?this.markdownFilesToSidebarTitle.get(r.overviewAbsolutePath)??r.title:r.title,icon:this.resolveIconFileId(r.icon),collapsed:r.collapsed,collapsible:r.collapsible,collapsedByDefault:r.collapsedByDefault,hidden:h,viewers:r.viewers,orphaned:r.orphaned,children:y,authed:void 0,pointsTo:void 0,noindex:f,featureFlags:r.featureFlags,availability:pA(m??r.availability??o)}}async convertTabbedNavigation(t,r,n){let i=this.#e.get(`${t}/tabbed`);return{type:"tabbed",id:i,collapsed:void 0,children:await Promise.all(r.map(o=>this.toTabChild(i,o,n)))}}async toTabChild(t,r,n){return jx(r.child)._visit({link:({href:i,target:o})=>this.toTabLinkNode(r,i,o),layout:({layout:i})=>this.toTabNode(t,r,i,n),changelog:({changelog:i})=>this.toTabChangelogNode(r,i,n),variants:({variants:i})=>this.toTabNodeWithVariants(t,r,i,n)})}async toTabChangelogNode(t,r,n){return new fUe(this.markdownFilesToFullSlugs,this.markdownFilesToNoIndex,this.markdownFilesToTags,r,this.docsWorkspace,this.#e).toChangelogNode({parentSlug:n,title:t.title,icon:this.resolveIconFileId(t.icon),viewers:t.viewers,hidden:t.hidden,slug:t.slug})}async toTabLinkNode(t,r,n){return{type:"link",id:this.#e.get(r),collapsed:void 0,title:t.title,url:Ot.V1.Url(r),target:n,icon:this.resolveIconFileId(t.icon)}}async toTabNode(t,r,n,i){let o=this.#e.get(`${t}/tab`),s=i.apply({urlSlug:r.slug??qm(r.title),skipUrlSlug:r.skipUrlSlug});return{type:"tab",id:o,collapsed:void 0,title:r.title,slug:s.get(),icon:this.resolveIconFileId(r.icon),hidden:r.hidden,authed:void 0,viewers:r.viewers,orphaned:r.orphaned,pointsTo:void 0,child:await this.toSidebarRootNode(o,n,s),featureFlags:r.featureFlags}}async toTabNodeWithVariants(t,r,n,i){let o=this.#e.get(`${t}/tab`),s=i.apply({urlSlug:r.slug??qm(r.title),skipUrlSlug:r.skipUrlSlug});return{type:"tab",id:o,collapsed:void 0,title:r.title,slug:s.get(),icon:this.resolveIconFileId(r.icon),hidden:r.hidden,authed:void 0,viewers:r.viewers,orphaned:r.orphaned,pointsTo:void 0,child:await this.toSidebarRootNodeWithVariants(o,n,s),featureFlags:r.featureFlags}}getFileId(t){if(t==null)return;let r=this.collectedFileIds.get(t);return r==null?this.taskContext.failAndThrow("Failed to locate file after uploading: "+t,void 0,{code:D.Code.InternalError}):eS.FileId(r)}resolveIconFileId(t){if(t!=null)return this.collectedFileIds.has(t)?`file:${this.getFileId(t)}`:t}resolveTranslationOverlayNavbarLinkIcons(){let t=this.parsedDocsConfig.translationNavigationOverlays;if(t!=null)for(let r of Object.values(t))r.navbarLinks!=null&&(r.navbarLinks=r.navbarLinks.map(n=>n.type==="github"?n:n.type==="dropdown"?{...n,icon:this.resolveIconFileId(n.icon),rightIcon:this.resolveIconFileId(n.rightIcon),links:n.links.map(i=>({...i,icon:this.resolveIconFileId(i.icon),rightIcon:this.resolveIconFileId(i.rightIcon)}))}:{...n,icon:this.resolveIconFileId(n.icon),rightIcon:this.resolveIconFileId(n.rightIcon)}))}convertPageActions(){if(this.parsedDocsConfig.pageActions!=null)return{default:this.parsedDocsConfig.pageActions.default,options:{askAi:this.parsedDocsConfig.pageActions.options.askAi,copyPage:this.parsedDocsConfig.pageActions.options.copyPage,viewAsMarkdown:this.parsedDocsConfig.pageActions.options.viewAsMarkdown,openAi:this.parsedDocsConfig.pageActions.options.openAi,claude:this.parsedDocsConfig.pageActions.options.claude,cursor:this.parsedDocsConfig.pageActions.options.cursor,claudeCode:this.parsedDocsConfig.pageActions.options.claudeCode,vscode:this.parsedDocsConfig.pageActions.options.vscode,custom:this.parsedDocsConfig.pageActions.options.custom.map(t=>({title:t.title,subtitle:t.subtitle,url:t.url,icon:this.resolveIconFileId(t.icon),default:t.default}))}}}convertColorConfigImageReferences(){let{colors:t}=this.parsedDocsConfig;if(t!=null)return t.type==="dark"?{...t,...this.convertLogoAndBackgroundImage({theme:"dark"})}:t.type==="light"?{...t,...this.convertLogoAndBackgroundImage({theme:"light"}),type:"light"}:{...t,dark:{...t.dark,...this.convertLogoAndBackgroundImage({theme:"dark"})},light:{...t.light,...this.convertLogoAndBackgroundImage({theme:"light"})}}}convertLogoAndBackgroundImage({theme:t}){let{logo:r,backgroundImage:n}=this.parsedDocsConfig,i=r?.[t],o=n?.[t];return{logo:this.getFileId(i),backgroundImage:this.getFileId(o)}}convertDocsTypographyConfiguration(){if(this.parsedDocsConfig.typography!=null)return{headingsFont:this.convertFont(this.parsedDocsConfig.typography.headingsFont,"headings"),bodyFont:this.convertFont(this.parsedDocsConfig.typography.bodyFont,"body"),codeFont:this.convertFont(this.parsedDocsConfig.typography.codeFont,"code")}}convertFont(t,r){if(t==null||t.variants[0]==null)return;let n=this.getFileId(t.variants[0].absolutePath);return{type:"custom",name:t.name??`font:${r}:${n}`,variants:t.variants.map(i=>({fontFile:this.getFileId(i.absolutePath),weight:i.weight,style:i.style!=null?[i.style]:void 0})),display:t.display,fallback:t.fallback,fontVariationSettings:t.fontVariationSettings}}convertJavascriptConfiguration(){if(this.parsedDocsConfig.js!=null)return{files:this.parsedDocsConfig.js.files.map(({absolutePath:t,strategy:r})=>({fileId:this.getFileId(t),strategy:r})).filter(Ja),remote:this.parsedDocsConfig.js.remote?.map(t=>({...t,url:eS.Url(t.url)})),inline:void 0}}convertMetadata(){if(this.parsedDocsConfig.metadata==null)return;let{"og:image":t,"og:logo":r,"twitter:image":n,"og:dynamic:background-image":i,...o}=this.parsedDocsConfig.metadata;return{...o,"og:image":this.convertFileIdOrUrl(t),"og:logo":this.convertFileIdOrUrl(r),"twitter:image":this.convertFileIdOrUrl(n),"og:dynamic:background-image":this.convertFileIdOrUrl(i)}}convertFileIdOrUrl(t){if(t!=null)return jx(t,"type")._visit({filepath:({value:r})=>({type:"fileId",value:this.getFileId(r)}),url:({value:r})=>({type:"url",value:eS.Url(r)}),_other:()=>this.taskContext.failAndThrow("Invalid metadata configuration",void 0,{code:D.Code.ConfigError})})}resolveLinksInIrDocs(t,r){let n={absolutePathToFernFolder:this.docsWorkspace.absoluteFilePath,absolutePathToMarkdownFile:this.docsWorkspace.absoluteFilePath};ZZn(t,r,n)}};function Sxm(e,t){let r=e?.launch;if(e?.github==null)return{url:void 0,launch:r};let{owner:n,repo:i,branch:o="main",host:s="https://github.com"}=e.github;return{url:`${TN(s)}/${n}/${i}/blob/${o}/fern/${t}?plain=1`,launch:r}}function Txm(e){switch(e){case"beta":return Ot.V1.NavigationV1Availability.Beta;case"deprecated":return Ot.V1.NavigationV1Availability.Deprecated;case"ga":return Ot.V1.NavigationV1Availability.GenerallyAvailable;case"stable":return Ot.V1.NavigationV1Availability.Stable;case"alpha":return Ot.V1.NavigationV1Availability.Alpha;case"preview":return Ot.V1.NavigationV1Availability.Preview;case"legacy":return Ot.V1.NavigationV1Availability.Legacy;default:xe(e)}}jt();tr();_t();var k4o=require("fs/promises"),bsu=we(jLe(),1),n$n=we(require("path"),1),Esu=we(fw(),1);function t$n(e){return(e.startsWith("http://")||e.startsWith("https://"))&&e.includes("X-Amz-")}function Bxm(e){return e.startsWith("http://")||e.startsWith("https://")}function vsu(e){if(e==null)return;let t=e.match(/filename\*?=(?:"([^"]+)"|([^;]+))/i),r=t?.[1]??t?.[2]?.trim();return r!=null&&n$n.default.extname(r)!==""?r:void 0}function Oxm(e){try{let r=new URL(e).searchParams.get("response-content-disposition");return vsu(r)}catch{return}}async function r$n(e,t,r){let n=Oxm(e),i=await fetch(e);if(!i.ok)throw new Error(`Failed to download theme asset: ${i.status} ${e}`);let o=vsu(i.headers.get("content-disposition")),s=n??o??(()=>{let u=(()=>{let l=i.headers.get("content-type")?.split(";")[0]?.trim();if(l){let p=bsu.default.extension(l);if(p)return`.${p}`}return""})()||(()=>{try{let l=new URL(e).pathname,p=l.lastIndexOf(".");return p>=0?l.slice(p):""}catch{return""}})();return`theme_asset_${r}${u}`})(),a=n$n.default.join(t,s),c=Buffer.from(await i.arrayBuffer());return await(0,k4o.writeFile)(a,c),a}async function Pxm(e,t){let r=0,n=JSON.parse(JSON.stringify(e));async function i(a){return typeof a=="string"&&t$n(a)?r$n(a,t,r++):a}if(n.logo!=null&&typeof n.logo=="object"){let a=n.logo;a.dark=await i(a.dark),a.light=await i(a.light)}if(n.favicon=await i(n.favicon),n["background-image"]!=null&&typeof n["background-image"]=="object"){let a=n["background-image"];a.dark=await i(a.dark),a.light=await i(a.light)}if(n.typography!=null&&typeof n.typography=="object"){let a=n.typography;for(let c of["bodyFont","headingsFont","codeFont"]){let u=a[c];if(u!=null&&typeof u=="object"){let l=u;if(Array.isArray(l.paths)){for(let p of l.paths)if(p!=null&&typeof p=="object"){let d=p;d.path=await i(d.path)}}}}}typeof n.css=="string"?n.css=t$n(n.css)?await r$n(n.css,t,r++):n.css:Array.isArray(n.css)&&(n.css=await Promise.all(n.css.map(async a=>typeof a=="string"&&t$n(a)?r$n(a,t,r++):a)));let o=n.js,s=Array.isArray(o)?o:o!=null?[o]:[];if(n.js=await Promise.all(s.map(async a=>{if(a==null||typeof a!="object")return a;let c=a;return typeof c.url=="string"&&Bxm(c.url)?c:typeof c.path=="string"&&t$n(c.path)?{...c,path:await r$n(c.path,t,r++)}:c})),n.header=await i(n.header),n.footer=await i(n.footer),n.metadata!=null&&typeof n.metadata=="object"){let a=n.metadata;for(let c of["og:image","twitter:image","og:dynamic:background-image","og:logo"])a[c]=await i(a[c])}return n}function Isu(e,t){let r={...e};for(let[n,i]of Object.entries(t)){let o=e[n];So(i)&&So(o)?r[n]=Isu(o,i):r[n]=i}return r}var{THEME_ELIGIBLE_FIELDS:Dxm,THEME_FIELD_POLICIES:Rxm}=Uh;function Fxm(e){return e.replace(/-([a-z])/g,(t,r)=>r.toUpperCase())}function F4o(e){if(e==null||typeof e!="object")return e;if(Array.isArray(e))return e.map(F4o);let t={};for(let[r,n]of Object.entries(e)){let i=Fxm(r);t[i]=F4o(n)}return t}function kxm(e){return F4o(e)}function Nxm(e,t){let r=kxm(t),n=e,i={...n};for(let o of Dxm){let s=r[o],a=n[o],c=Rxm[o]??"global",u=s!=null,l=a!=null;c==="global"?u&&(So(s)&&So(a)?i[o]=Isu(a,s):i[o]=s):l?i[o]=a:u&&(i[o]=s)}return i}async function bqt({docsWorkspace:e,organization:t,fdrOrigin:r,token:n,taskContext:i}){let o=e.config.globalTheme;if(o==null)return e;i.logger.info(`Fetching global theme "${o}" for org "${t}"...`);let s=`${r}/v2/registry/themes/${encodeURIComponent(t)}/${encodeURIComponent(o)}`,a;try{let d=await fetch(s,{headers:{Authorization:`Bearer ${n}`,"Accept-Encoding":"identity"}}),f=await d.text();d.status===404&&i.failAndThrow(`Global theme "${o}" not found for org "${t}". Upload it first with: fern beta docs theme upload --name ${o}`,void 0,{code:D.Code.ConfigError}),d.ok||i.failAndThrow(`Failed to fetch global theme "${o}": HTTP ${d.status}`,void 0,{code:D.Code.ConfigError});let m;try{m=JSON.parse(f)}catch{i.failAndThrow(`Failed to fetch global theme "${o}": unexpected response from server`+(f.length>0?` \u2014 ${f.slice(0,200)}`:" (empty body)"),void 0,{code:D.Code.NetworkError})}let h=m;if(h.error!=null&&(h.error.code==="NOT_FOUND"&&i.failAndThrow(`Global theme "${o}" not found for org "${t}". Upload it first with: fern beta docs theme upload --name ${o}`,void 0,{code:D.Code.ConfigError}),i.failAndThrow(`Failed to fetch global theme "${o}": ${h.error.message??h.error.code??"unknown error"}`,void 0,{code:D.Code.ConfigError})),h.config==null)return i.failAndThrow(`Failed to fetch global theme "${o}": response missing "config" field`,void 0,{code:D.Code.NetworkError}),e;a=h.config}catch(d){throw d instanceof Error&&d.message.includes("fetch failed")&&i.failAndThrow(`Could not reach FDR at ${r} to fetch global theme "${o}"`,d,{code:D.Code.NetworkError}),d}let{path:c}=await Esu.default.dir({prefix:"fern-theme-",unsafeCleanup:!0});i.logger.debug(`Downloading theme assets to ${c}`);let u;try{u=await Pxm(a,c)}catch(d){let f=d instanceof Error?`: ${d.message}`:"";return i.failAndThrow(`Failed to download assets for global theme "${o}"${f}`,d,{code:D.Code.NetworkError}),e}let l=Nxm(e.config,u);i.logger.info(`Applied global theme "${o}" \u2014 ${Ht.of(c)} (cleaned up on exit)`);let p=n$n.default.join(c,"stitched-docs.yml.json");return await(0,k4o.writeFile)(p,JSON.stringify(l,null,2)),i.logger.debug(`Stitched docs.yml after importing theme written to: ${p}`),{...e,config:l}}jt();async function EI(e){return(await Promise.all(e.apiWorkspaces.map(async t=>t instanceof _p?t:null))).filter(Ja)}async function N4o(e,t,r){if(e instanceof JQ){t.logger.info("Skipping, API is specified as a Fern Definition.");return}else if(!(e instanceof _p))return;let n=await e.getIntermediateRepresentation({context:t,audiences:r,enableUniqueErrorsPerEndpoint:!0,generateV1Examples:!1,logWarnings:!1});return jF({ir:n,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},playgroundConfig:{oauth:!0},context:t})}jt();var j4o={};te(j4o,{additionalProperties:()=>Lxm,default:()=>Uxm,definitions:()=>zxm,properties:()=>Qxm,required:()=>Mxm,type:()=>jxm});var jxm="object",Qxm={tabs:{oneOf:[{type:"object",additionalProperties:{$ref:"#/definitions/docs.TabConfig"}},{type:"null"}]},"landing-page":{oneOf:[{$ref:"#/definitions/docs.PageConfiguration"},{type:"null"}]},navigation:{$ref:"#/definitions/docs.NavigationConfig"}},Mxm=["navigation"],Lxm=!1,zxm={"docs.RoleId":{type:"string",description:"ID of role which is used to filter the content shown in Fern Docs."},"docs.Role":{anyOf:[{$ref:"#/definitions/docs.RoleId"},{type:"array",items:{$ref:"#/definitions/docs.RoleId"}}],description:"Audience can either be a string or list of strings\ni.e. `audience: internal` or `audience: [internal, beta]`"},"docs.FeatureFlag":{type:"object",properties:{flag:{type:"string",description:"The name of the feature flag to check."},"fallback-value":{oneOf:[{type:["string","number","boolean","object","array","null"]},{type:"null"}],description:"The default value to use if the feature flag is not set. If not specified, defaults to false."},match:{oneOf:[{type:["string","number","boolean","object","array","null"]},{type:"null"}],description:"The value that the feature flag should match for the content to be shown. If not specified, content is shown when the flag is true."}},required:["flag"],additionalProperties:!1},"docs.FeatureFlagConfiguration":{anyOf:[{type:"string",description:"The name of the feature flag, We assume that it is a boolean feature flag that needs to be evaluated to true."},{$ref:"#/definitions/docs.FeatureFlag",description:"A single feature flag with a configurable name, fallback value, and match value. Especially useful for non boolean feature flags."},{type:"array",items:{$ref:"#/definitions/docs.FeatureFlag"},description:"A list of feature flags. If any of the feature flags are satisfied, we will show all content."}]},"docs.Target":{type:"string",enum:["_blank","_self","_parent","_top"]},"docs.ChangelogFolderRelativePath":{type:"string",description:'The relative path to a folder containing markdown files broken down by date.\n\nExample:\n```\nchangelog: "changelog"\n```\n\nThis will look for markdown files in the `/fern/changelog` directory, which should contain files named like\n- `/fern/changelog/2024-04-29.mdx`.\n- `/fern/changelog/2023-01-02.mdx`.'},"docs.TabConfig":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},"display-name":{type:"string"},icon:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},href:{oneOf:[{type:"string"},{type:"null"}],description:"If `href` is set, clicking on the tab will redirect to the given URL.\n\nTabs with `href` must not have children in the navigation config."},target:{oneOf:[{$ref:"#/definitions/docs.Target"},{type:"null"}]},changelog:{oneOf:[{$ref:"#/definitions/docs.ChangelogFolderRelativePath"},{type:"null"}]}},required:["display-name"],additionalProperties:!1},"docs.Availability":{type:"string",enum:["stable","generally-available","in-development","pre-release","deprecated","beta","alpha","preview","legacy"]},"docs.PageConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},page:{type:"string"},path:{type:"string"},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},noindex:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]}},required:["page","path"],additionalProperties:!1},"docs.CollapsedStringValue":{type:"string",enum:["open-by-default"]},"docs.CollapsedValue":{anyOf:[{type:"boolean"},{$ref:"#/definitions/docs.CollapsedStringValue"}]},"docs.SectionConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},section:{type:"string"},path:{oneOf:[{type:"string"},{type:"null"}],description:"The relative path to the markdown file that will be displayed when the section is clicked."},contents:{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}],description:"Deprecated. Use `collapsible` and `collapsed-by-default` instead."},collapsible:{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section can be expanded/collapsed by the user."},"collapsed-by-default":{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section starts collapsed. Only meaningful when `collapsible` is true. Defaults to false (starts open)."},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]}},required:["section","contents"],additionalProperties:!1},"docs.AudienceId":{type:"string",description:"ID of audience which is used to filter the API spec."},"docs.Audience":{anyOf:[{$ref:"#/definitions/docs.AudienceId"},{type:"array",items:{$ref:"#/definitions/docs.AudienceId"}}],description:"Audience can either be a string or list of strings\ni.e. `audiences: internal` or `audiences: [internal, beta]`"},"docs.VersionedSnippetLanguageConfiguration":{type:"object",properties:{version:{type:"string"},package:{type:"string"}},required:["version","package"],additionalProperties:!1},"docs.SnippetLanguageConfiguration":{anyOf:[{type:"string"},{$ref:"#/definitions/docs.VersionedSnippetLanguageConfiguration"}],description:`This snippets config object is meant to allow users to specify a specific package for the snippets,
|
|
3693
3693
|
and optionally a version for that package. If you pass in a string, that should be the name of the package.`},"docs.SnippetsConfiguration":{type:"object",properties:{python:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},typescript:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},go:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},java:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},ruby:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},csharp:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},php:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},swift:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},rust:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]}},additionalProperties:!1},"docs.PlaygroundButtonSettings":{type:"object",properties:{href:{oneOf:[{type:"string"},{type:"null"}]}},additionalProperties:!1},"docs.PlaygroundSettings":{type:"object",properties:{hidden:{oneOf:[{type:"boolean"},{type:"null"}]},environments:{oneOf:[{type:"array",items:{type:"string"}},{type:"null"}],description:"A list of environment IDs that are allowed to be used in the playground. If not provided, all environments are allowed. And if the provided list is empty, the playground should be disabled."},button:{oneOf:[{$ref:"#/definitions/docs.PlaygroundButtonSettings"},{type:"null"}]},oauth:{oneOf:[{type:"boolean"},{type:"null"}]},"limit-websocket-messages-per-connection":{oneOf:[{type:"integer"},{type:"null"}],description:"The maximum number of websocket messages per connection in the playground."}},additionalProperties:!1},"docs.ApiReferencePackageConfigurationWithOptions":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},title:{oneOf:[{type:"string"},{type:"null"}]},summary:{oneOf:[{type:"string"},{type:"null"}],description:"Relative path to the markdown file. This summary is displayed at the top of the API section."},contents:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that is applied only to descendants of this api package."}},additionalProperties:!1},"docs.ApiReferencePackageConfiguration":{anyOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{$ref:"#/definitions/docs.ApiReferencePackageConfigurationWithOptions"}]},"docs.ApiReferenceSectionConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},section:{type:"string",description:"The title of the api package that will be displayed in the sidebar."},"referenced-packages":{oneOf:[{type:"array",items:{type:"string"}},{type:"null"}],description:"This section will inherit the endpoints from the specified subpackage(s). If multiple packages are specified, they will be merged."},summary:{oneOf:[{type:"string"},{type:"null"}],description:"Relative path to the markdown file."},contents:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}],description:"Deprecated. Use `collapsible` and `collapsed-by-default` instead."},collapsible:{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section can be expanded/collapsed by the user in the sidebar."},"collapsed-by-default":{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section starts collapsed. Only meaningful when collapsible is true."},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that affects all endpoints."}},required:["section"],additionalProperties:!1},"docs.ApiReferenceEndpointConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},endpoint:{type:"string"},title:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that affect this endpoint specifically."}},required:["endpoint"],additionalProperties:!1},"docs.ApiReferenceOperationConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},operation:{type:"string"},title:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]}},required:["operation"],additionalProperties:!1,description:"Defines a GraphQL-native schema for selecting operations (REST -> Endpoint === GraphQL -> Operation)"},"docs.LinkConfiguration":{type:"object",properties:{link:{type:"string"},href:{type:"string"},icon:{oneOf:[{type:"string"},{type:"null"}]},target:{oneOf:[{$ref:"#/definitions/docs.Target"},{type:"null"}]}},required:["link","href"],additionalProperties:!1},"docs.ApiReferenceLayoutItem":{anyOf:[{type:"string",description:"This should be either an endpoint, websocket, webhook, or subpackage ID"},{type:"object",additionalProperties:{$ref:"#/definitions/docs.ApiReferencePackageConfiguration"},description:"Keyed by subpackage name, this object allows you to group endpoints and pages together."},{$ref:"#/definitions/docs.ApiReferenceSectionConfiguration"},{$ref:"#/definitions/docs.ApiReferenceEndpointConfiguration"},{$ref:"#/definitions/docs.ApiReferenceOperationConfiguration"},{$ref:"#/definitions/docs.PageConfiguration"},{$ref:"#/definitions/docs.LinkConfiguration"}],description:"Use the `layout` object to customize the order that your API endpoints\nare displayed in the docs site."},"docs.ApiReferenceConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},api:{type:"string"},"api-name":{oneOf:[{type:"string"},{type:"null"}],description:"Name of API that we are referencing"},openrpc:{oneOf:[{type:"string"},{type:"null"}],description:"Path to an openrpc spec."},audiences:{oneOf:[{$ref:"#/definitions/docs.Audience"},{type:"null"}]},"display-errors":{oneOf:[{type:"boolean"},{type:"null"}],description:"Defaults to false"},"tag-description-pages":{oneOf:[{type:"boolean"},{type:"null"}],description:"If true, a page will be created for each tag in the OpenAPI spec that contains a description."},snippets:{oneOf:[{$ref:"#/definitions/docs.SnippetsConfiguration"},{type:"null"}]},postman:{oneOf:[{type:"string"},{type:"null"}],description:"URL to a Postman collection for this API reference"},summary:{oneOf:[{type:"string"},{type:"null"}],description:"Relative path to the markdown file"},layout:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{type:"null"}],description:"Advanced usage: when specified, this object will be used to customize the order that your API endpoints are displayed in the docs site, including subpackages, and additional markdown pages (to be rendered in between API endpoints). If not specified, the order will be inferred from the OpenAPI Spec or Fern Definition."},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},alphabetized:{oneOf:[{type:"boolean"},{type:"null"}],description:"If `alphabetized` is set to true, packages and endpoints will be sorted alphabetically, unless explicitly ordered in the `layout` object."},flattened:{oneOf:[{type:"boolean"},{type:"null"}],description:"If `flattened` is set to true, the title specified in `api` will be hidden, and its endpoints and subpackages won't be grouped under it.\n\nThis setting is useful if the API reference is short and you want to display all endpoints at the top level."},paginated:{oneOf:[{type:"boolean"},{type:"null"}],description:"If true, the API reference will be paginated rather than displayed in a single page (long-scrolling)."},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that affects all endpoints."}},required:["api"],additionalProperties:!1},"docs.LibraryName":{type:"string",description:"The name identifier for a library. Used to reference the library in navigation."},"docs.LibraryReferenceConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},library:{$ref:"#/definitions/docs.LibraryName",description:"The name of the library to reference (must match a key in the `libraries` section)."},title:{oneOf:[{type:"string"},{type:"null"}],description:"Override the display title for this library reference."},slug:{oneOf:[{type:"string"},{type:"null"}],description:"Override the URL slug for this library reference."}},required:["library"],additionalProperties:!1,description:"References a library defined in the `libraries` section.\nThe library's generated navigation will be injected at this point."},"docs.ChangelogConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},changelog:{$ref:"#/definitions/docs.ChangelogFolderRelativePath"},title:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]}},required:["changelog"],additionalProperties:!1},"docs.TitleSource":{type:"string",enum:["frontmatter","filename"]},"docs.FolderConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},folder:{type:"string",description:"The relative path to a folder containing markdown files. Fern will automatically discover and add all markdown files from this folder to the navigation."},title:{oneOf:[{type:"string"},{type:"null"}],description:"The title to display for this folder section. If not provided, the folder name will be used."},"title-source":{oneOf:[{$ref:"#/definitions/docs.TitleSource"},{type:"null"}],description:"Determines how page titles are derived for files in this folder. Options are `frontmatter` (use the `title` field from the file's frontmatter) or `filename` (derive title from the file name). Defaults to `filename`."},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}],description:"Deprecated. Use `collapsible` and `collapsed-by-default` instead."},collapsible:{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section can be expanded/collapsed by the user."},"collapsed-by-default":{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section starts collapsed. Only meaningful when `collapsible` is true. Defaults to false (starts open)."},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]}},required:["folder"],additionalProperties:!1},"docs.NavigationItem":{anyOf:[{$ref:"#/definitions/docs.PageConfiguration"},{$ref:"#/definitions/docs.SectionConfiguration"},{$ref:"#/definitions/docs.ApiReferenceConfiguration"},{$ref:"#/definitions/docs.LibraryReferenceConfiguration"},{$ref:"#/definitions/docs.LinkConfiguration"},{$ref:"#/definitions/docs.ChangelogConfiguration"},{$ref:"#/definitions/docs.FolderConfiguration"}]},"docs.UntabbedNavigationConfig":{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},"docs.TabId":{type:"string"},"docs.TabbedNavigationItemWithLayout":{type:"object",properties:{tab:{$ref:"#/definitions/docs.TabId"},layout:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},{type:"null"}],description:"If `href` is set, `layout` must be null."}},required:["tab"],additionalProperties:!1},"docs.TabVariant":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},title:{type:"string"},subtitle:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},layout:{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},slug:{oneOf:[{type:"string"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},default:{oneOf:[{type:"boolean"},{type:"null"}]}},required:["title","layout"],additionalProperties:!1},"docs.TabbedNavigationItemWithVariants":{type:"object",properties:{tab:{$ref:"#/definitions/docs.TabId"},variants:{type:"array",items:{$ref:"#/definitions/docs.TabVariant"}}},required:["tab","variants"],additionalProperties:!1},"docs.TabbedNavigationItem":{anyOf:[{$ref:"#/definitions/docs.TabbedNavigationItemWithLayout"},{$ref:"#/definitions/docs.TabbedNavigationItemWithVariants"}]},"docs.TabbedNavigationConfig":{type:"array",items:{$ref:"#/definitions/docs.TabbedNavigationItem"}},"docs.NavigationConfig":{anyOf:[{$ref:"#/definitions/docs.UntabbedNavigationConfig"},{$ref:"#/definitions/docs.TabbedNavigationConfig"}]}},Uxm={type:jxm,properties:Qxm,required:Mxm,additionalProperties:Lxm,definitions:zxm};async function k0t({value:e}){let t=OU(e,j4o);if(t.success){let i=p3(e,[],[]);return{type:"success",contents:Uh.RawSchemas.Serializer.VersionFileConfig.parseOrThrow(i)}}let r=t.error?.instancePath?` at ${t?.error.instancePath}`:"";return{type:"failure",message:`${t.error?.message??"Failed to parse because JSON schema validation failed"}${r}`}}jt();tr();var z4o=require("fs/promises");ks();jt();var Q4o={};te(Q4o,{additionalProperties:()=>Gxm,default:()=>Hxm,definitions:()=>Wxm,properties:()=>Vxm,required:()=>qxm,type:()=>_xm});var _xm="object",Vxm={tabs:{oneOf:[{type:"object",additionalProperties:{$ref:"#/definitions/docs.TabConfig"}},{type:"null"}]},"landing-page":{oneOf:[{$ref:"#/definitions/docs.PageConfiguration"},{type:"null"}]},navigation:{$ref:"#/definitions/docs.NavigationConfig"}},qxm=["navigation"],Gxm=!1,Wxm={"docs.RoleId":{type:"string",description:"ID of role which is used to filter the content shown in Fern Docs."},"docs.Role":{anyOf:[{$ref:"#/definitions/docs.RoleId"},{type:"array",items:{$ref:"#/definitions/docs.RoleId"}}],description:"Audience can either be a string or list of strings\ni.e. `audience: internal` or `audience: [internal, beta]`"},"docs.FeatureFlag":{type:"object",properties:{flag:{type:"string",description:"The name of the feature flag to check."},"fallback-value":{oneOf:[{type:["string","number","boolean","object","array","null"]},{type:"null"}],description:"The default value to use if the feature flag is not set. If not specified, defaults to false."},match:{oneOf:[{type:["string","number","boolean","object","array","null"]},{type:"null"}],description:"The value that the feature flag should match for the content to be shown. If not specified, content is shown when the flag is true."}},required:["flag"],additionalProperties:!1},"docs.FeatureFlagConfiguration":{anyOf:[{type:"string",description:"The name of the feature flag, We assume that it is a boolean feature flag that needs to be evaluated to true."},{$ref:"#/definitions/docs.FeatureFlag",description:"A single feature flag with a configurable name, fallback value, and match value. Especially useful for non boolean feature flags."},{type:"array",items:{$ref:"#/definitions/docs.FeatureFlag"},description:"A list of feature flags. If any of the feature flags are satisfied, we will show all content."}]},"docs.Target":{type:"string",enum:["_blank","_self","_parent","_top"]},"docs.ChangelogFolderRelativePath":{type:"string",description:'The relative path to a folder containing markdown files broken down by date.\n\nExample:\n```\nchangelog: "changelog"\n```\n\nThis will look for markdown files in the `/fern/changelog` directory, which should contain files named like\n- `/fern/changelog/2024-04-29.mdx`.\n- `/fern/changelog/2023-01-02.mdx`.'},"docs.TabConfig":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},"display-name":{type:"string"},icon:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},href:{oneOf:[{type:"string"},{type:"null"}],description:"If `href` is set, clicking on the tab will redirect to the given URL.\n\nTabs with `href` must not have children in the navigation config."},target:{oneOf:[{$ref:"#/definitions/docs.Target"},{type:"null"}]},changelog:{oneOf:[{$ref:"#/definitions/docs.ChangelogFolderRelativePath"},{type:"null"}]}},required:["display-name"],additionalProperties:!1},"docs.Availability":{type:"string",enum:["stable","generally-available","in-development","pre-release","deprecated","beta","alpha","preview","legacy"]},"docs.PageConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},page:{type:"string"},path:{type:"string"},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},noindex:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]}},required:["page","path"],additionalProperties:!1},"docs.CollapsedStringValue":{type:"string",enum:["open-by-default"]},"docs.CollapsedValue":{anyOf:[{type:"boolean"},{$ref:"#/definitions/docs.CollapsedStringValue"}]},"docs.SectionConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},section:{type:"string"},path:{oneOf:[{type:"string"},{type:"null"}],description:"The relative path to the markdown file that will be displayed when the section is clicked."},contents:{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}],description:"Deprecated. Use `collapsible` and `collapsed-by-default` instead."},collapsible:{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section can be expanded/collapsed by the user."},"collapsed-by-default":{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section starts collapsed. Only meaningful when `collapsible` is true. Defaults to false (starts open)."},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]}},required:["section","contents"],additionalProperties:!1},"docs.AudienceId":{type:"string",description:"ID of audience which is used to filter the API spec."},"docs.Audience":{anyOf:[{$ref:"#/definitions/docs.AudienceId"},{type:"array",items:{$ref:"#/definitions/docs.AudienceId"}}],description:"Audience can either be a string or list of strings\ni.e. `audiences: internal` or `audiences: [internal, beta]`"},"docs.VersionedSnippetLanguageConfiguration":{type:"object",properties:{version:{type:"string"},package:{type:"string"}},required:["version","package"],additionalProperties:!1},"docs.SnippetLanguageConfiguration":{anyOf:[{type:"string"},{$ref:"#/definitions/docs.VersionedSnippetLanguageConfiguration"}],description:`This snippets config object is meant to allow users to specify a specific package for the snippets,
|
|
3694
|
-
and optionally a version for that package. If you pass in a string, that should be the name of the package.`},"docs.SnippetsConfiguration":{type:"object",properties:{python:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},typescript:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},go:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},java:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},ruby:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},csharp:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},php:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},swift:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},rust:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]}},additionalProperties:!1},"docs.PlaygroundButtonSettings":{type:"object",properties:{href:{oneOf:[{type:"string"},{type:"null"}]}},additionalProperties:!1},"docs.PlaygroundSettings":{type:"object",properties:{hidden:{oneOf:[{type:"boolean"},{type:"null"}]},environments:{oneOf:[{type:"array",items:{type:"string"}},{type:"null"}],description:"A list of environment IDs that are allowed to be used in the playground. If not provided, all environments are allowed. And if the provided list is empty, the playground should be disabled."},button:{oneOf:[{$ref:"#/definitions/docs.PlaygroundButtonSettings"},{type:"null"}]},oauth:{oneOf:[{type:"boolean"},{type:"null"}]},"limit-websocket-messages-per-connection":{oneOf:[{type:"integer"},{type:"null"}],description:"The maximum number of websocket messages per connection in the playground."}},additionalProperties:!1},"docs.ApiReferencePackageConfigurationWithOptions":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},title:{oneOf:[{type:"string"},{type:"null"}]},summary:{oneOf:[{type:"string"},{type:"null"}],description:"Relative path to the markdown file. This summary is displayed at the top of the API section."},contents:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that is applied only to descendants of this api package."}},additionalProperties:!1},"docs.ApiReferencePackageConfiguration":{anyOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{$ref:"#/definitions/docs.ApiReferencePackageConfigurationWithOptions"}]},"docs.ApiReferenceSectionConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},section:{type:"string",description:"The title of the api package that will be displayed in the sidebar."},"referenced-packages":{oneOf:[{type:"array",items:{type:"string"}},{type:"null"}],description:"This section will inherit the endpoints from the specified subpackage(s). If multiple packages are specified, they will be merged."},summary:{oneOf:[{type:"string"},{type:"null"}],description:"Relative path to the markdown file."},contents:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}],description:"Deprecated. Use `collapsible` and `collapsed-by-default` instead."},collapsible:{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section can be expanded/collapsed by the user in the sidebar."},"collapsed-by-default":{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section starts collapsed. Only meaningful when collapsible is true."},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that affects all endpoints."}},required:["section"],additionalProperties:!1},"docs.ApiReferenceEndpointConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},endpoint:{type:"string"},title:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that affect this endpoint specifically."}},required:["endpoint"],additionalProperties:!1},"docs.ApiReferenceOperationConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},operation:{type:"string"},title:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]}},required:["operation"],additionalProperties:!1,description:"Defines a GraphQL-native schema for selecting operations (REST -> Endpoint === GraphQL -> Operation)"},"docs.LinkConfiguration":{type:"object",properties:{link:{type:"string"},href:{type:"string"},icon:{oneOf:[{type:"string"},{type:"null"}]},target:{oneOf:[{$ref:"#/definitions/docs.Target"},{type:"null"}]}},required:["link","href"],additionalProperties:!1},"docs.ApiReferenceLayoutItem":{anyOf:[{type:"string",description:"This should be either an endpoint, websocket, webhook, or subpackage ID"},{type:"object",additionalProperties:{$ref:"#/definitions/docs.ApiReferencePackageConfiguration"},description:"Keyed by subpackage name, this object allows you to group endpoints and pages together."},{$ref:"#/definitions/docs.ApiReferenceSectionConfiguration"},{$ref:"#/definitions/docs.ApiReferenceEndpointConfiguration"},{$ref:"#/definitions/docs.ApiReferenceOperationConfiguration"},{$ref:"#/definitions/docs.PageConfiguration"},{$ref:"#/definitions/docs.LinkConfiguration"}],description:"Use the `layout` object to customize the order that your API endpoints\nare displayed in the docs site."},"docs.ApiReferenceConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},api:{type:"string"},"api-name":{oneOf:[{type:"string"},{type:"null"}],description:"Name of API that we are referencing"},openrpc:{oneOf:[{type:"string"},{type:"null"}],description:"Path to an openrpc spec."},audiences:{oneOf:[{$ref:"#/definitions/docs.Audience"},{type:"null"}]},"display-errors":{oneOf:[{type:"boolean"},{type:"null"}],description:"Defaults to false"},"tag-description-pages":{oneOf:[{type:"boolean"},{type:"null"}],description:"If true, a page will be created for each tag in the OpenAPI spec that contains a description."},snippets:{oneOf:[{$ref:"#/definitions/docs.SnippetsConfiguration"},{type:"null"}]},postman:{oneOf:[{type:"string"},{type:"null"}],description:"URL to a Postman collection for this API reference"},summary:{oneOf:[{type:"string"},{type:"null"}],description:"Relative path to the markdown file"},layout:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{type:"null"}],description:"Advanced usage: when specified, this object will be used to customize the order that your API endpoints are displayed in the docs site, including subpackages, and additional markdown pages (to be rendered in between API endpoints). If not specified, the order will be inferred from the OpenAPI Spec or Fern Definition."},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},alphabetized:{oneOf:[{type:"boolean"},{type:"null"}],description:"If `alphabetized` is set to true, packages and endpoints will be sorted alphabetically, unless explicitly ordered in the `layout` object."},flattened:{oneOf:[{type:"boolean"},{type:"null"}],description:"If `flattened` is set to true, the title specified in `api` will be hidden, and its endpoints and subpackages won't be grouped under it.\n\nThis setting is useful if the API reference is short and you want to display all endpoints at the top level."},paginated:{oneOf:[{type:"boolean"},{type:"null"}],description:"If true, the API reference will be paginated rather than displayed in a single page (long-scrolling)."},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that affects all endpoints."}},required:["api"],additionalProperties:!1},"docs.LibraryName":{type:"string",description:"The name identifier for a library. Used to reference the library in navigation."},"docs.LibraryReferenceConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},library:{$ref:"#/definitions/docs.LibraryName",description:"The name of the library to reference (must match a key in the `libraries` section)."},title:{oneOf:[{type:"string"},{type:"null"}],description:"Override the display title for this library reference."},slug:{oneOf:[{type:"string"},{type:"null"}],description:"Override the URL slug for this library reference."}},required:["library"],additionalProperties:!1,description:"References a library defined in the `libraries` section.\nThe library's generated navigation will be injected at this point."},"docs.ChangelogConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},changelog:{$ref:"#/definitions/docs.ChangelogFolderRelativePath"},title:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]}},required:["changelog"],additionalProperties:!1},"docs.TitleSource":{type:"string",enum:["frontmatter","filename"]},"docs.FolderConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},folder:{type:"string",description:"The relative path to a folder containing markdown files. Fern will automatically discover and add all markdown files from this folder to the navigation."},title:{oneOf:[{type:"string"},{type:"null"}],description:"The title to display for this folder section. If not provided, the folder name will be used."},"title-source":{oneOf:[{$ref:"#/definitions/docs.TitleSource"},{type:"null"}],description:"Determines how page titles are derived for files in this folder. Options are `frontmatter` (use the `title` field from the file's frontmatter) or `filename` (derive title from the file name). Defaults to `filename`."},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}],description:"Deprecated. Use `collapsible` and `collapsed-by-default` instead."},collapsible:{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section can be expanded/collapsed by the user."},"collapsed-by-default":{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section starts collapsed. Only meaningful when `collapsible` is true. Defaults to false (starts open)."},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]}},required:["folder"],additionalProperties:!1},"docs.NavigationItem":{anyOf:[{$ref:"#/definitions/docs.PageConfiguration"},{$ref:"#/definitions/docs.SectionConfiguration"},{$ref:"#/definitions/docs.ApiReferenceConfiguration"},{$ref:"#/definitions/docs.LibraryReferenceConfiguration"},{$ref:"#/definitions/docs.LinkConfiguration"},{$ref:"#/definitions/docs.ChangelogConfiguration"},{$ref:"#/definitions/docs.FolderConfiguration"}]},"docs.UntabbedNavigationConfig":{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},"docs.TabId":{type:"string"},"docs.TabbedNavigationItemWithLayout":{type:"object",properties:{tab:{$ref:"#/definitions/docs.TabId"},layout:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},{type:"null"}],description:"If `href` is set, `layout` must be null."}},required:["tab"],additionalProperties:!1},"docs.TabVariant":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},title:{type:"string"},subtitle:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},layout:{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},slug:{oneOf:[{type:"string"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},default:{oneOf:[{type:"boolean"},{type:"null"}]}},required:["title","layout"],additionalProperties:!1},"docs.TabbedNavigationItemWithVariants":{type:"object",properties:{tab:{$ref:"#/definitions/docs.TabId"},variants:{type:"array",items:{$ref:"#/definitions/docs.TabVariant"}}},required:["tab","variants"],additionalProperties:!1},"docs.TabbedNavigationItem":{anyOf:[{$ref:"#/definitions/docs.TabbedNavigationItemWithLayout"},{$ref:"#/definitions/docs.TabbedNavigationItemWithVariants"}]},"docs.TabbedNavigationConfig":{type:"array",items:{$ref:"#/definitions/docs.TabbedNavigationItem"}},"docs.NavigationConfig":{anyOf:[{$ref:"#/definitions/docs.UntabbedNavigationConfig"},{$ref:"#/definitions/docs.TabbedNavigationConfig"}]}},Hxm={type:_xm,properties:Vxm,required:qxm,additionalProperties:Gxm,definitions:Wxm};async function j0t({value:e}){let t=OU(e,Q4o);if(t.success){let i=p3(e,[],[]);return{type:"success",contents:Uh.RawSchemas.Serializer.ProductFileConfig.parseOrThrow(i)}}let r=t.error?.instancePath?` at ${t?.error.instancePath}`:"";return{type:"failure",message:`${t.error?.message??"Failed to parse because JSON schema validation failed"}${r}`}}tr();async function EE({absoluteFilepathToConfiguration:e,rawUnresolvedFilepath:t,visitor:r,nodePath:n,willBeUploaded:i=!0}){let o=Ni(bn(e),t);await r.filepath?.({absoluteFilepath:o,value:t,willBeUploaded:i},[o])}jt();Q7();tr();var die=require("fs/promises"),M4o=we(require("path"),1);async function RPe(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 FPe=parseInt(process.env.FERN_DOCS_VALIDATION_CONCURRENCY??"32",10);async function o$n({absolutePathToFernFolder:e,navigation:t,apiWorkspaces:r,visitor:n,absoluteFilepathToConfiguration:i,context:o,nodePath:s}){o.logger.debug(`Starting navigation validation with concurrency limit: ${FPe}`),$xm(t)?await RPe(FPe,t,async(a,c)=>{if(eSm(a))await RPe(FPe,a.layout,async(u,l)=>{await i$n({absolutePathToFernFolder:e,navigationItem:u,visitor:n,nodePath:[...s,`${c}`,"layout",`${l}`],absoluteFilepathToConfiguration:i,apiWorkspaces:r,context:o})});else if(tSm(a)){let u=a.variants.flatMap((l,p)=>l.layout.map((d,f)=>({item:d,variantIdx:p,itemIdx:f})));await RPe(FPe,u,async({item:l,variantIdx:p,itemIdx:d})=>{await i$n({absolutePathToFernFolder:e,navigationItem:l,visitor:n,nodePath:[...s,`${c}`,"variants",`${p}`,"layout",`${d}`],absoluteFilepathToConfiguration:i,apiWorkspaces:r,context:o})})}}):await RPe(FPe,t,async(a,c)=>{await i$n({absolutePathToFernFolder:e,navigationItem:a,visitor:n,nodePath:[...s,`${c}`],absoluteFilepathToConfiguration:i,apiWorkspaces:r,context:o})})}async function i$n({absolutePathToFernFolder:e,navigationItem:t,visitor:r,nodePath:n,absoluteFilepathToConfiguration:i,apiWorkspaces:o,context:s}){await IU(t,{alphabetized:vt,api:vt,apiName:vt,audiences:vt,folder:vt,titleSource:vt,collapsible:vt,collapsedByDefault:vt,openrpc:async c=>{c!=null&&await EE({absoluteFilepathToConfiguration:i,rawUnresolvedFilepath:c,visitor:r,nodePath:[...n,"openrpc"],willBeUploaded:!1})},displayErrors:vt,tagDescriptionPages:vt,snippets:vt,summary:vt,title:vt,layout:vt,collapsed:vt,icon:vt,slug:vt,hidden:vt,skipSlug:vt,paginated:vt,playground:vt,flattened:vt,featureFlag:vt,postman:vt,path:async c=>{c!=null&&await EE({absoluteFilepathToConfiguration:i,rawUnresolvedFilepath:c,visitor:r,nodePath:[...n,"path"],willBeUploaded:!1})},page:vt,contents:async c=>{c!=null&&await Promise.all(c.map(async(u,l)=>{await i$n({absolutePathToFernFolder:e,navigationItem:u,visitor:r,nodePath:[...n,"contents",`${l}`],absoluteFilepathToConfiguration:i,apiWorkspaces:o,context:s})}))},viewers:async c=>{c!=null&&c.length>0&&await r.permissions?.({viewers:c},[...n,"viewers"])},orphaned:vt,availability:vt});let a=Yxm(t);if(a!=null){let c=Ni(bn(i),a);if(await sr(c)){let l=(await(0,die.stat)(c)).size/(1024*1024);l>1&&s.logger.trace(`Processing large markdown file: ${a} (${l.toFixed(2)} MB)`);let p=performance.now(),d=(await(0,die.readFile)(c,"utf8")).toString(),f=performance.now()-p;f>2e3&&s.logger.debug(`Slow file read: ${a} took ${f.toFixed(0)}ms`);let m=Xxm(t);await r.markdownPage?.({title:m,content:d,absoluteFilepath:c},[...n,a]);try{let h=performance.now(),{filepaths:A}=oK(d,{absolutePathToFernFolder:e,absolutePathToMarkdownFile:c}),y=performance.now()-h;y>2e3&&s.logger.debug(`Slow image path parsing: ${a} took ${y.toFixed(0)}ms`);for(let I of A)await r.filepath?.({absoluteFilepath:I,value:ds(e,I),willBeUploaded:!0},[...n,a])}catch(h){s.logger.trace(`Failed to parse image paths in ${a}: ${h}`)}}}if(Zxm(t)){let c=o.find(u=>u.workspaceName===t.apiName);c!=null&&await r.apiSection?.({config:t,workspace:c,context:s},[...n,"api"])}if(Kxm(t)){let c=Ni(bn(i),t.folder);await sr(c)&&await Csu({directoryPath:c,absolutePathToFernFolder:e,visitor:r,nodePath:[...n,"folder"],context:s})}if(Jxm(t)){let c=Ni(bn(i),t.changelog);if(s.logger.trace(`Starting changelog processing for directory: ${c}`),await sr(c)){let u=performance.now(),p=(await(0,die.readdir)(c)).filter(f=>f.endsWith(".md")||f.endsWith(".mdx"));s.logger.debug(`Processing ${p.length} changelog files in ${c}`),await RPe(FPe,p,async f=>{let m=Ni(c,f),h=(await(0,die.readFile)(m,"utf8")).toString();s.logger.trace(`Validating changelog file: ${f}`),await r.markdownPage?.({title:f,content:h,absoluteFilepath:m},[...n,"changelog",f])});let d=performance.now()-u;s.logger.debug(`Finished processing ${p.length} changelog files in ${d.toFixed(0)}ms`)}else s.logger.trace(`Changelog directory does not exist: ${c}`)}}function Kxm(e){return e?.folder!=null}async function Csu({directoryPath:e,absolutePathToFernFolder:t,visitor:r,nodePath:n,context:i}){let o=await(0,die.readdir)(e,{withFileTypes:!0}),s=o.filter(c=>c.isFile()&&!c.name.startsWith("_")&&(c.name.toLowerCase().endsWith(".md")||c.name.toLowerCase().endsWith(".mdx"))),a=o.filter(c=>c.isDirectory()&&!c.name.startsWith("_"));await RPe(FPe,s,async c=>{let u=Ze(e,Fe.of(c.name)),p=(await(0,die.stat)(u)).size/(1024*1024);p>1&&i.logger.trace(`Processing large markdown file in folder: ${c.name} (${p.toFixed(2)} MB)`);let d=(await(0,die.readFile)(u,"utf8")).toString(),f=M4o.default.basename(c.name,M4o.default.extname(c.name));await r.markdownPage?.({title:f,content:d,absoluteFilepath:u},[...n,c.name]);try{let{filepaths:m}=oK(d,{absolutePathToFernFolder:t,absolutePathToMarkdownFile:u});for(let h of m)await r.filepath?.({absoluteFilepath:h,value:ds(t,h),willBeUploaded:!0},[...n,c.name])}catch(m){i.logger.trace(`Failed to parse image paths in folder file ${c.name}: ${m}`)}}),await RPe(FPe,a,async c=>{let u=Ze(e,Fe.of(c.name));await Csu({directoryPath:u,absolutePathToFernFolder:t,visitor:r,nodePath:[...n,c.name],context:i})})}function Jxm(e){return e?.changelog!=null}function wsu(e){return e?.page!=null}function xsu(e){return e?.section!=null}function Yxm(e){if(wsu(e)||xsu(e)&&e.path!=null)return e.path}function Xxm(e){return wsu(e)?e.page:xsu(e)?e.section:"Unknown"}function Zxm(e){return e?.api!=null}function $xm(e){return e[0]?.tab!=null}function eSm(e){return"layout"in e&&Array.isArray(e.layout)}function tSm(e){return"variants"in e&&Array.isArray(e.variants)}async function Tsu({contents:e,visitor:t,absoluteFilepathToConfiguration:r,context:n,apiWorkspaces:i,absolutePathToFernFolder:o}){await t.file?.({config:e},[]),await IU(e,{instances:vt,analytics:vt,aiChat:vt,aiSearch:vt,aiExamples:async s=>{s!=null&&typeof s=="object"&&await IU(s,{enabled:vt,style:vt})},pageActions:vt,announcement:vt,backgroundImage:async s=>{s!=null&&(typeof s=="string"?await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s,visitor:t,nodePath:["background-image"]}):(s.dark!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.dark,visitor:t,nodePath:["background-image","dark"]}),s.light!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.light,visitor:t,nodePath:["background-image","light"]})))},colors:vt,css:async s=>{s!=null&&(Array.isArray(s)?await Promise.all(s.map((a,c)=>EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:a,visitor:t,nodePath:["css",`${c}`],willBeUploaded:!1}))):await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s,visitor:t,nodePath:["css"],willBeUploaded:!1}))},defaultLanguage:vt,experimental:vt,favicon:async s=>{s!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s,visitor:t,nodePath:["favicon"]})},footer:async s=>{s!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s,visitor:t,nodePath:["footer"],willBeUploaded:!1})},footerLinks:vt,header:async s=>{s!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s,visitor:t,nodePath:["header"],willBeUploaded:!1})},integrations:async s=>{s?.context7!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.context7,visitor:t,nodePath:["integrations","context7"],willBeUploaded:!0})},js:async s=>{s!=null&&(Array.isArray(s)?await Promise.all(s.map((a,c)=>Ssu({absoluteFilepathToConfiguration:r,visitor:t,script:a,nodePath:["js",`${c}`]}))):await Ssu({absoluteFilepathToConfiguration:r,visitor:t,script:s,nodePath:["js"]}))},landingPage:vt,layout:vt,agents:async s=>{s?.llmsTxt!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.llmsTxt,visitor:t,nodePath:["agents","llms-txt"],willBeUploaded:!0}),s?.robotsTxt!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.robotsTxt,visitor:t,nodePath:["agents","robots-txt"],willBeUploaded:!0}),s?.llmsFullTxt!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.llmsFullTxt,visitor:t,nodePath:["agents","llms-full-txt"],willBeUploaded:!0})},settings:vt,logo:async()=>{e.logo?.dark!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:e.logo.dark,visitor:t,nodePath:["logo","dark"]}),e.logo?.light!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:e.logo.light,visitor:t,nodePath:["logo","light"]})},metadata:vt,navbarLinks:vt,navigation:async s=>{if(s==null)return;let a=performance.now();n.logger.debug("[docs-ast] Starting main navigation traversal..."),await o$n({absolutePathToFernFolder:o,navigation:s,visitor:t,nodePath:["navigation"],absoluteFilepathToConfiguration:r,apiWorkspaces:i,context:n}),n.logger.debug(`[docs-ast] Main navigation traversal complete in ${(performance.now()-a).toFixed(0)}ms`)},products:async s=>{if(s==null)return;let a=performance.now();n.logger.debug(`[docs-ast] Processing ${s.length} products...`),await Promise.all(s.map(async(c,u)=>{if("path"in c){await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:c.path,visitor:t,nodePath:["products",`${u}`],willBeUploaded:!1});let l=Ni(bn(r),c.path),p=wr.load((await(0,z4o.readFile)(l)).toString());await sr(l)&&await t.productFile?.({path:c.path,content:p},[c.path]);let d=await j0t({value:p});d.type==="success"&&await o$n({absolutePathToFernFolder:o,navigation:d.contents.navigation,visitor:t,nodePath:["navigation"],absoluteFilepathToConfiguration:l,apiWorkspaces:i,context:n})}})),n.logger.debug(`[docs-ast] Products processing complete in ${(performance.now()-a).toFixed(0)}ms`)},check:vt,redirects:vt,tabs:vt,title:vt,typography:async s=>{s!=null&&await IU(s,{bodyFont:async a=>{a!=null&&await L4o({absoluteFilepathToConfiguration:r,visitor:t,font:a,nodePath:["typography","bodyFont"]})},codeFont:async a=>{a!=null&&await L4o({absoluteFilepathToConfiguration:r,visitor:t,font:a,nodePath:["typography","codeFont"]})},headingsFont:async a=>{a!=null&&await L4o({absoluteFilepathToConfiguration:r,visitor:t,font:a,nodePath:["typography","headingsFont"]})}})},versions:async s=>{if(s==null)return;let a=performance.now();n.logger.debug(`[docs-ast] Processing ${s.length} versions...`),await Promise.all(s.map(async(c,u)=>{await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:c.path,visitor:t,nodePath:["versions",`${u}`],willBeUploaded:!1});let l=Ni(bn(r),c.path),p=wr.load((await(0,z4o.readFile)(l)).toString());await sr(l)&&await t.versionFile?.({path:c.path,content:p},[c.path]);let d=await k0t({value:p});d.type==="success"&&await o$n({absolutePathToFernFolder:o,navigation:d.contents.navigation,visitor:t,nodePath:["navigation"],absoluteFilepathToConfiguration:l,apiWorkspaces:i,context:n})})),n.logger.debug(`[docs-ast] Versions processing complete in ${(performance.now()-a).toFixed(0)}ms`)},roles:vt,languages:vt,translations:vt,theme:vt,globalTheme:vt,libraries:vt})}async function L4o({absoluteFilepathToConfiguration:e,visitor:t,font:r,nodePath:n}){r.path!=null&&await EE({absoluteFilepathToConfiguration:e,rawUnresolvedFilepath:r.path,visitor:t,nodePath:n,willBeUploaded:!0});for(let i of r.paths??[])typeof i=="string"?await EE({absoluteFilepathToConfiguration:e,rawUnresolvedFilepath:i,visitor:t,nodePath:n,willBeUploaded:!0}):await EE({absoluteFilepathToConfiguration:e,rawUnresolvedFilepath:i.path,visitor:t,nodePath:n,willBeUploaded:!0})}async function Ssu({absoluteFilepathToConfiguration:e,visitor:t,script:r,nodePath:n}){let i=typeof r=="string"?r:"path"in r?r.path:null;i&&await EE({absoluteFilepathToConfiguration:e,rawUnresolvedFilepath:i,visitor:t,nodePath:n,willBeUploaded:!0})}var $0t={};te($0t,{AccentColorContrastRule:()=>U4o,AllRolesMustBeDeclaredRule:()=>_4o,CHANGELOG_FEED_ALLOWED_SLUGS:()=>h$n,FilepathsExistRule:()=>s$n,MissingRedirectsRule:()=>Q0t,NoCircularRedirectsRule:()=>M0t,OnlyVersionedNavigation:()=>f$n,TabWithHrefRule:()=>bSm,TranslationDirectoriesExistRule:()=>d$n,ValidChangelogSlugRule:()=>L0t,ValidDocsEndpoints:()=>z0t,ValidFileTypes:()=>w$n,ValidFrontmatter:()=>x$n,ValidMarkdownFileReferences:()=>cpu,ValidMarkdownLinks:()=>V7,ValidMarkdownRule:()=>opu,ValidTranslationsConfigRule:()=>xei,ValidateProductFileRule:()=>Sei,ValidateVersionFileRule:()=>Tei,enforceBackgroundTheme:()=>Bsu,getEffectiveChangelogSlugLastSegment:()=>Usu,isAllowedChangelogSlug:()=>J4o,validateTheme:()=>Eqt});BOr();var U4o={name:"accent-color-contrast",create:()=>({file:async({config:e})=>{if(e.colors==null)return[];let t=POr(e.colors);return t==="dark"?Eqt(e.colors,"dark"):t==="light"?Eqt(e.colors,"light"):t==="darkAndLight"?[...Eqt(e.colors,"dark"),...Eqt(e.colors,"light")]:[]}})};function Eqt(e,t){let r=dNt(e.accentPrimary??e.accentPrimaryDeprecated,"accent-primary",t),n=dNt(e.background,"background",t)??(t==="dark"?"#000":"#FFF"),i=[];if(!gs(n).isValid())i.push({severity:"fatal",message:`Invalid background color provided for colors.background.${t}: ${n}.`});else{let o=Bsu(gs(n),t);gs(n).toHexString()!==o.toHexString()&&i.push({severity:"warning",message:`The provided background color for ${t} mode is not ${t} enough. It will be adjusted to ${o.toHexString()}.`}),n=o.toHexString()}if(r==null)i.push({severity:"warning",message:`No accent-color provided for ${t} mode. A random color will be used.`});else if(!gs(r).isValid())i.push({severity:"fatal",message:`Invalid accent-color provided for colors.accent-primary.${t}: ${r}.`});else{let o=gs.readability(r,n),s=`${o.toFixed(2)}:1`;o<3?i.push({severity:"warning",message:`The contrast ratio between the accent color and the background color for ${t} mode is ${s}. It should be at least 3:1.`}):o<4.5?i.push({severity:"warning",message:`The contrast ratio between the accent color and the background color for ${t} mode is ${s}. Fern will adjust the color to meet the minimum contrast ratio of 4.5:1 for WCAG AA and 7:1 for WCAG AAA.`}):o<7&&i.push({severity:"warning",message:`The contrast ratio between the accent color and the background color for ${t} mode is ${s}. Fern will adjust the color to meet the minimum contrast ratio of 7:1 for WCAG AAA.`})}return i}function Bsu(e,t){return t==="dark"&&e.isDark()||t==="light"&&e.isLight()?e:rSm(e)}function rSm(e){if(e==null)return;let{h:t,s:r,v:n}=e.toHsv();return gs({h:t,s:r,v:1-n})}var _4o={name:"all-roles-must-be-declared",create:e=>{let t=e.workspace.config.roles;return{permissions:r=>{let n=[...r.viewers??[]],i=[];for(let o of n)(t==null||!t.includes(o))&&i.push({severity:"fatal",message:`Role "${o}" is used but not declared at the top level of the docs.yml file.`});return i}}}};tr();var s$n={name:"filepaths-exist",create:()=>({filepath:async({absoluteFilepath:e,value:t})=>await sr(e)?[]:[{severity:"fatal",message:`Path ${t} does not exist`}]})};Hh();Hb();_t();function a$n(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;try{let t=JSON.stringify(e);if(t!=null&&t!=="{}")return t}catch{}return Object.prototype.toString.call(e)}function Osu(e){return e.split(/[?#]/)[0]??""}function kPe(e){return e.startsWith("/")?e.slice(1):e}function V4o(e){return e.startsWith("/")?e:`/${e}`}function c$n(e){return e.endsWith("/")?e.slice(0,-1):e}function u$n(e){let t=[];return e.config.instances.forEach(r=>{t.push(r.url),typeof r.customDomain=="string"?t.push(r.customDomain):Array.isArray(r.customDomain)&&t.push(...r.customDomain)}),t}function vqt(e){let t=new URL(TN(e));return{domain:t.host,basePath:t.pathname==="/"||t.pathname===""?void 0:t.pathname}}function Psu(e,t){return t.some(r=>{try{let n=vqt(r);return e.host!==n.domain?!1:n.basePath!=null?e.pathname.startsWith(n.basePath):!0}catch{return!1}})}Hh();function Dsu(e){let t=Ot.NodeCollector.collect(e),r=new Map;for(let n of t.getSlugMapWithParents().values()){let{node:i,parents:o}=n;if(!Ot.isPage(i))continue;let s=Ot.getPageId(i);if(s==null)continue;let a=i.canonicalSlug??i.slug;if(i.type==="changelogEntry"){let u=o.findLast(l=>l.type==="changelog");u!=null&&Ot.hasMetadata(u)&&(a=u.canonicalSlug??u.slug)}let c=r.get(s);c!=null?c.add(a):r.set(s,new Set([a]))}return r}function nSm(e){for(var t=[],r=0;r<e.length;){var n=e[r];if(n==="*"||n==="+"||n==="?"){t.push({type:"MODIFIER",index:r,value:e[r++]});continue}if(n==="\\"){t.push({type:"ESCAPED_CHAR",index:r++,value:e[r++]});continue}if(n==="{"){t.push({type:"OPEN",index:r,value:e[r++]});continue}if(n==="}"){t.push({type:"CLOSE",index:r,value:e[r++]});continue}if(n===":"){for(var i="",o=r+1;o<e.length;){var s=e.charCodeAt(o);if(s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||s===95){i+=e[o++];continue}break}if(!i)throw new TypeError("Missing parameter name at ".concat(r));t.push({type:"NAME",index:r,value:i}),r=o;continue}if(n==="("){var a=1,c="",o=r+1;if(e[o]==="?")throw new TypeError('Pattern cannot start with "?" at '.concat(o));for(;o<e.length;){if(e[o]==="\\"){c+=e[o++]+e[o++];continue}if(e[o]===")"){if(a--,a===0){o++;break}}else if(e[o]==="("&&(a++,e[o+1]!=="?"))throw new TypeError("Capturing groups are not allowed at ".concat(o));c+=e[o++]}if(a)throw new TypeError("Unbalanced pattern at ".concat(r));if(!c)throw new TypeError("Missing pattern at ".concat(r));t.push({type:"PATTERN",index:r,value:c}),r=o;continue}t.push({type:"CHAR",index:r,value:e[r++]})}return t.push({type:"END",index:r,value:""}),t}function Rsu(e,t){t===void 0&&(t={});for(var r=nSm(e),n=t.prefixes,i=n===void 0?"./":n,o=t.delimiter,s=o===void 0?"/#?":o,a=[],c=0,u=0,l="",p=function(P){if(u<r.length&&r[u].type===P)return r[u++].value},d=function(P){var U=p(P);if(U!==void 0)return U;var X=r[u],$=X.type,ne=X.index;throw new TypeError("Unexpected ".concat($," at ").concat(ne,", expected ").concat(P))},f=function(){for(var P="",U;U=p("CHAR")||p("ESCAPED_CHAR");)P+=U;return P},m=function(P){for(var U=0,X=s;U<X.length;U++){var $=X[U];if(P.indexOf($)>-1)return!0}return!1},h=function(P){var U=a[a.length-1],X=P||(U&&typeof U=="string"?U:"");if(U&&!X)throw new TypeError('Must have text between two parameters, missing text after "'.concat(U.name,'"'));return!X||m(X)?"[^".concat(NPe(s),"]+?"):"(?:(?!".concat(NPe(X),")[^").concat(NPe(s),"])+?")};u<r.length;){var A=p("CHAR"),y=p("NAME"),I=p("PATTERN");if(y||I){var w=A||"";i.indexOf(w)===-1&&(l+=w,w=""),l&&(a.push(l),l=""),a.push({name:y||c++,prefix:w,suffix:"",pattern:I||h(w),modifier:p("MODIFIER")||""});continue}var C=A||p("ESCAPED_CHAR");if(C){l+=C;continue}l&&(a.push(l),l="");var x=p("OPEN");if(x){var w=f(),T=p("NAME")||"",O=p("PATTERN")||"",R=f();d("CLOSE"),a.push({name:T||(O?c++:""),pattern:T&&!O?h(w):O,prefix:w,suffix:R,modifier:p("MODIFIER")||""});continue}d("END")}return a}function Fsu(e,t){return iSm(Rsu(e,t),t)}function iSm(e,t){t===void 0&&(t={});var r=q4o(t),n=t.encode,i=n===void 0?function(c){return c}:n,o=t.validate,s=o===void 0?!0:o,a=e.map(function(c){if(typeof c=="object")return new RegExp("^(?:".concat(c.pattern,")$"),r)});return function(c){for(var u="",l=0;l<e.length;l++){var p=e[l];if(typeof p=="string"){u+=p;continue}var d=c?c[p.name]:void 0,f=p.modifier==="?"||p.modifier==="*",m=p.modifier==="*"||p.modifier==="+";if(Array.isArray(d)){if(!m)throw new TypeError('Expected "'.concat(p.name,'" to not repeat, but got an array'));if(d.length===0){if(f)continue;throw new TypeError('Expected "'.concat(p.name,'" to not be empty'))}for(var h=0;h<d.length;h++){var A=i(d[h],p);if(s&&!a[l].test(A))throw new TypeError('Expected all "'.concat(p.name,'" to match "').concat(p.pattern,'", but got "').concat(A,'"'));u+=p.prefix+A+p.suffix}continue}if(typeof d=="string"||typeof d=="number"){var A=i(String(d),p);if(s&&!a[l].test(A))throw new TypeError('Expected "'.concat(p.name,'" to match "').concat(p.pattern,'", but got "').concat(A,'"'));u+=p.prefix+A+p.suffix;continue}if(!f){var y=m?"an array":"a string";throw new TypeError('Expected "'.concat(p.name,'" to be ').concat(y))}}return u}}function l$n(e,t){var r=[],n=ksu(e,r,t);return oSm(n,r,t)}function oSm(e,t,r){r===void 0&&(r={});var n=r.decode,i=n===void 0?function(o){return o}:n;return function(o){var s=e.exec(o);if(!s)return!1;for(var a=s[0],c=s.index,u=Object.create(null),l=function(d){if(s[d]===void 0)return"continue";var f=t[d-1];f.modifier==="*"||f.modifier==="+"?u[f.name]=s[d].split(f.prefix+f.suffix).map(function(m){return i(m,f)}):u[f.name]=i(s[d],f)},p=1;p<s.length;p++)l(p);return{path:a,index:c,params:u}}}function NPe(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function q4o(e){return e&&e.sensitive?"":"i"}function sSm(e,t){if(!t)return e;for(var r=/\((?:\?<(.*?)>)?(?!\?)/g,n=0,i=r.exec(e.source);i;)t.push({name:i[1]||n++,prefix:"",suffix:"",modifier:"",pattern:""}),i=r.exec(e.source);return e}function aSm(e,t,r){var n=e.map(function(i){return ksu(i,t,r).source});return new RegExp("(?:".concat(n.join("|"),")"),q4o(r))}function cSm(e,t,r){return uSm(Rsu(e,r),t,r)}function uSm(e,t,r){r===void 0&&(r={});for(var n=r.strict,i=n===void 0?!1:n,o=r.start,s=o===void 0?!0:o,a=r.end,c=a===void 0?!0:a,u=r.encode,l=u===void 0?function(U){return U}:u,p=r.delimiter,d=p===void 0?"/#?":p,f=r.endsWith,m=f===void 0?"":f,h="[".concat(NPe(m),"]|$"),A="[".concat(NPe(d),"]"),y=s?"^":"",I=0,w=e;I<w.length;I++){var C=w[I];if(typeof C=="string")y+=NPe(l(C));else{var x=NPe(l(C.prefix)),T=NPe(l(C.suffix));if(C.pattern)if(t&&t.push(C),x||T)if(C.modifier==="+"||C.modifier==="*"){var O=C.modifier==="*"?"?":"";y+="(?:".concat(x,"((?:").concat(C.pattern,")(?:").concat(T).concat(x,"(?:").concat(C.pattern,"))*)").concat(T,")").concat(O)}else y+="(?:".concat(x,"(").concat(C.pattern,")").concat(T,")").concat(C.modifier);else{if(C.modifier==="+"||C.modifier==="*")throw new TypeError('Can not repeat "'.concat(C.name,'" without a prefix and suffix'));y+="(".concat(C.pattern,")").concat(C.modifier)}else y+="(?:".concat(x).concat(T,")").concat(C.modifier)}}if(c)i||(y+="".concat(A,"?")),y+=r.endsWith?"(?=".concat(h,")"):"$";else{var R=e[e.length-1],P=typeof R=="string"?A.indexOf(R[R.length-1])>-1:R===void 0;i||(y+="(?:".concat(A,"(?=").concat(h,"))?")),P||(y+="(?=".concat(A,"|").concat(h,")"))}return new RegExp(y,q4o(r))}function ksu(e,t,r){return e instanceof RegExp?sSm(e,t):Array.isArray(e)?aSm(e,t,r):cSm(e,t,r)}function Nsu(e){let t=new Map;for(let r of e){let n=t.get(r.pageId);(n==null||Date.parse(r.lastUpdated)>=Date.parse(n.lastUpdated))&&t.set(r.pageId,r)}return Array.from(t.values())}function jsu(e){return e.endsWith("/")?e.slice(0,-1):e}function lSm(e,t){return t==null||e.startsWith(t)?e:`${jsu(t)}${e.startsWith("/")?"":"/"}${e}`}function pSm(e,t){if(e===t)return!0;try{return l$n(e)(t)!==!1}catch{return!1}}function fSm(e,t,r){let n=e.startsWith("/")?e:`/${e}`;return t.some(i=>{let o=jsu(lSm(i.source,r));return pSm(o,n)})}function Qsu(e,t){let r=new Set;for(let i of t.values())for(let o of i)r.add(o);let n=[];for(let i of e){let o=t.get(i.pageId);if(o==null){if(r.has(i.slug))continue;n.push({pageId:i.pageId,oldSlug:i.slug,newSlug:void 0})}else if(!o.has(i.slug)){if(r.has(i.slug))continue;let s=o.values().next().value;n.push({pageId:i.pageId,oldSlug:i.slug,newSlug:s})}}return n}function Msu(e,t,r){let n=[];for(let i of e){if(fSm(i.oldSlug,t,r))continue;let o=i.oldSlug.startsWith("/")?i.oldSlug:`/${i.oldSlug}`;if(i.newSlug!=null){let s=i.newSlug.startsWith("/")?i.newSlug:`/${i.newSlug}`;n.push({severity:"warning",message:`Page "${i.pageId}" was moved from "${o}" to "${s}". The old URL will return 404 without a redirect. Add to docs.yml: redirects: [{source: "${o}", destination: "${s}"}]`})}else n.push({severity:"warning",message:`Page "${i.pageId}" was removed. The previously published URL "${o}" will return 404 without a redirect. Consider adding a redirect in docs.yml to preserve existing links.`})}return n}function dSm(){let e;return{context:W2e({logger:VI((r,...n)=>{r==="error"&&(e=n.join(" "))})}),getLastErrorMessage:()=>e}}function mSm(e){return"type"in e&&e.type==="root"}async function hSm(e,t,r,n){try{let i=await fetch(`${e}/slugs/markdowns`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`},body:JSON.stringify({domain:t,basepath:r??""}),signal:AbortSignal.timeout(3e4)});return i.ok?{entries:(await i.json()).entries}:{error:`FDR returned ${i.status}`}}catch(i){return{error:i instanceof Error?i.message:String(i)}}}function gSm(){return process.env.FERN_FDR_ORIGIN??process.env.OVERRIDE_FDR_ORIGIN??"https://registry.buildwithfern.com"??"https://registry.buildwithfern.com"}var Q0t={name:"missing-redirects",create:async({workspace:e,apiWorkspaces:t,ossWorkspaces:r,logger:n})=>{let o=u$n(e)[0];if(o==null)return Iqt({type:"no-instance-url"});let s=vqt(o),a=await rH();if(a==null)return Iqt({type:"no-token"});let c=await hSm(gSm(),s.domain,s.basePath,a.value);if("error"in c)return n.debug(`[missing-redirects] FDR fetch failed: ${c.error}`),Iqt({type:"fetch-failed",reason:c.error});if(c.entries.length===0)return n.debug("[missing-redirects] No markdown entries found (first publish or empty slug table)"),Iqt({type:"first-publish"});let u,{context:l,getLastErrorMessage:p}=dSm();try{let m=(await new _z({domain:o,docsWorkspace:e,ossWorkspaces:r,apiWorkspaces:t,taskContext:l,editThisPage:void 0,uploadFiles:void 0,registerApi:void 0,targetAudiences:void 0}).resolve()).config.root;if(!m||!mSm(m))return{};let h=Ot.migrate.FernNavigationV1ToLatest.create().root(m),A=Dsu(h),y=Nsu(c.entries);u=Qsu(y,A)}catch(d){let f=p()??a$n(d);return n.debug(`[missing-redirects] Failed to resolve local docs navigation: ${f}`),Iqt({type:"resolve-failed",reason:f})}return u.length===0?{}:{file:async({config:d})=>{let f=(d.redirects??[]).map(m=>({source:m.source,destination:m.destination}));return Msu(u,f,s.basePath)}}}};function Iqt(e){switch(e.type){case"no-instance-url":case"first-publish":return{};case"no-token":return{file:()=>[{severity:"warning",message:"Missing redirects check skipped: not authenticated. Run 'fern login' or set the FERN_TOKEN environment variable to enable this check."}]};case"fetch-failed":return{file:()=>[{severity:"warning",message:`Missing redirects check skipped: could not reach FDR (${e.reason}). The check requires network access to compare against previously published docs.`}]};case"resolve-failed":return{file:()=>[{severity:"warning",message:`Missing redirects check skipped: failed to resolve local docs navigation (${e.reason}). Run \`fern check --log-level=debug\` for more detail.`}]}}}function p$n(e){return e!=="/"&&e.endsWith("/")?e.slice(0,-1):e}function ASm(e){return!e.source.includes(":")&&!e.destination.includes(":")}function ySm(e){let t=[],r=e.filter(ASm),n=new Map;for(let c=0;c<r.length;c++){let u=r[c];if(u){let l=p$n(u.source),p=p$n(u.destination);n.set(l,{destination:p,index:c})}}for(let c=0;c<e.length;c++){let u=e[c];if(u){let l=p$n(u.source),p=p$n(u.destination);l===p&&t.push({severity:"error",message:`redirects[${c}]: Redirect from "${u.source}" to "${u.destination}" creates an infinite loop (source equals destination)`})}}let i=new Set,o=new Set;function s(c,u){if(o.has(c)){let d=u.indexOf(c);return u.slice(d)}if(i.has(c))return null;let l=n.get(c);if(!l)return null;i.add(c),o.add(c),u.push(c);let p=s(l.destination,u);return o.delete(c),u.pop(),p}let a=new Set;for(let[c]of n){i.clear(),o.clear();let u=s(c,[]);if(u&&u.length>1){let p=[...u].sort().join(" -> ");if(!a.has(p)){a.add(p);let d=[...u,u[0]].join(" -> ");t.push({severity:"error",message:`Circular redirect chain detected: ${d}`})}}}return t}var M0t={name:"no-circular-redirects",create:()=>({file:async({config:e})=>{let t=[];if(!e.redirects||e.redirects.length===0)return t;let r=e.redirects.map(n=>({source:n.source,destination:n.destination,permanent:n.permanent}));return ySm(r)}})};var f$n={name:"only-versioned-navigation",create:()=>({file:async({config:e})=>e.navigation!=null&&e.versions!=null?[{severity:"fatal",message:"Cannot contain both navigation and versions. If you want versioned docs, use versions. Otherwise use navigation."}]:[]})};var bSm={name:"tab-with-href",create:()=>({file:async({config:e})=>{let t=e.tabs??{};if(e.navigation==null)return[];let r=[];if(ESm(e.navigation))for(let n of e.navigation){let i=t[n.tab];if(i==null){r.push({severity:"fatal",message:`Tab "${n.tab}" is missing from the tabs configuration.`});continue}let o=vSm(n),s=ISm(n);if(i.href!=null&&(o||s)){r.push({severity:"fatal",message:`Tab "${n.tab}" has both a href and ${o?"layout":"variants"}. Only one should be used.`});continue}if(i.href==null&&!o&&!s){r.push({severity:"fatal",message:`Tab "${n.tab}" is missing a href, layout, or variants.`});continue}}return[]}})};function ESm(e){return Array.isArray(e)&&e.length>0&&e[0].tab!=null}function vSm(e){return"layout"in e&&Array.isArray(e.layout)}function ISm(e){return"variants"in e&&Array.isArray(e.variants)}tr();var d$n={name:"translation-directories-exist",create:({workspace:e})=>({file:async({config:t})=>{let r=[],n=t.translations;if(n==null||n.length===0)return r;let i=n.map(u=>Uh.DocsYmlSchemas.normalizeTranslationConfig(u)),o=(i.find(u=>u.default===!0)??i[0])?.lang,s=Ze(e.absoluteFilePath,Fe.of("translations")),a=await sr(s),c=[];for(let u of i){if(u.lang===o)continue;let l=Ze(s,Fe.of(u.lang));await sr(l)||c.push(u.lang)}if(c.length>0){let u=CSm({translationsDirExists:a,missingDirs:c,fernFolderPath:e.absoluteFilePath}),l=" ",p=u.split(`
|
|
3694
|
+
and optionally a version for that package. If you pass in a string, that should be the name of the package.`},"docs.SnippetsConfiguration":{type:"object",properties:{python:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},typescript:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},go:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},java:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},ruby:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},csharp:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},php:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},swift:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]},rust:{oneOf:[{$ref:"#/definitions/docs.SnippetLanguageConfiguration"},{type:"null"}]}},additionalProperties:!1},"docs.PlaygroundButtonSettings":{type:"object",properties:{href:{oneOf:[{type:"string"},{type:"null"}]}},additionalProperties:!1},"docs.PlaygroundSettings":{type:"object",properties:{hidden:{oneOf:[{type:"boolean"},{type:"null"}]},environments:{oneOf:[{type:"array",items:{type:"string"}},{type:"null"}],description:"A list of environment IDs that are allowed to be used in the playground. If not provided, all environments are allowed. And if the provided list is empty, the playground should be disabled."},button:{oneOf:[{$ref:"#/definitions/docs.PlaygroundButtonSettings"},{type:"null"}]},oauth:{oneOf:[{type:"boolean"},{type:"null"}]},"limit-websocket-messages-per-connection":{oneOf:[{type:"integer"},{type:"null"}],description:"The maximum number of websocket messages per connection in the playground."}},additionalProperties:!1},"docs.ApiReferencePackageConfigurationWithOptions":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},title:{oneOf:[{type:"string"},{type:"null"}]},summary:{oneOf:[{type:"string"},{type:"null"}],description:"Relative path to the markdown file. This summary is displayed at the top of the API section."},contents:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that is applied only to descendants of this api package."}},additionalProperties:!1},"docs.ApiReferencePackageConfiguration":{anyOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{$ref:"#/definitions/docs.ApiReferencePackageConfigurationWithOptions"}]},"docs.ApiReferenceSectionConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},section:{type:"string",description:"The title of the api package that will be displayed in the sidebar."},"referenced-packages":{oneOf:[{type:"array",items:{type:"string"}},{type:"null"}],description:"This section will inherit the endpoints from the specified subpackage(s). If multiple packages are specified, they will be merged."},summary:{oneOf:[{type:"string"},{type:"null"}],description:"Relative path to the markdown file."},contents:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}],description:"Deprecated. Use `collapsible` and `collapsed-by-default` instead."},collapsible:{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section can be expanded/collapsed by the user in the sidebar."},"collapsed-by-default":{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section starts collapsed. Only meaningful when collapsible is true."},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that affects all endpoints."}},required:["section"],additionalProperties:!1},"docs.ApiReferenceEndpointConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},endpoint:{type:"string"},title:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that affect this endpoint specifically."}},required:["endpoint"],additionalProperties:!1},"docs.ApiReferenceOperationConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},operation:{type:"string"},title:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]}},required:["operation"],additionalProperties:!1,description:"Defines a GraphQL-native schema for selecting operations (REST -> Endpoint === GraphQL -> Operation)"},"docs.LinkConfiguration":{type:"object",properties:{link:{type:"string"},href:{type:"string"},icon:{oneOf:[{type:"string"},{type:"null"}]},target:{oneOf:[{$ref:"#/definitions/docs.Target"},{type:"null"}]}},required:["link","href"],additionalProperties:!1},"docs.ApiReferenceLayoutItem":{anyOf:[{type:"string",description:"This should be either an endpoint, websocket, webhook, or subpackage ID"},{type:"object",additionalProperties:{$ref:"#/definitions/docs.ApiReferencePackageConfiguration"},description:"Keyed by subpackage name, this object allows you to group endpoints and pages together."},{$ref:"#/definitions/docs.ApiReferenceSectionConfiguration"},{$ref:"#/definitions/docs.ApiReferenceEndpointConfiguration"},{$ref:"#/definitions/docs.ApiReferenceOperationConfiguration"},{$ref:"#/definitions/docs.PageConfiguration"},{$ref:"#/definitions/docs.LinkConfiguration"}],description:"Use the `layout` object to customize the order that your API endpoints\nare displayed in the docs site."},"docs.ApiReferenceConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},api:{type:"string"},"api-name":{oneOf:[{type:"string"},{type:"null"}],description:"Name of API that we are referencing"},openrpc:{oneOf:[{type:"string"},{type:"null"}],description:"Path to an openrpc spec."},audiences:{oneOf:[{$ref:"#/definitions/docs.Audience"},{type:"null"}]},"display-errors":{oneOf:[{type:"boolean"},{type:"null"}],description:"Defaults to false"},"tag-description-pages":{oneOf:[{type:"boolean"},{type:"null"}],description:"If true, a page will be created for each tag in the OpenAPI spec that contains a description."},snippets:{oneOf:[{$ref:"#/definitions/docs.SnippetsConfiguration"},{type:"null"}]},postman:{oneOf:[{type:"string"},{type:"null"}],description:"URL to a Postman collection for this API reference"},summary:{oneOf:[{type:"string"},{type:"null"}],description:"Relative path to the markdown file"},layout:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.ApiReferenceLayoutItem"}},{type:"null"}],description:"Advanced usage: when specified, this object will be used to customize the order that your API endpoints are displayed in the docs site, including subpackages, and additional markdown pages (to be rendered in between API endpoints). If not specified, the order will be inferred from the OpenAPI Spec or Fern Definition."},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},alphabetized:{oneOf:[{type:"boolean"},{type:"null"}],description:"If `alphabetized` is set to true, packages and endpoints will be sorted alphabetically, unless explicitly ordered in the `layout` object."},flattened:{oneOf:[{type:"boolean"},{type:"null"}],description:"If `flattened` is set to true, the title specified in `api` will be hidden, and its endpoints and subpackages won't be grouped under it.\n\nThis setting is useful if the API reference is short and you want to display all endpoints at the top level."},paginated:{oneOf:[{type:"boolean"},{type:"null"}],description:"If true, the API reference will be paginated rather than displayed in a single page (long-scrolling)."},playground:{oneOf:[{$ref:"#/definitions/docs.PlaygroundSettings"},{type:"null"}],description:"Settings for the api playground that affects all endpoints."}},required:["api"],additionalProperties:!1},"docs.LibraryName":{type:"string",description:"The name identifier for a library. Used to reference the library in navigation."},"docs.LibraryReferenceConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},library:{$ref:"#/definitions/docs.LibraryName",description:"The name of the library to reference (must match a key in the `libraries` section)."},title:{oneOf:[{type:"string"},{type:"null"}],description:"Override the display title for this library reference."},slug:{oneOf:[{type:"string"},{type:"null"}],description:"Override the URL slug for this library reference."}},required:["library"],additionalProperties:!1,description:"References a library defined in the `libraries` section.\nThe library's generated navigation will be injected at this point."},"docs.ChangelogConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},changelog:{$ref:"#/definitions/docs.ChangelogFolderRelativePath"},title:{oneOf:[{type:"string"},{type:"null"}]},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]}},required:["changelog"],additionalProperties:!1},"docs.TitleSource":{type:"string",enum:["frontmatter","filename"]},"docs.FolderConfiguration":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},folder:{type:"string",description:"The relative path to a folder containing markdown files. Fern will automatically discover and add all markdown files from this folder to the navigation."},title:{oneOf:[{type:"string"},{type:"null"}],description:"The title to display for this folder section. If not provided, the folder name will be used."},"title-source":{oneOf:[{$ref:"#/definitions/docs.TitleSource"},{type:"null"}],description:"Determines how page titles are derived for files in this folder. Options are `frontmatter` (use the `title` field from the file's frontmatter) or `filename` (derive title from the file name). Defaults to `filename`."},slug:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},collapsed:{oneOf:[{$ref:"#/definitions/docs.CollapsedValue"},{type:"null"}],description:"Deprecated. Use `collapsible` and `collapsed-by-default` instead."},collapsible:{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section can be expanded/collapsed by the user."},"collapsed-by-default":{oneOf:[{type:"boolean"},{type:"null"}],description:"Whether the section starts collapsed. Only meaningful when `collapsible` is true. Defaults to false (starts open)."},availability:{oneOf:[{$ref:"#/definitions/docs.Availability"},{type:"null"}]}},required:["folder"],additionalProperties:!1},"docs.NavigationItem":{anyOf:[{$ref:"#/definitions/docs.PageConfiguration"},{$ref:"#/definitions/docs.SectionConfiguration"},{$ref:"#/definitions/docs.ApiReferenceConfiguration"},{$ref:"#/definitions/docs.LibraryReferenceConfiguration"},{$ref:"#/definitions/docs.LinkConfiguration"},{$ref:"#/definitions/docs.ChangelogConfiguration"},{$ref:"#/definitions/docs.FolderConfiguration"}]},"docs.UntabbedNavigationConfig":{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},"docs.TabId":{type:"string"},"docs.TabbedNavigationItemWithLayout":{type:"object",properties:{tab:{$ref:"#/definitions/docs.TabId"},layout:{oneOf:[{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},{type:"null"}],description:"If `href` is set, `layout` must be null."}},required:["tab"],additionalProperties:!1},"docs.TabVariant":{type:"object",properties:{viewers:{oneOf:[{$ref:"#/definitions/docs.Role"},{type:"null"}]},orphaned:{oneOf:[{type:"boolean"},{type:"null"}],description:"When `orphaned` is set to `true`, the roles will not inherit from parents."},"feature-flag":{oneOf:[{$ref:"#/definitions/docs.FeatureFlagConfiguration"},{type:"null"}]},title:{type:"string"},subtitle:{oneOf:[{type:"string"},{type:"null"}]},icon:{oneOf:[{type:"string"},{type:"null"}]},layout:{type:"array",items:{$ref:"#/definitions/docs.NavigationItem"}},slug:{oneOf:[{type:"string"},{type:"null"}]},"skip-slug":{oneOf:[{type:"boolean"},{type:"null"}]},hidden:{oneOf:[{type:"boolean"},{type:"null"}]},default:{oneOf:[{type:"boolean"},{type:"null"}]}},required:["title","layout"],additionalProperties:!1},"docs.TabbedNavigationItemWithVariants":{type:"object",properties:{tab:{$ref:"#/definitions/docs.TabId"},variants:{type:"array",items:{$ref:"#/definitions/docs.TabVariant"}}},required:["tab","variants"],additionalProperties:!1},"docs.TabbedNavigationItem":{anyOf:[{$ref:"#/definitions/docs.TabbedNavigationItemWithLayout"},{$ref:"#/definitions/docs.TabbedNavigationItemWithVariants"}]},"docs.TabbedNavigationConfig":{type:"array",items:{$ref:"#/definitions/docs.TabbedNavigationItem"}},"docs.NavigationConfig":{anyOf:[{$ref:"#/definitions/docs.UntabbedNavigationConfig"},{$ref:"#/definitions/docs.TabbedNavigationConfig"}]}},Hxm={type:_xm,properties:Vxm,required:qxm,additionalProperties:Gxm,definitions:Wxm};async function j0t({value:e}){let t=OU(e,Q4o);if(t.success){let i=p3(e,[],[]);return{type:"success",contents:Uh.RawSchemas.Serializer.ProductFileConfig.parseOrThrow(i)}}let r=t.error?.instancePath?` at ${t?.error.instancePath}`:"";return{type:"failure",message:`${t.error?.message??"Failed to parse because JSON schema validation failed"}${r}`}}tr();async function EE({absoluteFilepathToConfiguration:e,rawUnresolvedFilepath:t,visitor:r,nodePath:n,willBeUploaded:i=!0}){let o=Ni(bn(e),t);await r.filepath?.({absoluteFilepath:o,value:t,willBeUploaded:i},[o])}jt();Q7();tr();var die=require("fs/promises"),M4o=we(require("path"),1);async function RPe(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 FPe=parseInt(process.env.FERN_DOCS_VALIDATION_CONCURRENCY??"32",10);async function o$n({absolutePathToFernFolder:e,navigation:t,apiWorkspaces:r,visitor:n,absoluteFilepathToConfiguration:i,context:o,nodePath:s}){o.logger.debug(`Starting navigation validation with concurrency limit: ${FPe}`),$xm(t)?await RPe(FPe,t,async(a,c)=>{if(eSm(a))await RPe(FPe,a.layout,async(u,l)=>{await i$n({absolutePathToFernFolder:e,navigationItem:u,visitor:n,nodePath:[...s,`${c}`,"layout",`${l}`],absoluteFilepathToConfiguration:i,apiWorkspaces:r,context:o})});else if(tSm(a)){let u=a.variants.flatMap((l,p)=>l.layout.map((d,f)=>({item:d,variantIdx:p,itemIdx:f})));await RPe(FPe,u,async({item:l,variantIdx:p,itemIdx:d})=>{await i$n({absolutePathToFernFolder:e,navigationItem:l,visitor:n,nodePath:[...s,`${c}`,"variants",`${p}`,"layout",`${d}`],absoluteFilepathToConfiguration:i,apiWorkspaces:r,context:o})})}}):await RPe(FPe,t,async(a,c)=>{await i$n({absolutePathToFernFolder:e,navigationItem:a,visitor:n,nodePath:[...s,`${c}`],absoluteFilepathToConfiguration:i,apiWorkspaces:r,context:o})})}async function i$n({absolutePathToFernFolder:e,navigationItem:t,visitor:r,nodePath:n,absoluteFilepathToConfiguration:i,apiWorkspaces:o,context:s}){await IU(t,{alphabetized:vt,api:vt,apiName:vt,audiences:vt,folder:vt,titleSource:vt,collapsible:vt,collapsedByDefault:vt,openrpc:async c=>{c!=null&&await EE({absoluteFilepathToConfiguration:i,rawUnresolvedFilepath:c,visitor:r,nodePath:[...n,"openrpc"],willBeUploaded:!1})},displayErrors:vt,tagDescriptionPages:vt,snippets:vt,summary:vt,title:vt,layout:vt,collapsed:vt,icon:vt,slug:vt,hidden:vt,skipSlug:vt,paginated:vt,playground:vt,flattened:vt,featureFlag:vt,postman:vt,path:async c=>{c!=null&&await EE({absoluteFilepathToConfiguration:i,rawUnresolvedFilepath:c,visitor:r,nodePath:[...n,"path"],willBeUploaded:!1})},page:vt,contents:async c=>{c!=null&&await Promise.all(c.map(async(u,l)=>{await i$n({absolutePathToFernFolder:e,navigationItem:u,visitor:r,nodePath:[...n,"contents",`${l}`],absoluteFilepathToConfiguration:i,apiWorkspaces:o,context:s})}))},viewers:async c=>{c!=null&&c.length>0&&await r.permissions?.({viewers:c},[...n,"viewers"])},orphaned:vt,availability:vt});let a=Yxm(t);if(a!=null){let c=Ni(bn(i),a);if(await sr(c)){let l=(await(0,die.stat)(c)).size/(1024*1024);l>1&&s.logger.trace(`Processing large markdown file: ${a} (${l.toFixed(2)} MB)`);let p=performance.now(),d=(await(0,die.readFile)(c,"utf8")).toString(),f=performance.now()-p;f>2e3&&s.logger.debug(`Slow file read: ${a} took ${f.toFixed(0)}ms`);let m=Xxm(t);await r.markdownPage?.({title:m,content:d,absoluteFilepath:c},[...n,a]);try{let h=performance.now(),{filepaths:A}=oK(d,{absolutePathToFernFolder:e,absolutePathToMarkdownFile:c}),y=performance.now()-h;y>2e3&&s.logger.debug(`Slow image path parsing: ${a} took ${y.toFixed(0)}ms`);for(let I of A)await r.filepath?.({absoluteFilepath:I,value:ds(e,I),willBeUploaded:!0},[...n,a])}catch(h){s.logger.trace(`Failed to parse image paths in ${a}: ${h}`)}}}if(Zxm(t)){let c=o.find(u=>u.workspaceName===t.apiName);c!=null&&await r.apiSection?.({config:t,workspace:c,context:s},[...n,"api"])}if(Kxm(t)){let c=Ni(bn(i),t.folder);await sr(c)&&await Csu({directoryPath:c,absolutePathToFernFolder:e,visitor:r,nodePath:[...n,"folder"],context:s})}if(Jxm(t)){let c=Ni(bn(i),t.changelog);if(s.logger.trace(`Starting changelog processing for directory: ${c}`),await sr(c)){let u=performance.now(),p=(await(0,die.readdir)(c)).filter(f=>f.endsWith(".md")||f.endsWith(".mdx"));s.logger.debug(`Processing ${p.length} changelog files in ${c}`),await RPe(FPe,p,async f=>{let m=Ni(c,f),h=(await(0,die.readFile)(m,"utf8")).toString();s.logger.trace(`Validating changelog file: ${f}`),await r.markdownPage?.({title:f,content:h,absoluteFilepath:m},[...n,"changelog",f])});let d=performance.now()-u;s.logger.debug(`Finished processing ${p.length} changelog files in ${d.toFixed(0)}ms`)}else s.logger.trace(`Changelog directory does not exist: ${c}`)}}function Kxm(e){return e?.folder!=null}async function Csu({directoryPath:e,absolutePathToFernFolder:t,visitor:r,nodePath:n,context:i}){let o=await(0,die.readdir)(e,{withFileTypes:!0}),s=o.filter(c=>c.isFile()&&!c.name.startsWith("_")&&(c.name.toLowerCase().endsWith(".md")||c.name.toLowerCase().endsWith(".mdx"))),a=o.filter(c=>c.isDirectory()&&!c.name.startsWith("_"));await RPe(FPe,s,async c=>{let u=Ze(e,Fe.of(c.name)),p=(await(0,die.stat)(u)).size/(1024*1024);p>1&&i.logger.trace(`Processing large markdown file in folder: ${c.name} (${p.toFixed(2)} MB)`);let d=(await(0,die.readFile)(u,"utf8")).toString(),f=M4o.default.basename(c.name,M4o.default.extname(c.name));await r.markdownPage?.({title:f,content:d,absoluteFilepath:u},[...n,c.name]);try{let{filepaths:m}=oK(d,{absolutePathToFernFolder:t,absolutePathToMarkdownFile:u});for(let h of m)await r.filepath?.({absoluteFilepath:h,value:ds(t,h),willBeUploaded:!0},[...n,c.name])}catch(m){i.logger.trace(`Failed to parse image paths in folder file ${c.name}: ${m}`)}}),await RPe(FPe,a,async c=>{let u=Ze(e,Fe.of(c.name));await Csu({directoryPath:u,absolutePathToFernFolder:t,visitor:r,nodePath:[...n,c.name],context:i})})}function Jxm(e){return e?.changelog!=null}function wsu(e){return e?.page!=null}function xsu(e){return e?.section!=null}function Yxm(e){if(wsu(e)||xsu(e)&&e.path!=null)return e.path}function Xxm(e){return wsu(e)?e.page:xsu(e)?e.section:"Unknown"}function Zxm(e){return e?.api!=null}function $xm(e){return e[0]?.tab!=null}function eSm(e){return"layout"in e&&Array.isArray(e.layout)}function tSm(e){return"variants"in e&&Array.isArray(e.variants)}async function Tsu({contents:e,visitor:t,absoluteFilepathToConfiguration:r,context:n,apiWorkspaces:i,absolutePathToFernFolder:o}){await t.file?.({config:e},[]),await IU(e,{instances:vt,analytics:vt,aiChat:vt,aiSearch:vt,aiExamples:async s=>{s!=null&&typeof s=="object"&&await IU(s,{enabled:vt,style:vt})},pageActions:vt,announcement:vt,backgroundImage:async s=>{s!=null&&(typeof s=="string"?await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s,visitor:t,nodePath:["background-image"]}):(s.dark!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.dark,visitor:t,nodePath:["background-image","dark"]}),s.light!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.light,visitor:t,nodePath:["background-image","light"]})))},colors:vt,css:async s=>{s!=null&&(Array.isArray(s)?await Promise.all(s.map((a,c)=>EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:a,visitor:t,nodePath:["css",`${c}`],willBeUploaded:!1}))):await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s,visitor:t,nodePath:["css"],willBeUploaded:!1}))},defaultLanguage:vt,experimental:vt,favicon:async s=>{s!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s,visitor:t,nodePath:["favicon"]})},footer:async s=>{s!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s,visitor:t,nodePath:["footer"],willBeUploaded:!1})},footerLinks:vt,header:async s=>{s!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s,visitor:t,nodePath:["header"],willBeUploaded:!1})},integrations:async s=>{s?.context7!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.context7,visitor:t,nodePath:["integrations","context7"],willBeUploaded:!0})},js:async s=>{s!=null&&(Array.isArray(s)?await Promise.all(s.map((a,c)=>Ssu({absoluteFilepathToConfiguration:r,visitor:t,script:a,nodePath:["js",`${c}`]}))):await Ssu({absoluteFilepathToConfiguration:r,visitor:t,script:s,nodePath:["js"]}))},landingPage:vt,layout:vt,agents:async s=>{s?.llmsTxt!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.llmsTxt,visitor:t,nodePath:["agents","llms-txt"],willBeUploaded:!0}),s?.robotsTxt!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.robotsTxt,visitor:t,nodePath:["agents","robots-txt"],willBeUploaded:!0}),s?.llmsFullTxt!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:s.llmsFullTxt,visitor:t,nodePath:["agents","llms-full-txt"],willBeUploaded:!0})},settings:vt,logo:async()=>{e.logo?.dark!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:e.logo.dark,visitor:t,nodePath:["logo","dark"]}),e.logo?.light!=null&&await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:e.logo.light,visitor:t,nodePath:["logo","light"]})},metadata:vt,navbarLinks:vt,navigation:async s=>{if(s==null)return;let a=performance.now();n.logger.debug("[docs-ast] Starting main navigation traversal..."),await o$n({absolutePathToFernFolder:o,navigation:s,visitor:t,nodePath:["navigation"],absoluteFilepathToConfiguration:r,apiWorkspaces:i,context:n}),n.logger.debug(`[docs-ast] Main navigation traversal complete in ${(performance.now()-a).toFixed(0)}ms`)},products:async s=>{if(s==null)return;let a=performance.now();n.logger.debug(`[docs-ast] Processing ${s.length} products...`),await Promise.all(s.map(async(c,u)=>{if("path"in c){await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:c.path,visitor:t,nodePath:["products",`${u}`],willBeUploaded:!1});let l=Ni(bn(r),c.path),p=wr.load((await(0,z4o.readFile)(l)).toString());await sr(l)&&await t.productFile?.({path:c.path,content:p},[c.path]);let d=await j0t({value:p});d.type==="success"&&await o$n({absolutePathToFernFolder:o,navigation:d.contents.navigation,visitor:t,nodePath:["navigation"],absoluteFilepathToConfiguration:l,apiWorkspaces:i,context:n})}})),n.logger.debug(`[docs-ast] Products processing complete in ${(performance.now()-a).toFixed(0)}ms`)},check:vt,redirects:vt,tabs:vt,title:vt,typography:async s=>{s!=null&&await IU(s,{bodyFont:async a=>{a!=null&&await L4o({absoluteFilepathToConfiguration:r,visitor:t,font:a,nodePath:["typography","bodyFont"]})},codeFont:async a=>{a!=null&&await L4o({absoluteFilepathToConfiguration:r,visitor:t,font:a,nodePath:["typography","codeFont"]})},headingsFont:async a=>{a!=null&&await L4o({absoluteFilepathToConfiguration:r,visitor:t,font:a,nodePath:["typography","headingsFont"]})}})},versions:async s=>{if(s==null)return;let a=performance.now();n.logger.debug(`[docs-ast] Processing ${s.length} versions...`),await Promise.all(s.map(async(c,u)=>{await EE({absoluteFilepathToConfiguration:r,rawUnresolvedFilepath:c.path,visitor:t,nodePath:["versions",`${u}`],willBeUploaded:!1});let l=Ni(bn(r),c.path),p=wr.load((await(0,z4o.readFile)(l)).toString());await sr(l)&&await t.versionFile?.({path:c.path,content:p},[c.path]);let d=await k0t({value:p});d.type==="success"&&await o$n({absolutePathToFernFolder:o,navigation:d.contents.navigation,visitor:t,nodePath:["navigation"],absoluteFilepathToConfiguration:l,apiWorkspaces:i,context:n})})),n.logger.debug(`[docs-ast] Versions processing complete in ${(performance.now()-a).toFixed(0)}ms`)},roles:vt,languages:vt,translations:vt,theme:vt,globalTheme:vt,libraries:vt})}async function L4o({absoluteFilepathToConfiguration:e,visitor:t,font:r,nodePath:n}){r.path!=null&&await EE({absoluteFilepathToConfiguration:e,rawUnresolvedFilepath:r.path,visitor:t,nodePath:n,willBeUploaded:!0});for(let i of r.paths??[])typeof i=="string"?await EE({absoluteFilepathToConfiguration:e,rawUnresolvedFilepath:i,visitor:t,nodePath:n,willBeUploaded:!0}):await EE({absoluteFilepathToConfiguration:e,rawUnresolvedFilepath:i.path,visitor:t,nodePath:n,willBeUploaded:!0})}async function Ssu({absoluteFilepathToConfiguration:e,visitor:t,script:r,nodePath:n}){let i=typeof r=="string"?r:"path"in r?r.path:null;i&&await EE({absoluteFilepathToConfiguration:e,rawUnresolvedFilepath:i,visitor:t,nodePath:n,willBeUploaded:!0})}var $0t={};te($0t,{AccentColorContrastRule:()=>U4o,AllRolesMustBeDeclaredRule:()=>_4o,CHANGELOG_FEED_ALLOWED_SLUGS:()=>h$n,FilepathsExistRule:()=>s$n,MissingRedirectsRule:()=>Q0t,NoCircularRedirectsRule:()=>M0t,OnlyVersionedNavigation:()=>f$n,TabWithHrefRule:()=>bSm,TranslationDirectoriesExistRule:()=>d$n,ValidChangelogSlugRule:()=>L0t,ValidDocsEndpoints:()=>z0t,ValidFileTypes:()=>w$n,ValidFrontmatter:()=>x$n,ValidMarkdownFileReferences:()=>cpu,ValidMarkdownLinks:()=>V7,ValidMarkdownRule:()=>opu,ValidTranslationsConfigRule:()=>xei,ValidateProductFileRule:()=>Sei,ValidateVersionFileRule:()=>Tei,enforceBackgroundTheme:()=>Bsu,getEffectiveChangelogSlugLastSegment:()=>Usu,isAllowedChangelogSlug:()=>J4o,validateTheme:()=>Eqt});BOr();var U4o={name:"accent-color-contrast",create:()=>({file:async({config:e})=>{if(e.colors==null)return[];let t=POr(e.colors);return t==="dark"?Eqt(e.colors,"dark"):t==="light"?Eqt(e.colors,"light"):t==="darkAndLight"?[...Eqt(e.colors,"dark"),...Eqt(e.colors,"light")]:[]}})};function Eqt(e,t){let r=dNt(e.accentPrimary??e.accentPrimaryDeprecated,"accent-primary",t),n=dNt(e.background,"background",t)??(t==="dark"?"#000":"#FFF"),i=[];if(!gs(n).isValid())i.push({severity:"fatal",message:`Invalid background color provided for colors.background.${t}: ${n}.`});else{let o=Bsu(gs(n),t);gs(n).toHexString()!==o.toHexString()&&i.push({severity:"warning",message:`The provided background color for ${t} mode is not ${t} enough. It will be adjusted to ${o.toHexString()}.`}),n=o.toHexString()}if(r==null)i.push({severity:"warning",message:`No accent-color provided for ${t} mode. A random color will be used.`});else if(!gs(r).isValid())i.push({severity:"fatal",message:`Invalid accent-color provided for colors.accent-primary.${t}: ${r}.`});else{let o=gs.readability(r,n),s=`${o.toFixed(2)}:1`;o<3?i.push({severity:"warning",message:`The contrast ratio between the accent color and the background color for ${t} mode is ${s}. It should be at least 3:1.`}):o<4.5?i.push({severity:"warning",message:`The contrast ratio between the accent color and the background color for ${t} mode is ${s}. Fern will adjust the color to meet the minimum contrast ratio of 4.5:1 for WCAG AA and 7:1 for WCAG AAA.`}):o<7&&i.push({severity:"warning",message:`The contrast ratio between the accent color and the background color for ${t} mode is ${s}. Fern will adjust the color to meet the minimum contrast ratio of 7:1 for WCAG AAA.`})}return i}function Bsu(e,t){return t==="dark"&&e.isDark()||t==="light"&&e.isLight()?e:rSm(e)}function rSm(e){if(e==null)return;let{h:t,s:r,v:n}=e.toHsv();return gs({h:t,s:r,v:1-n})}var _4o={name:"all-roles-must-be-declared",create:e=>{let t=e.workspace.config.roles;return{permissions:r=>{let n=[...r.viewers??[]],i=[];for(let o of n)(t==null||!t.includes(o))&&i.push({severity:"fatal",message:`Role "${o}" is used but not declared at the top level of the docs.yml file.`});return i}}}};tr();var s$n={name:"filepaths-exist",create:()=>({filepath:async({absoluteFilepath:e,value:t})=>await sr(e)?[]:[{severity:"fatal",message:`Path ${t} does not exist`}]})};Hh();Hb();_t();function a$n(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;try{let t=JSON.stringify(e);if(t!=null&&t!=="{}")return t}catch{}return Object.prototype.toString.call(e)}function Osu(e){return e.split(/[?#]/)[0]??""}function kPe(e){return e.startsWith("/")?e.slice(1):e}function V4o(e){return e.startsWith("/")?e:`/${e}`}function c$n(e){return e.endsWith("/")?e.slice(0,-1):e}function u$n(e){let t=[];return e.config.instances.forEach(r=>{t.push(r.url),typeof r.customDomain=="string"?t.push(r.customDomain):Array.isArray(r.customDomain)&&t.push(...r.customDomain)}),t}function vqt(e){let t=new URL(TN(e));return{domain:t.host,basePath:t.pathname==="/"||t.pathname===""?void 0:t.pathname}}function Psu(e,t){return t.some(r=>{try{let n=vqt(r);return e.host!==n.domain?!1:n.basePath!=null?e.pathname.startsWith(n.basePath):!0}catch{return!1}})}Hh();function Dsu(e){let t=Ot.NodeCollector.collect(e),r=new Map;for(let n of t.getSlugMapWithParents().values()){let{node:i,parents:o}=n;if(!Ot.isPage(i))continue;let s=Ot.getPageId(i);if(s==null)continue;let a=i.canonicalSlug??i.slug;if(i.type==="changelogEntry"){let u=o.findLast(l=>l.type==="changelog");u!=null&&Ot.hasMetadata(u)&&(a=u.canonicalSlug??u.slug)}let c=r.get(s);c!=null?c.add(a):r.set(s,new Set([a]))}return r}function nSm(e){for(var t=[],r=0;r<e.length;){var n=e[r];if(n==="*"||n==="+"||n==="?"){t.push({type:"MODIFIER",index:r,value:e[r++]});continue}if(n==="\\"){t.push({type:"ESCAPED_CHAR",index:r++,value:e[r++]});continue}if(n==="{"){t.push({type:"OPEN",index:r,value:e[r++]});continue}if(n==="}"){t.push({type:"CLOSE",index:r,value:e[r++]});continue}if(n===":"){for(var i="",o=r+1;o<e.length;){var s=e.charCodeAt(o);if(s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||s===95){i+=e[o++];continue}break}if(!i)throw new TypeError("Missing parameter name at ".concat(r));t.push({type:"NAME",index:r,value:i}),r=o;continue}if(n==="("){var a=1,c="",o=r+1;if(e[o]==="?")throw new TypeError('Pattern cannot start with "?" at '.concat(o));for(;o<e.length;){if(e[o]==="\\"){c+=e[o++]+e[o++];continue}if(e[o]===")"){if(a--,a===0){o++;break}}else if(e[o]==="("&&(a++,e[o+1]!=="?"))throw new TypeError("Capturing groups are not allowed at ".concat(o));c+=e[o++]}if(a)throw new TypeError("Unbalanced pattern at ".concat(r));if(!c)throw new TypeError("Missing pattern at ".concat(r));t.push({type:"PATTERN",index:r,value:c}),r=o;continue}t.push({type:"CHAR",index:r,value:e[r++]})}return t.push({type:"END",index:r,value:""}),t}function Rsu(e,t){t===void 0&&(t={});for(var r=nSm(e),n=t.prefixes,i=n===void 0?"./":n,o=t.delimiter,s=o===void 0?"/#?":o,a=[],c=0,u=0,l="",p=function(P){if(u<r.length&&r[u].type===P)return r[u++].value},d=function(P){var U=p(P);if(U!==void 0)return U;var X=r[u],$=X.type,ne=X.index;throw new TypeError("Unexpected ".concat($," at ").concat(ne,", expected ").concat(P))},f=function(){for(var P="",U;U=p("CHAR")||p("ESCAPED_CHAR");)P+=U;return P},m=function(P){for(var U=0,X=s;U<X.length;U++){var $=X[U];if(P.indexOf($)>-1)return!0}return!1},h=function(P){var U=a[a.length-1],X=P||(U&&typeof U=="string"?U:"");if(U&&!X)throw new TypeError('Must have text between two parameters, missing text after "'.concat(U.name,'"'));return!X||m(X)?"[^".concat(NPe(s),"]+?"):"(?:(?!".concat(NPe(X),")[^").concat(NPe(s),"])+?")};u<r.length;){var A=p("CHAR"),y=p("NAME"),I=p("PATTERN");if(y||I){var w=A||"";i.indexOf(w)===-1&&(l+=w,w=""),l&&(a.push(l),l=""),a.push({name:y||c++,prefix:w,suffix:"",pattern:I||h(w),modifier:p("MODIFIER")||""});continue}var C=A||p("ESCAPED_CHAR");if(C){l+=C;continue}l&&(a.push(l),l="");var x=p("OPEN");if(x){var w=f(),T=p("NAME")||"",O=p("PATTERN")||"",R=f();d("CLOSE"),a.push({name:T||(O?c++:""),pattern:T&&!O?h(w):O,prefix:w,suffix:R,modifier:p("MODIFIER")||""});continue}d("END")}return a}function Fsu(e,t){return iSm(Rsu(e,t),t)}function iSm(e,t){t===void 0&&(t={});var r=q4o(t),n=t.encode,i=n===void 0?function(c){return c}:n,o=t.validate,s=o===void 0?!0:o,a=e.map(function(c){if(typeof c=="object")return new RegExp("^(?:".concat(c.pattern,")$"),r)});return function(c){for(var u="",l=0;l<e.length;l++){var p=e[l];if(typeof p=="string"){u+=p;continue}var d=c?c[p.name]:void 0,f=p.modifier==="?"||p.modifier==="*",m=p.modifier==="*"||p.modifier==="+";if(Array.isArray(d)){if(!m)throw new TypeError('Expected "'.concat(p.name,'" to not repeat, but got an array'));if(d.length===0){if(f)continue;throw new TypeError('Expected "'.concat(p.name,'" to not be empty'))}for(var h=0;h<d.length;h++){var A=i(d[h],p);if(s&&!a[l].test(A))throw new TypeError('Expected all "'.concat(p.name,'" to match "').concat(p.pattern,'", but got "').concat(A,'"'));u+=p.prefix+A+p.suffix}continue}if(typeof d=="string"||typeof d=="number"){var A=i(String(d),p);if(s&&!a[l].test(A))throw new TypeError('Expected "'.concat(p.name,'" to match "').concat(p.pattern,'", but got "').concat(A,'"'));u+=p.prefix+A+p.suffix;continue}if(!f){var y=m?"an array":"a string";throw new TypeError('Expected "'.concat(p.name,'" to be ').concat(y))}}return u}}function l$n(e,t){var r=[],n=ksu(e,r,t);return oSm(n,r,t)}function oSm(e,t,r){r===void 0&&(r={});var n=r.decode,i=n===void 0?function(o){return o}:n;return function(o){var s=e.exec(o);if(!s)return!1;for(var a=s[0],c=s.index,u=Object.create(null),l=function(d){if(s[d]===void 0)return"continue";var f=t[d-1];f.modifier==="*"||f.modifier==="+"?u[f.name]=s[d].split(f.prefix+f.suffix).map(function(m){return i(m,f)}):u[f.name]=i(s[d],f)},p=1;p<s.length;p++)l(p);return{path:a,index:c,params:u}}}function NPe(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function q4o(e){return e&&e.sensitive?"":"i"}function sSm(e,t){if(!t)return e;for(var r=/\((?:\?<(.*?)>)?(?!\?)/g,n=0,i=r.exec(e.source);i;)t.push({name:i[1]||n++,prefix:"",suffix:"",modifier:"",pattern:""}),i=r.exec(e.source);return e}function aSm(e,t,r){var n=e.map(function(i){return ksu(i,t,r).source});return new RegExp("(?:".concat(n.join("|"),")"),q4o(r))}function cSm(e,t,r){return uSm(Rsu(e,r),t,r)}function uSm(e,t,r){r===void 0&&(r={});for(var n=r.strict,i=n===void 0?!1:n,o=r.start,s=o===void 0?!0:o,a=r.end,c=a===void 0?!0:a,u=r.encode,l=u===void 0?function(U){return U}:u,p=r.delimiter,d=p===void 0?"/#?":p,f=r.endsWith,m=f===void 0?"":f,h="[".concat(NPe(m),"]|$"),A="[".concat(NPe(d),"]"),y=s?"^":"",I=0,w=e;I<w.length;I++){var C=w[I];if(typeof C=="string")y+=NPe(l(C));else{var x=NPe(l(C.prefix)),T=NPe(l(C.suffix));if(C.pattern)if(t&&t.push(C),x||T)if(C.modifier==="+"||C.modifier==="*"){var O=C.modifier==="*"?"?":"";y+="(?:".concat(x,"((?:").concat(C.pattern,")(?:").concat(T).concat(x,"(?:").concat(C.pattern,"))*)").concat(T,")").concat(O)}else y+="(?:".concat(x,"(").concat(C.pattern,")").concat(T,")").concat(C.modifier);else{if(C.modifier==="+"||C.modifier==="*")throw new TypeError('Can not repeat "'.concat(C.name,'" without a prefix and suffix'));y+="(".concat(C.pattern,")").concat(C.modifier)}else y+="(?:".concat(x).concat(T,")").concat(C.modifier)}}if(c)i||(y+="".concat(A,"?")),y+=r.endsWith?"(?=".concat(h,")"):"$";else{var R=e[e.length-1],P=typeof R=="string"?A.indexOf(R[R.length-1])>-1:R===void 0;i||(y+="(?:".concat(A,"(?=").concat(h,"))?")),P||(y+="(?=".concat(A,"|").concat(h,")"))}return new RegExp(y,q4o(r))}function ksu(e,t,r){return e instanceof RegExp?sSm(e,t):Array.isArray(e)?aSm(e,t,r):cSm(e,t,r)}function Nsu(e){let t=new Map;for(let r of e){let n=t.get(r.pageId);(n==null||Date.parse(r.lastUpdated)>=Date.parse(n.lastUpdated))&&t.set(r.pageId,r)}return Array.from(t.values())}function jsu(e){return e.endsWith("/")?e.slice(0,-1):e}function lSm(e,t){return t==null||e.startsWith(t)?e:`${jsu(t)}${e.startsWith("/")?"":"/"}${e}`}function pSm(e,t){if(e===t)return!0;try{return l$n(e)(t)!==!1}catch{return!1}}function fSm(e,t,r){let n=e.startsWith("/")?e:`/${e}`;return t.some(i=>{let o=jsu(lSm(i.source,r));return pSm(o,n)})}function Qsu(e,t){let r=new Set;for(let i of t.values())for(let o of i)r.add(o);let n=[];for(let i of e){if(i.slug.trim()==="")continue;let o=t.get(i.pageId);if(o==null){if(r.has(i.slug))continue;n.push({pageId:i.pageId,oldSlug:i.slug,newSlug:void 0})}else if(!o.has(i.slug)){if(r.has(i.slug))continue;let s=o.values().next().value;n.push({pageId:i.pageId,oldSlug:i.slug,newSlug:s})}}return n}function Msu(e,t,r){let n=[];for(let i of e){if(fSm(i.oldSlug,t,r))continue;let o=i.oldSlug.startsWith("/")?i.oldSlug:`/${i.oldSlug}`;if(i.newSlug!=null){let s=i.newSlug.startsWith("/")?i.newSlug:`/${i.newSlug}`;n.push({severity:"warning",message:`Page "${i.pageId}" was moved from "${o}" to "${s}". The old URL will return 404 without a redirect. Add to docs.yml: redirects: [{source: "${o}", destination: "${s}"}]`})}else n.push({severity:"warning",message:`Page "${i.pageId}" was removed. The previously published URL "${o}" will return 404 without a redirect. Consider adding a redirect in docs.yml to preserve existing links.`})}return n}function dSm(){let e;return{context:W2e({logger:VI((r,...n)=>{r==="error"&&(e=n.join(" "))})}),getLastErrorMessage:()=>e}}function mSm(e){return"type"in e&&e.type==="root"}async function hSm(e,t,r,n){try{let i=await fetch(`${e}/slugs/markdowns`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`},body:JSON.stringify({domain:t,basepath:r??""}),signal:AbortSignal.timeout(3e4)});return i.ok?{entries:(await i.json()).entries}:{error:`FDR returned ${i.status}`}}catch(i){return{error:i instanceof Error?i.message:String(i)}}}function gSm(){return process.env.FERN_FDR_ORIGIN??process.env.OVERRIDE_FDR_ORIGIN??"https://registry.buildwithfern.com"??"https://registry.buildwithfern.com"}var Q0t={name:"missing-redirects",create:async({workspace:e,apiWorkspaces:t,ossWorkspaces:r,logger:n})=>{let o=u$n(e)[0];if(o==null)return Iqt({type:"no-instance-url"});let s=vqt(o),a=await rH();if(a==null)return Iqt({type:"no-token"});let c=await hSm(gSm(),s.domain,s.basePath,a.value);if("error"in c)return n.debug(`[missing-redirects] FDR fetch failed: ${c.error}`),Iqt({type:"fetch-failed",reason:c.error});if(c.entries.length===0)return n.debug("[missing-redirects] No markdown entries found (first publish or empty slug table)"),Iqt({type:"first-publish"});let u,{context:l,getLastErrorMessage:p}=dSm();try{let m=(await new _z({domain:o,docsWorkspace:e,ossWorkspaces:r,apiWorkspaces:t,taskContext:l,editThisPage:void 0,uploadFiles:void 0,registerApi:void 0,targetAudiences:void 0}).resolve()).config.root;if(!m||!mSm(m))return{};let h=Ot.migrate.FernNavigationV1ToLatest.create().root(m),A=Dsu(h),y=Nsu(c.entries);u=Qsu(y,A)}catch(d){let f=p()??a$n(d);return n.debug(`[missing-redirects] Failed to resolve local docs navigation: ${f}`),Iqt({type:"resolve-failed",reason:f})}return u.length===0?{}:{file:async({config:d})=>{let f=(d.redirects??[]).map(m=>({source:m.source,destination:m.destination}));return Msu(u,f,s.basePath)}}}};function Iqt(e){switch(e.type){case"no-instance-url":case"first-publish":return{};case"no-token":return{file:()=>[{severity:"warning",message:"Missing redirects check skipped: not authenticated. Run 'fern login' or set the FERN_TOKEN environment variable to enable this check."}]};case"fetch-failed":return{file:()=>[{severity:"warning",message:`Missing redirects check skipped: could not reach FDR (${e.reason}). The check requires network access to compare against previously published docs.`}]};case"resolve-failed":return{file:()=>[{severity:"warning",message:`Missing redirects check skipped: failed to resolve local docs navigation (${e.reason}). Run \`fern check --log-level=debug\` for more detail.`}]}}}function p$n(e){return e!=="/"&&e.endsWith("/")?e.slice(0,-1):e}function ASm(e){return!e.source.includes(":")&&!e.destination.includes(":")}function ySm(e){let t=[],r=e.filter(ASm),n=new Map;for(let c=0;c<r.length;c++){let u=r[c];if(u){let l=p$n(u.source),p=p$n(u.destination);n.set(l,{destination:p,index:c})}}for(let c=0;c<e.length;c++){let u=e[c];if(u){let l=p$n(u.source),p=p$n(u.destination);l===p&&t.push({severity:"error",message:`redirects[${c}]: Redirect from "${u.source}" to "${u.destination}" creates an infinite loop (source equals destination)`})}}let i=new Set,o=new Set;function s(c,u){if(o.has(c)){let d=u.indexOf(c);return u.slice(d)}if(i.has(c))return null;let l=n.get(c);if(!l)return null;i.add(c),o.add(c),u.push(c);let p=s(l.destination,u);return o.delete(c),u.pop(),p}let a=new Set;for(let[c]of n){i.clear(),o.clear();let u=s(c,[]);if(u&&u.length>1){let p=[...u].sort().join(" -> ");if(!a.has(p)){a.add(p);let d=[...u,u[0]].join(" -> ");t.push({severity:"error",message:`Circular redirect chain detected: ${d}`})}}}return t}var M0t={name:"no-circular-redirects",create:()=>({file:async({config:e})=>{let t=[];if(!e.redirects||e.redirects.length===0)return t;let r=e.redirects.map(n=>({source:n.source,destination:n.destination,permanent:n.permanent}));return ySm(r)}})};var f$n={name:"only-versioned-navigation",create:()=>({file:async({config:e})=>e.navigation!=null&&e.versions!=null?[{severity:"fatal",message:"Cannot contain both navigation and versions. If you want versioned docs, use versions. Otherwise use navigation."}]:[]})};var bSm={name:"tab-with-href",create:()=>({file:async({config:e})=>{let t=e.tabs??{};if(e.navigation==null)return[];let r=[];if(ESm(e.navigation))for(let n of e.navigation){let i=t[n.tab];if(i==null){r.push({severity:"fatal",message:`Tab "${n.tab}" is missing from the tabs configuration.`});continue}let o=vSm(n),s=ISm(n);if(i.href!=null&&(o||s)){r.push({severity:"fatal",message:`Tab "${n.tab}" has both a href and ${o?"layout":"variants"}. Only one should be used.`});continue}if(i.href==null&&!o&&!s){r.push({severity:"fatal",message:`Tab "${n.tab}" is missing a href, layout, or variants.`});continue}}return[]}})};function ESm(e){return Array.isArray(e)&&e.length>0&&e[0].tab!=null}function vSm(e){return"layout"in e&&Array.isArray(e.layout)}function ISm(e){return"variants"in e&&Array.isArray(e.variants)}tr();var d$n={name:"translation-directories-exist",create:({workspace:e})=>({file:async({config:t})=>{let r=[],n=t.translations;if(n==null||n.length===0)return r;let i=n.map(u=>Uh.DocsYmlSchemas.normalizeTranslationConfig(u)),o=(i.find(u=>u.default===!0)??i[0])?.lang,s=Ze(e.absoluteFilePath,Fe.of("translations")),a=await sr(s),c=[];for(let u of i){if(u.lang===o)continue;let l=Ze(s,Fe.of(u.lang));await sr(l)||c.push(u.lang)}if(c.length>0){let u=CSm({translationsDirExists:a,missingDirs:c,fernFolderPath:e.absoluteFilePath}),l=" ",p=u.split(`
|
|
3695
3695
|
`).map(d=>`${l}${d}`).join(`
|
|
3696
3696
|
`);r.push({severity:"error",message:`Missing translation ${c.length===1?"directory":"directories"} for ${c.length===1?"locale":"locales"}: ${c.join(", ")}
|
|
3697
3697
|
|
|
@@ -3813,7 +3813,7 @@ Hint: Values starting with "@" (such as scoped npm packages) must be wrapped in
|
|
|
3813
3813
|
Add a 'docs:' section to your fern.yml to get started.`,code:D.Code.ConfigError});let o=await new VPe({context:t}).check({workspace:n,strict:r.strict}),s=new Set(o.mdxParseErrors.map(p=>p.displayRelativeFilepath)),a=new Set(o.mdxParseErrors.map(p=>p.rawMessage)),c=o.violations.filter(p=>!(s.size>0&&aFm(p,s,a))),u=o.hasErrors||r.strict&&o.hasWarnings;if(r.json){let p=this.buildJsonResponse({result:o,filteredViolations:c,hasErrors:u});if(t.stdout.info(JSON.stringify(p,null,2)),u)throw new D({code:D.Code.ValidationError});return}if(c.length>0)for(let p of c){let d=p.severity==="warning"?Ae.yellow:Ae.red;process.stderr.write(`${d(`${p.displayRelativeFilepath}:${p.line}:${p.column}: ${p.message}`)}
|
|
3814
3814
|
`)}let l=0;if(o.mdxParseErrors.length>0){for(let p of o.mdxParseErrors)t.stderr.info(`
|
|
3815
3815
|
${p.toString()}
|
|
3816
|
-
`);r.fix?l+=await Fei(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!hXn()&&await kei(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new nEt({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new D({code:D.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${Nr.warning} ${Ae.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(Ae.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${Nr.success} ${Ae.green("All checks passed")}`)}buildJsonResponse({result:t,filteredViolations:r,hasErrors:n}){let i={};return(r.length>0||t.mdxParseErrors.length>0)&&(i.docs=[...r.map(o=>Cee(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 aFm(e,t,r){if(!/failed to parse|failed to initialize/i.test(e.message))return!1;for(let n of r)if(n.length>0&&e.message.includes(n))return!0;for(let n of t){if(e.message.includes(n))return!0;let i=n.split("/").filter(Boolean);for(let o=i.length;o>=2;o--){let s=i.slice(i.length-o).join("/");if(e.message.includes(s))return!0}if(i.length===1){let o=i[0];if(o!=null&&e.message.includes(o))return!0}}return!1}function cVo(e){let t=new aVo;ai(e,"check","Validate docs configuration",(r,n)=>t.handle(r,n),r=>r.option("strict",{type:"boolean",description:"Treat warnings as errors",default:!1}).option("json",{type:"boolean",description:"Output results as JSON to stdout",default:!1}).option("fix",{type:"boolean",description:"Automatically fix issues that have a known resolution",default:!1}))}Hb();_t();var cfu=we(require("net"),1),ufu=we(require("os"),1),Qei=class extends Error{constructor(t){super(`${t} is locked`)}},aEt={old:new Set,young:new Set},cFm=1e3*15,lfu=new Set;var oGt,uFm=()=>{let e=ufu.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},sfu=e=>new Promise((t,r)=>{let n=cfu.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),afu=async(e,t)=>{if(e.host||e.port===0)return sfu(e);for(let r of t)try{await sfu({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},lFm=e=>aEt.old.has(e)||aEt.young.has(e)||lfu.has(e),pFm=function*(e){e&&(yield*e),yield 0};async function GPe(e){let t,r=new Set;if(e&&(e.port&&(t=typeof e.port=="number"?[e.port]:e.port),e.exclude)){let s=e.exclude;if(typeof s[Symbol.iterator]!="function")throw new TypeError("The `exclude` option must be an iterable.");for(let a of s){if(typeof a!="number")throw new TypeError("Each item in the `exclude` option must be a number corresponding to the port you want excluded.");if(!Number.isSafeInteger(a))throw new TypeError(`Number ${a} in the exclude option is not a safe integer and can't be used`)}r=new Set(s)}let{reserve:n,...i}=e??{};oGt===void 0&&(oGt=setTimeout(()=>{oGt=void 0,aEt.old=aEt.young,aEt.young=new Set},cFm),oGt.unref&&oGt.unref());let o=uFm();for(let s of pFm(t))try{if(r.has(s))continue;let a=await afu({...i,port:s},o);for(;lFm(a);){if(s!==0)throw new Qei(s);a=await afu({...i,port:s},o)}return n?lfu.add(a):aEt.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof Qei))throw a}throw new Error("No available ports found")}_t();var dfu=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,pfu="docs.buildwithfern.com",ffu=62;function RUe(e){let t=e.toLowerCase().trim();t.startsWith("https://")?t=t.slice(8):t.startsWith("http://")&&(t=t.slice(7));let r=t.indexOf("/");return r!==-1&&(t=t.slice(0,r)),dfu.test(t)}function mfu(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function sGt({orgId:e,previewId:t}){let r=mfu(t),n=`${e}-preview-${r}.${pfu}`;if(n.length<=ffu)return n;let i=`${e}-preview-`,o=ffu-i.length;if(o<8)throw new D({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:D.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${pfu}`}jt();Hh();tr();aS();_t();var K7o=require("child_process"),jCu=we(pVo(),1),J7o=we(Cti(),1),Y7o=we(require("fs"),1),i_e=require("fs/promises"),QCu=we(require("http"),1),$7o=we(require("path"),1);Mti();tr();var Y7=require("fs/promises"),ZAu=require("os"),Z5o=we(require("path"),1),ZLm=".fern",$Lm="logs",X5o=100*1024*1024;function e3m(){return"cli@5.44.
|
|
3816
|
+
`);r.fix?l+=await Fei(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!hXn()&&await kei(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new nEt({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new D({code:D.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${Nr.warning} ${Ae.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(Ae.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${Nr.success} ${Ae.green("All checks passed")}`)}buildJsonResponse({result:t,filteredViolations:r,hasErrors:n}){let i={};return(r.length>0||t.mdxParseErrors.length>0)&&(i.docs=[...r.map(o=>Cee(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 aFm(e,t,r){if(!/failed to parse|failed to initialize/i.test(e.message))return!1;for(let n of r)if(n.length>0&&e.message.includes(n))return!0;for(let n of t){if(e.message.includes(n))return!0;let i=n.split("/").filter(Boolean);for(let o=i.length;o>=2;o--){let s=i.slice(i.length-o).join("/");if(e.message.includes(s))return!0}if(i.length===1){let o=i[0];if(o!=null&&e.message.includes(o))return!0}}return!1}function cVo(e){let t=new aVo;ai(e,"check","Validate docs configuration",(r,n)=>t.handle(r,n),r=>r.option("strict",{type:"boolean",description:"Treat warnings as errors",default:!1}).option("json",{type:"boolean",description:"Output results as JSON to stdout",default:!1}).option("fix",{type:"boolean",description:"Automatically fix issues that have a known resolution",default:!1}))}Hb();_t();var cfu=we(require("net"),1),ufu=we(require("os"),1),Qei=class extends Error{constructor(t){super(`${t} is locked`)}},aEt={old:new Set,young:new Set},cFm=1e3*15,lfu=new Set;var oGt,uFm=()=>{let e=ufu.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},sfu=e=>new Promise((t,r)=>{let n=cfu.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),afu=async(e,t)=>{if(e.host||e.port===0)return sfu(e);for(let r of t)try{await sfu({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},lFm=e=>aEt.old.has(e)||aEt.young.has(e)||lfu.has(e),pFm=function*(e){e&&(yield*e),yield 0};async function GPe(e){let t,r=new Set;if(e&&(e.port&&(t=typeof e.port=="number"?[e.port]:e.port),e.exclude)){let s=e.exclude;if(typeof s[Symbol.iterator]!="function")throw new TypeError("The `exclude` option must be an iterable.");for(let a of s){if(typeof a!="number")throw new TypeError("Each item in the `exclude` option must be a number corresponding to the port you want excluded.");if(!Number.isSafeInteger(a))throw new TypeError(`Number ${a} in the exclude option is not a safe integer and can't be used`)}r=new Set(s)}let{reserve:n,...i}=e??{};oGt===void 0&&(oGt=setTimeout(()=>{oGt=void 0,aEt.old=aEt.young,aEt.young=new Set},cFm),oGt.unref&&oGt.unref());let o=uFm();for(let s of pFm(t))try{if(r.has(s))continue;let a=await afu({...i,port:s},o);for(;lFm(a);){if(s!==0)throw new Qei(s);a=await afu({...i,port:s},o)}return n?lfu.add(a):aEt.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof Qei))throw a}throw new Error("No available ports found")}_t();var dfu=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,pfu="docs.buildwithfern.com",ffu=62;function RUe(e){let t=e.toLowerCase().trim();t.startsWith("https://")?t=t.slice(8):t.startsWith("http://")&&(t=t.slice(7));let r=t.indexOf("/");return r!==-1&&(t=t.slice(0,r)),dfu.test(t)}function mfu(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function sGt({orgId:e,previewId:t}){let r=mfu(t),n=`${e}-preview-${r}.${pfu}`;if(n.length<=ffu)return n;let i=`${e}-preview-`,o=ffu-i.length;if(o<8)throw new D({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:D.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${pfu}`}jt();Hh();tr();aS();_t();var K7o=require("child_process"),jCu=we(pVo(),1),J7o=we(Cti(),1),Y7o=we(require("fs"),1),i_e=require("fs/promises"),QCu=we(require("http"),1),$7o=we(require("path"),1);Mti();tr();var Y7=require("fs/promises"),ZAu=require("os"),Z5o=we(require("path"),1),ZLm=".fern",$Lm="logs",X5o=100*1024*1024;function e3m(){return"cli@5.44.10"}var WUe=class{logFilePath=null;initialized=!1;sessionStartTime;consoleLogger;constructor(){this.sessionStartTime=Date.now()}async initialize(t,r){if(this.initialized)return;this.consoleLogger=t;let n=r??Ze(Ze(Ht.of((0,ZAu.homedir)()),Fe.of(ZLm)),Fe.of($Lm));await sr(n)||await(0,Y7.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=Ze(n,Fe.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${Z5o.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
|
|
3817
3817
|
`);await(0,Y7.writeFile)(this.logFilePath,s,"utf-8"),this.initialized=!0,this.enforceLogSizeLimit(n)}getLogFilePath(){return this.logFilePath}async writeEntry(t){if(!this.initialized||!this.logFilePath)return;let r=JSON.stringify(t)+`
|
|
3818
3818
|
`;try{await(0,Y7.appendFile)(this.logFilePath,r,"utf-8")}catch{}}async logFrontendMetrics(t){let r={timestamp:t.timestamp,source:t.source,level:t.level,eventType:this.getEventType(t.payload,t.isAggregate),isAggregate:t.isAggregate,data:t.payload};await this.writeEntry(r)}async logCliMetric(t,r="info"){let n={timestamp:t.timestamp,source:e3m(),level:r,eventType:t.type,data:{durationMs:t.durationMs,metadata:t.metadata}};await this.writeEntry(n)}async logCliMemory(){let t=process.memoryUsage(),r={type:"cli_memory",timestamp:new Date().toISOString(),metadata:{heapUsed:t.heapUsed,heapTotal:t.heapTotal,external:t.external,rss:t.rss,heapUsedMB:Math.round(t.heapUsed/1024/1024*100)/100,heapTotalMB:Math.round(t.heapTotal/1024/1024*100)/100,rssMB:Math.round(t.rss/1024/1024*100)/100}};await this.logCliMetric(r)}async logCliReloadStart(){let t={type:"cli_reload_start",timestamp:new Date().toISOString()};await this.logCliMetric(t)}async logCliReloadFinish(t,r){let n={type:"cli_reload_finish",timestamp:new Date().toISOString(),durationMs:t,metadata:r};await this.logCliMetric(n)}async logCliDocsGeneration(t,r){let n={type:"cli_docs_generation",timestamp:new Date().toISOString(),durationMs:t,metadata:r};await this.logCliMetric(n)}async logCliValidation(t,r){let n={type:"cli_validation",timestamp:new Date().toISOString(),durationMs:t,metadata:{success:r}};await this.logCliMetric(n)}async enforceLogSizeLimit(t){try{let n=(await(0,Y7.readdir)(t)).filter(c=>c.endsWith(".log")),i=[];for(let c of n){let u=Z5o.default.join(t,c);try{let l=await(0,Y7.stat)(u);i.push({name:c,fullPath:u,size:l.size,mtimeMs:l.mtimeMs})}catch{}}let o=i.reduce((c,u)=>c+u.size,0),s=Math.round(o/1024/1024*100)/100,a=X5o/1024/1024;if(o<=X5o){this.consoleLogger?.debug(`Log directory size ${s} MB does not exceed ${a} MB cap`);return}this.consoleLogger?.info(`Rotating logs: total size ${s} MB exceeds ${a} MB cap`),i.sort((c,u)=>c.mtimeMs-u.mtimeMs);for(let c of i){if(o<=X5o)break;if(!(this.logFilePath!=null&&c.fullPath===this.logFilePath))try{await(0,Y7.unlink)(c.fullPath),o-=c.size}catch{}}}catch{}}getEventType(t,r){return r?"aggregate_summary":"type"in t&&typeof t.type=="string"?t.type:"unknown"}static isMetricsMessage(t){if(typeof t!="object"||t===null)return!1;let r=t;return r.type==="metrics"&&typeof r.timestamp=="string"&&typeof r.source=="string"}};var Lti={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function $Au(e){let t=t3m();if(t==null)return;let{port:r,debugLogger:n,getDocsLoadResponse:i,extractLocaleFromPath:o}=e,s=new Map;function a(u){let l=JSON.stringify(u),p=[];for(let[d]of s)try{d.send(l)}catch{p.push(d)}for(let d of p){let f=s.get(d);f&&(clearInterval(f.pingInterval),s.delete(d))}}let c=t.serve({port:r,async fetch(u,l){if(u.method==="OPTIONS")return new Response(null,{status:204,headers:Lti});let p=new URL(u.url);if(u.headers.get("upgrade")?.toLowerCase()==="websocket"){l.upgrade(u,{data:{connectionId:`${Date.now()}`}});return}if(u.method==="POST"&&p.pathname==="/v2/registry/docs/load-with-url")try{let f=await u.json(),m=o?.(f?.url);return new Response(JSON.stringify(i(m)),{headers:{"Content-Type":"application/json",...Lti}})}catch{return new Response(JSON.stringify(i()),{headers:{"Content-Type":"application/json",...Lti}})}let d=/^\/_local\/(.*)/.exec(p.pathname);return u.method==="GET"&&d!=null?new Response(t.file(`/${d[1]}`),{headers:Lti}):new Response("Not Found",{status:404})},websocket:{open(u){let{connectionId:l}=u.data,p=setInterval(()=>{let d=s.get(u);if(!d)return;let f=Date.now();if(f-d.lastPong>9e4){u.close();return}try{u.send(JSON.stringify({type:"ping",timestamp:f}))}catch{u.close()}},3e4);s.set(u,{pingInterval:p,lastPong:Date.now()});try{u.send(JSON.stringify({type:"connected",connectionId:l}))}catch{}},message(u,l){try{let p=JSON.parse(l.toString());if(p.type==="pong"){let d=s.get(u);d&&(d.lastPong=Date.now())}else WUe.isMetricsMessage(p)&&n.logFrontendMetrics(p)}catch{}},close(u){let l=s.get(u);l&&(clearInterval(l.pingInterval),s.delete(u))}}});return{sendData:a,stop:u=>c.stop(u)}}function t3m(){return globalThis.Bun}_t();var yyu=require("events"),qti=we(require("fs"),1),KUe=we(require("path"),1);var eyu=we(require("os"),1),tyu=300,eDe=20,LGt=1e7,ryu=eyu.default.platform();var r3m=ryu==="darwin",$5o=ryu==="win32",tDe=r3m||$5o,nyu=3e3,iyu=2e4,e8o=1250;var Sie;(function(e){e[e.DIR=1]="DIR",e[e.FILE=2]="FILE"})(Sie||(Sie={}));var HUe;(function(e){e.CHANGE="change",e.RENAME="rename"})(HUe||(HUe={}));var zGt;(function(e){e.CHANGE="change",e.ERROR="error"})(zGt||(zGt={}));var Hc;(function(e){e.ADD="add",e.ADD_DIR="addDir",e.CHANGE="change",e.RENAME="rename",e.RENAME_DIR="renameDir",e.UNLINK="unlink",e.UNLINK_DIR="unlinkDir"})(Hc||(Hc={}));var NN;(function(e){e.ALL="all",e.CLOSE="close",e.ERROR="error",e.READY="ready"})(NN||(NN={}));var n3m=(e,t=1,r)=>{t=Math.max(1,t);let n=r?.leading??!1,i=r?.trailing??!0,o=Math.max(r?.maxWait??1/0,t),s,a,c=0,u=0,l=()=>{let C=Date.now(),x=C-c,T=C-u,O=x>=t||T>=o;return[C,O]},p=C=>{if(u=C,!s)return;let x=s;s=void 0,e.apply(void 0,x)},d=()=>{I(0)},f=()=>{a&&(d(),p(Date.now()))},m=C=>{if(u=C,n)return p(C)},h=C=>{if(i&&s)return p(C);s=void 0},A=()=>{a=void 0;let[C,x]=l();return x?h(C):y(C)},y=C=>{let x=C-c,T=C-u,O=t-x,R=o-T,P=Math.min(O,R);return I(P)},I=C=>{a&&clearTimeout(a),!(C<=0)&&(a=setTimeout(A,C))},w=(...C)=>{let[x,T]=l(),O=!!a;if(s=C,c=x,(T||!a)&&I(t),T)return O?p(x):m(x)};return w.cancel=d,w.flush=f,w},zti=n3m;var i8o=we(require("fs"),1),_ti=we(require("path"),1);var Kd=we(require("fs"),1),dP=require("util");var lme=(e,t)=>function(...n){return e.apply(void 0,n).catch(t)},Tie=(e,t)=>function(...n){try{return e.apply(void 0,n)}catch(i){return t(i)}};var t8o=we(require("process"),1),oyu=t8o.default.getuid?!t8o.default.getuid():!1,syu=1e4,P6=()=>{};var UGt={isChangeErrorOk:e=>{if(!UGt.isNodeError(e))return!1;let{code:t}=e;return t==="ENOSYS"||!oyu&&(t==="EINVAL"||t==="EPERM")},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!UGt.isNodeError(e))return!1;let{code:t}=e;return t==="EMFILE"||t==="ENFILE"||t==="EAGAIN"||t==="EBUSY"||t==="EACCESS"||t==="EACCES"||t==="EACCS"||t==="EPERM"},onChangeError:e=>{if(!UGt.isNodeError(e))throw e;if(!UGt.isChangeErrorOk(e))throw e}},FC=UGt;var r8o=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=syu,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()}}}}},ayu=new r8o;var pme=(e,t)=>function(n){return function i(...o){return ayu.schedule().then(s=>{let a=u=>(s(),u),c=u=>{if(s(),Date.now()>=n)throw u;if(t(u)){let l=Math.round(100*Math.random());return new Promise(d=>setTimeout(d,l)).then(()=>i.apply(void 0,o))}throw u};return e.apply(void 0,o).then(a,c)})}},fme=(e,t)=>function(n){return function i(...o){try{return e.apply(void 0,o)}catch(s){if(Date.now()>n)throw s;if(t(s))return i.apply(void 0,o);throw s}}};var i3m={attempt:{chmod:lme((0,dP.promisify)(Kd.default.chmod),FC.onChangeError),chown:lme((0,dP.promisify)(Kd.default.chown),FC.onChangeError),close:lme((0,dP.promisify)(Kd.default.close),P6),fsync:lme((0,dP.promisify)(Kd.default.fsync),P6),mkdir:lme((0,dP.promisify)(Kd.default.mkdir),P6),realpath:lme((0,dP.promisify)(Kd.default.realpath),P6),stat:lme((0,dP.promisify)(Kd.default.stat),P6),unlink:lme((0,dP.promisify)(Kd.default.unlink),P6),chmodSync:Tie(Kd.default.chmodSync,FC.onChangeError),chownSync:Tie(Kd.default.chownSync,FC.onChangeError),closeSync:Tie(Kd.default.closeSync,P6),existsSync:Tie(Kd.default.existsSync,P6),fsyncSync:Tie(Kd.default.fsync,P6),mkdirSync:Tie(Kd.default.mkdirSync,P6),realpathSync:Tie(Kd.default.realpathSync,P6),statSync:Tie(Kd.default.statSync,P6),unlinkSync:Tie(Kd.default.unlinkSync,P6)},retry:{close:pme((0,dP.promisify)(Kd.default.close),FC.isRetriableError),fsync:pme((0,dP.promisify)(Kd.default.fsync),FC.isRetriableError),open:pme((0,dP.promisify)(Kd.default.open),FC.isRetriableError),readFile:pme((0,dP.promisify)(Kd.default.readFile),FC.isRetriableError),rename:pme((0,dP.promisify)(Kd.default.rename),FC.isRetriableError),stat:pme((0,dP.promisify)(Kd.default.stat),FC.isRetriableError),write:pme((0,dP.promisify)(Kd.default.write),FC.isRetriableError),writeFile:pme((0,dP.promisify)(Kd.default.writeFile),FC.isRetriableError),closeSync:fme(Kd.default.closeSync,FC.isRetriableError),fsyncSync:fme(Kd.default.fsyncSync,FC.isRetriableError),openSync:fme(Kd.default.openSync,FC.isRetriableError),readFileSync:fme(Kd.default.readFileSync,FC.isRetriableError),renameSync:fme(Kd.default.renameSync,FC.isRetriableError),statSync:fme(Kd.default.statSync,FC.isRetriableError),writeSync:fme(Kd.default.writeSync,FC.isRetriableError),writeFileSync:fme(Kd.default.writeFileSync,FC.isRetriableError)}},cyu=i3m;var Uti=we(require("fs"),1),_Gt=we(require("path"),1);var n8o=()=>{};var o3m=()=>{let e=n8o,t=n8o,r=!1,n=!1;return{promise:new Promise((c,u)=>{e=l=>(r=!0,c(l)),t=l=>(n=!0,u(l))}),resolve:e,reject:t,isPending:()=>!r&&!n,isResolved:()=>r,isRejected:()=>n}},uyu=o3m;var s3m=()=>{let{promise:e,resolve:t,isPending:r}=uyu(),n=0,i=()=>{n+=1},o=()=>{n-=1,!n&&t()};return i(),queueMicrotask(o),{promise:e,isPending:r,increment:i,decrement:o}},lyu=s3m;var pyu={then:e=>{e()}};var fyu=e=>Array.isArray(e)?e:[e],dyu=e=>typeof e=="function";var a3m=(e,t)=>{let r=t?.followSymlinks??!1,n=t?.depth??1/0,i=t?.limit??1/0,o=t?.ignore??[],s=fyu(o).map(oe=>dyu(oe)?oe:ae=>oe.test(ae)),a=oe=>s.some(ae=>ae(oe)),c=t?.signal??{aborted:!1},u=t?.onDirents||(()=>{}),l=[],p=new Set,d={},f=[],m=new Set,h={},A=[],y=new Set,I={},w={},C=new Set,x={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{},map:{}},T={directories:l,directoriesNames:p,directoriesNamesToPaths:d,files:f,filesNames:m,filesNamesToPaths:h,symlinks:A,symlinksNames:y,symlinksNamesToPaths:I,map:w},{promise:O,increment:R,decrement:P}=lyu(),U=0,X=(oe,ae,Be,ve)=>{C.has(ae)||U>=i||(U+=1,oe.directories.push(ae),oe.directoriesNames.add(Be),l.push(ae),p.add(Be),d.propertyIsEnumerable(Be)||(d[Be]=[]),d[Be].push(ae),C.add(ae),!(ve>=n)&&(U>=i||fe(ae,ve+1)))},$=(oe,ae,Be)=>{C.has(ae)||U>=i||(U+=1,oe.files.push(ae),oe.filesNames.add(Be),f.push(ae),m.add(Be),h.propertyIsEnumerable(Be)||(h[Be]=[]),h[Be].push(ae),C.add(ae))},ne=(oe,ae,Be,ve)=>{C.has(ae)||U>=i||(U+=1,oe.symlinks.push(ae),oe.symlinksNames.add(Be),A.push(ae),y.add(Be),I.propertyIsEnumerable(Be)||(I[Be]=[]),I[Be].push(ae),C.add(ae),r&&(ve>=n||U>=i||Le(ae,ve+1)))},le=(oe,ae,Be,ve,Qe)=>{c.aborted||a(ae)||(ve.isDirectory()?X(oe,ae,Be,Qe):ve.isFile()?$(oe,ae,Be):ve.isSymbolicLink()&&ne(oe,ae,Be,Qe))},ge=(oe,ae,Be,ve)=>{if(c.aborted)return;let Qe=ae===_Gt.default.sep?"":_Gt.default.sep,qe=Be.name,ct=`${ae}${Qe}${qe}`;a(ct)||(Be.isDirectory()?X(oe,ct,qe,ve):Be.isFile()?$(oe,ct,qe):Be.isSymbolicLink()&&ne(oe,ct,qe,ve))},me=(oe,ae,Be,ve)=>{for(let Qe=0,qe=Be.length;Qe<qe;Qe++)ge(oe,ae,Be[Qe],ve)},fe=(oe,ae)=>{c.aborted||ae>n||U>=i||(R(),Uti.default.readdir(oe,{withFileTypes:!0},(Be,ve)=>{if(Be||c.aborted||!ve.length)return P();(u(ve)||pyu).then(()=>{let qe=w[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};me(qe,oe,ve,ae),P()})}))},Le=(oe,ae)=>{R(),Uti.default.realpath(oe,(Be,ve)=>{if(Be||c.aborted)return P();Uti.default.stat(ve,(Qe,qe)=>{if(Qe||c.aborted)return P();let ct=_Gt.default.basename(ve),At=w[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};le(At,ve,ct,qe,ae),P()})})};return(async(oe,ae=1)=>(oe=_Gt.default.normalize(oe),C.add(oe),fe(oe,ae),await O,c.aborted?x:T))(e)},myu=a3m;var Bie={lang:{debounce:zti,attempt:e=>{try{return e()}catch(t){return Bie.lang.castError(t)}},castArray:e=>Bie.lang.isArray(e)?e:[e],castError:e=>Bie.lang.isError(e)?e:Bie.lang.isString(e)?new Error(e):new Error("Unknown error"),defer:e=>setTimeout(e,0),isArray:e=>Array.isArray(e),isError:e=>e instanceof Error,isFunction:e=>typeof e=="function",isNaN:e=>Number.isNaN(e),isNumber:e=>typeof e=="number",isPrimitive:e=>{if(e===null)return!0;let t=typeof e;return t!=="object"&&t!=="function"},isShallowEqual:(e,t)=>{if(e===t)return!0;if(Bie.lang.isNaN(e))return Bie.lang.isNaN(t);if(Bie.lang.isPrimitive(e)||Bie.lang.isPrimitive(t))return e===t;for(let r in e)if(!(r in t))return!1;for(let r in t)if(e[r]!==t[r])return!1;return!0},isSet:e=>e instanceof Set,isString:e=>typeof e=="string",isUndefined:e=>e===void 0,noop:()=>{},uniq:e=>e.length<2?e:Array.from(new Set(e))},fs:{getDepth:e=>Math.max(0,e.split(_ti.default.sep).length-1),getRealPath:(e,t)=>{try{return t?i8o.default.realpathSync.native(e):i8o.default.realpathSync(e)}catch{return}},isSubPath:(e,t)=>t.startsWith(e)&&t[e.length]===_ti.default.sep&&t.length-e.length>_ti.default.sep.length,poll:(e,t=iyu)=>cyu.retry.stat(t)(e,{bigint:!0}).catch(Bie.lang.noop),readdir:async(e,t,r=1/0,n=1/0,i,o)=>{if(o&&r===1&&e in o){let s=o[e];return[s.directories,s.files]}else{let s=await myu(e,{depth:r,limit:n,ignore:t,signal:i});return[s.directories,s.files]}}}},Ep=Bie;var Vti=we(require("path"),1);var o8o=class{constructor(t,r,n){this.base=n,this.watcher=t,this.handler=r.handler,this.fswatcher=r.watcher,this.options=r.options,this.folderPath=r.folderPath,this.filePath=r.filePath,this.handlerBatched=this.base?this.base.onWatcherEvent.bind(this.base):this._makeHandlerBatched(this.options.debounce)}_isSubRoot(t){return this.filePath?t===this.filePath:t===this.folderPath||Ep.fs.isSubPath(this.folderPath,t)}_makeHandlerBatched(t=tyu){return(()=>{let r=this.watcher._readyWait,n=[],i=new Set,o=async(a,c)=>{let u=this.options.ignoreInitial?[]:a,l=await this.eventsPopulate([...c]),p=this.eventsDeduplicate([...u,...l]);this.onTargetEvents(p)},s=Ep.lang.debounce(()=>{this.watcher.isClosed()||(r=o(n,i),n=[],i=new Set)},t);return async(a,c="",u=!1)=>{u?await this.eventsPopulate([c],n,!0):i.add(c),r.then(s)}})()}eventsDeduplicate(t){if(t.length<2)return t;let r={};return t.reduce((n,i)=>{let[o,s]=i,a=r[s];return o===a||o===Hc.CHANGE&&a===Hc.ADD||(r[s]=o,n.push(i)),n},[])}async eventsPopulate(t,r=[],n=!1){return await Promise.all(t.map(async i=>{let o=await this.watcher._poller.update(i,this.options.pollingTimeout);await Promise.all(o.map(async s=>{r.push([s,i]),s===Hc.ADD_DIR?await this.eventsPopulateAddDir(t,i,r,n):s===Hc.UNLINK_DIR&&await this.eventsPopulateUnlinkDir(t,i,r,n)}))})),r}async eventsPopulateAddDir(t,r,n=[],i=!1){if(i)return n;let o=this.options.recursive?this.options.depth??eDe:Math.min(1,this.options.depth??eDe),s=this.options.limit??LGt,[a,c]=await Ep.fs.readdir(r,this.options.ignore,o,s,this.watcher._closeSignal),u=[...a,...c];return await Promise.all(u.map(l=>{if(!this.watcher.isIgnored(l,this.options.ignore)&&!t.includes(l))return this.eventsPopulate([l],n,!0)})),n}async eventsPopulateUnlinkDir(t,r,n=[],i=!1){if(i)return n;for(let o of this.watcher._poller.stats.keys())Ep.fs.isSubPath(r,o)&&(t.includes(o)||await this.eventsPopulate([o],n,!0));return n}onTargetAdd(t){this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAdd(t,this.options.renameTimeout):this.watcher.event(Hc.ADD,t))}onTargetAddDir(t){t!==this.folderPath&&this.options.recursive&&!tDe&&this.options.native!==!1&&this.watcher.watchDirectory(t,this.options,this.handler,void 0,this.base||this),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAddDir(t,this.options.renameTimeout):this.watcher.event(Hc.ADD_DIR,t))}onTargetChange(t){this._isSubRoot(t)&&this.watcher.event(Hc.CHANGE,t)}onTargetUnlink(t){this.watcher.watchersClose(Vti.default.dirname(t),t,!1),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlink(t,this.options.renameTimeout):this.watcher.event(Hc.UNLINK,t))}onTargetUnlinkDir(t){this.watcher.watchersClose(Vti.default.dirname(t),t,!1),this.watcher.watchersClose(t),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlinkDir(t,this.options.renameTimeout):this.watcher.event(Hc.UNLINK_DIR,t))}onTargetEvent(t){let[r,n]=t;r===Hc.ADD?this.onTargetAdd(n):r===Hc.ADD_DIR?this.onTargetAddDir(n):r===Hc.CHANGE?this.onTargetChange(n):r===Hc.UNLINK?this.onTargetUnlink(n):r===Hc.UNLINK_DIR&&this.onTargetUnlinkDir(n)}onTargetEvents(t){for(let r of t)this.onTargetEvent(r)}onWatcherEvent(t,r,n=!1){return this.handlerBatched(t,r,n)}onWatcherChange(t=HUe.CHANGE,r){if(this.watcher.isClosed())return;let n=Vti.default.resolve(this.folderPath,r||"");this.filePath&&n!==this.folderPath&&n!==this.filePath||this.watcher.isIgnored(n,this.options.ignore)||this.onWatcherEvent(t,n)}onWatcherError(t){$5o&&t.code==="EPERM"?this.onWatcherChange(HUe.CHANGE,""):this.watcher.error(t)}async init(){await this.initWatcherEvents(),await this.initInitialEvents()}async initWatcherEvents(){let t=this.onWatcherChange.bind(this);this.fswatcher.on(zGt.CHANGE,t);let r=this.onWatcherError.bind(this);this.fswatcher.on(zGt.ERROR,r)}async initInitialEvents(){let t=!this.watcher.isReady();if(this.filePath){if(this.watcher._poller.stats.has(this.filePath))return;await this.onWatcherEvent(HUe.CHANGE,this.filePath,t)}else{let r=this.options.recursive&&tDe&&this.options.native!==!1?this.options.depth??eDe:Math.min(1,this.options.depth??eDe),n=this.options.limit??LGt,[i,o]=await Ep.fs.readdir(this.folderPath,this.options.ignore,r,n,this.watcher._closeSignal,this.options.readdirMap),s=[this.folderPath,...i,...o];await Promise.all(s.map(a=>{if(!this.watcher._poller.stats.has(a)&&!this.watcher.isIgnored(a,this.options.ignore))return this.onWatcherEvent(HUe.CHANGE,a,t)}))}}},hyu=o8o;var jN={interval:100,intervalId:void 0,fns:new Map,init:()=>{jN.intervalId||(jN.intervalId=setInterval(jN.resolve,jN.interval))},reset:()=>{jN.intervalId&&(clearInterval(jN.intervalId),delete jN.intervalId)},add:(e,t)=>{jN.fns.set(e,Date.now()+t),jN.init()},remove:e=>{jN.fns.delete(e)},resolve:()=>{if(!jN.fns.size)return jN.reset();let e=Date.now();for(let[t,r]of jN.fns)r>=e||(jN.remove(t),t())}},VGt=jN;var qGt=class e{constructor(t){this._watcher=t,this.reset()}getLockAdd(t,r=e8o){let{ino:n,targetPath:i,events:o,locks:s}=t,a=()=>{let p=this._watcher._poller.paths.find(n||-1,d=>d!==i);if(p&&p!==i){if(Ep.fs.getRealPath(i,!0)===p)return;this._watcher.event(o.rename,p,i)}else this._watcher.event(o.add,i)};if(!n)return a();let c=()=>{s.add.delete(n),VGt.remove(u)},u=()=>{c(),a()};VGt.add(u,r);let l=()=>{let p=s.unlink.get(n);if(!p)return;c();let d=p();i===d?o.change&&this._watcher._poller.stats.has(i)&&this._watcher.event(o.change,i):this._watcher.event(o.rename,d,i)};s.add.set(n,l),l()}getLockUnlink(t,r=e8o){let{ino:n,targetPath:i,events:o,locks:s}=t,a=()=>{this._watcher.event(o.unlink,i)};if(!n)return a();let c=()=>{s.unlink.delete(n),VGt.remove(u)},u=()=>{c(),a()};VGt.add(u,r);let l=()=>(c(),i);s.unlink.set(n,l),s.add.get(n)?.()}getLockTargetAdd(t,r){let n=this._watcher._poller.getIno(t,Hc.ADD,Sie.FILE);return this.getLockAdd({ino:n,targetPath:t,events:e.FILE_EVENTS,locks:this._locksFile},r)}getLockTargetAddDir(t,r){let n=this._watcher._poller.getIno(t,Hc.ADD_DIR,Sie.DIR);return this.getLockAdd({ino:n,targetPath:t,events:e.DIR_EVENTS,locks:this._locksDir},r)}getLockTargetUnlink(t,r){let n=this._watcher._poller.getIno(t,Hc.UNLINK,Sie.FILE);return this.getLockUnlink({ino:n,targetPath:t,events:e.FILE_EVENTS,locks:this._locksFile},r)}getLockTargetUnlinkDir(t,r){let n=this._watcher._poller.getIno(t,Hc.UNLINK_DIR,Sie.DIR);return this.getLockUnlink({ino:n,targetPath:t,events:e.DIR_EVENTS,locks:this._locksDir},r)}reset(){this._locksAdd=new Map,this._locksAddDir=new Map,this._locksUnlink=new Map,this._locksUnlinkDir=new Map,this._locksDir={add:this._locksAddDir,unlink:this._locksUnlinkDir},this._locksFile={add:this._locksAdd,unlink:this._locksUnlink}}};qGt.DIR_EVENTS={add:Hc.ADD_DIR,rename:Hc.RENAME_DIR,unlink:Hc.UNLINK_DIR};qGt.FILE_EVENTS={add:Hc.ADD,change:Hc.CHANGE,rename:Hc.RENAME,unlink:Hc.UNLINK};var gyu=qGt;var s8o=class{constructor(){this.map=new Map}clear(){this.map.clear()}delete(t,r){if(Ep.lang.isUndefined(r))return this.map.delete(t);if(this.map.has(t)){let n=this.map.get(t);if(Ep.lang.isSet(n)){let i=n.delete(r);return n.size||this.map.delete(t),i}else if(n===r)return this.map.delete(t),!0}return!1}find(t,r){if(this.map.has(t)){let n=this.map.get(t);if(Ep.lang.isSet(n))return Array.from(n).find(r);if(r(n))return n}}get(t){return this.map.get(t)}has(t,r){if(Ep.lang.isUndefined(r))return this.map.has(t);if(this.map.has(t)){let n=this.map.get(t);return Ep.lang.isSet(n)?n.has(r):n===r}return!1}set(t,r){if(this.map.has(t)){let n=this.map.get(t);Ep.lang.isSet(n)?n.add(r):n!==r&&this.map.set(t,new Set([n,r]))}else this.map.set(t,r);return this}},a8o=s8o;var c8o=class{constructor(t){this.ino=t.ino<=Number.MAX_SAFE_INTEGER?Number(t.ino):t.ino,this.size=Number(t.size),this.atimeMs=Number(t.atimeMs),this.mtimeMs=Number(t.mtimeMs),this.ctimeMs=Number(t.ctimeMs),this.birthtimeMs=Number(t.birthtimeMs),this._isFile=t.isFile(),this._isDirectory=t.isDirectory(),this._isSymbolicLink=t.isSymbolicLink()}isFile(){return this._isFile}isDirectory(){return this._isDirectory}isSymbolicLink(){return this._isSymbolicLink}},Ayu=c8o;var u8o=class{constructor(){this.inos={},this.paths=new a8o,this.stats=new Map}getIno(t,r,n){let i=this.inos[r];if(!i)return;let o=i[t];if(o&&!(n&&o[1]!==n))return o[0]}getStats(t){return this.stats.get(t)}async poll(t,r){let n=await Ep.fs.poll(t,r);if(!(!n||!(n.isFile()||n.isDirectory())))return new Ayu(n)}reset(){this.inos={},this.paths=new a8o,this.stats=new Map}async update(t,r){let n=this.getStats(t),i=await this.poll(t,r);if(this.updateStats(t,i),!n&&i){if(i.isFile())return this.updateIno(t,Hc.ADD,i),[Hc.ADD];if(i.isDirectory())return this.updateIno(t,Hc.ADD_DIR,i),[Hc.ADD_DIR]}else if(n&&!i){if(n.isFile())return this.updateIno(t,Hc.UNLINK,n),[Hc.UNLINK];if(n.isDirectory())return this.updateIno(t,Hc.UNLINK_DIR,n),[Hc.UNLINK_DIR]}else if(n&&i){if(n.isFile()){if(i.isFile())return n.ino===i.ino&&!n.size&&!i.size?[]:(this.updateIno(t,Hc.CHANGE,i),[Hc.CHANGE]);if(i.isDirectory())return this.updateIno(t,Hc.UNLINK,n),this.updateIno(t,Hc.ADD_DIR,i),[Hc.UNLINK,Hc.ADD_DIR]}else if(n.isDirectory()){if(i.isFile())return this.updateIno(t,Hc.UNLINK_DIR,n),this.updateIno(t,Hc.ADD,i),[Hc.UNLINK_DIR,Hc.ADD];if(i.isDirectory())return n.ino===i.ino?[]:(this.updateIno(t,Hc.UNLINK_DIR,n),this.updateIno(t,Hc.ADD_DIR,i),[Hc.UNLINK_DIR,Hc.ADD_DIR])}}return[]}updateIno(t,r,n){let i=this.inos[r]=this.inos[r]||(this.inos[r]={}),o=n.isFile()?Sie.FILE:Sie.DIR;i[t]=[n.ino,o]}updateStats(t,r){if(r)this.paths.set(r.ino,t),this.stats.set(t,r);else{let n=this.stats.get(t)?.ino||-1;this.paths.delete(n,t),this.stats.delete(t)}}},l8o=u8o;var p8o=class e extends yyu.EventEmitter{constructor(t,r,n){super(),this._closed=!1,this._ready=!1,this._closeAborter=new AbortController,this._closeSignal=this._closeAborter.signal,this.on(NN.CLOSE,()=>this._closeAborter.abort()),this._closeWait=new Promise(i=>this.on(NN.CLOSE,i)),this._readyWait=new Promise(i=>this.on(NN.READY,i)),this._locker=new gyu(this),this._roots=new Set,this._poller=new l8o,this._pollers=new Set,this._subwatchers=new Set,this._watchers={},this._watchersLock=Promise.resolve(),this._watchersRestorable={},this.watch(t,r,n)}isClosed(){return this._closed}isIgnored(t,r){return!!r&&(Ep.lang.isFunction(r)?!!r(t):r.test(t))}isReady(){return this._ready}close(){return this._locker.reset(),this._poller.reset(),this._roots.clear(),this.watchersClose(),this.isClosed()?!1:(this._closed=!0,this.emit(NN.CLOSE))}error(t){if(this.isClosed())return!1;let r=Ep.lang.castError(t);return this.emit(NN.ERROR,r)}event(t,r,n){return this.isClosed()?!1:(this.emit(NN.ALL,t,r,n),this.emit(t,r,n))}ready(){return this.isClosed()||this.isReady()?!1:(this._ready=!0,this.emit(NN.READY))}pollerExists(t,r){for(let n of this._pollers)if(n.targetPath===t&&Ep.lang.isShallowEqual(n.options,r))return!0;return!1}subwatcherExists(t,r){for(let n of this._subwatchers)if(n.targetPath===t&&Ep.lang.isShallowEqual(n.options,r))return!0;return!1}watchersClose(t,r,n=!0){if(t){let i=this._watchers[t];if(i)for(let o of[...i])r&&o.filePath!==r||this.watcherClose(o);if(n)for(let o in this._watchers)Ep.fs.isSubPath(t,o)&&this.watchersClose(o,r,!1)}else for(let i in this._watchers)this.watchersClose(i,r,!1)}watchersLock(t){return this._watchersLock.then(()=>this._watchersLock=new Promise(async r=>{await t(),r()}))}watchersRestore(){delete this._watchersRestoreTimeout;let t=Object.entries(this._watchersRestorable);this._watchersRestorable={};for(let[r,n]of t)this.watchPath(r,n.options,n.handler)}async watcherAdd(t,r){let{folderPath:n}=t;(this._watchers[n]=this._watchers[n]||[]).push(t);let o=new hyu(this,t,r);return await o.init(),o}watcherClose(t){t.watcher.close();let r=this._watchers[t.folderPath];if(r){let o=r.indexOf(t);r.splice(o,1),r.length||delete this._watchers[t.folderPath]}let n=t.filePath||t.folderPath;this._roots.has(n)&&(this._watchersRestorable[n]=t,this._watchersRestoreTimeout||(this._watchersRestoreTimeout=Ep.lang.defer(()=>this.watchersRestore())))}watcherExists(t,r,n,i){if(this._watchers[t]?.find(a=>a.handler===n&&(!a.filePath||a.filePath===i)&&a.options.ignore===r.ignore&&!!a.options.native==!!r.native&&(!r.recursive||a.options.recursive)))return!0;let s=KUe.default.dirname(t);for(let a=1;a<1/0;a++){if(this._watchers[s]?.find(l=>(a===1||l.options.recursive&&a<=(l.options.depth??eDe))&&l.handler===n&&(!l.filePath||l.filePath===i)&&l.options.ignore===r.ignore&&!!l.options.native==!!r.native&&(!r.recursive||l.options.recursive&&tDe&&l.options.native!==!1)))return!0;if(!tDe)break;let u=KUe.default.dirname(t);if(s===u)break;s=u}return!1}async watchDirectories(t,r,n,i,o){if(this.isClosed())return;t=Ep.lang.uniq(t).sort();let s;for(let a of t)if(!this.isIgnored(a,r.ignore)&&!this.watcherExists(a,r,n,i))try{let c=!r.recursive||tDe&&r.native!==!1?r:{...r,recursive:!1},l={watcher:qti.default.watch(a,c),handler:n,options:r,folderPath:a,filePath:i},p=s=await this.watcherAdd(l,o);if(this._roots.has(i||a)){let f={...r,ignoreInitial:!0,recursive:!1},m=KUe.default.dirname(a),h=a;await this.watchDirectories([m],f,n,h,p)}}catch(c){this.error(c)}return s}async watchDirectory(t,r,n,i,o){if(!this.isClosed()&&!this.isIgnored(t,r.ignore)){if(!r.recursive||tDe&&r.native!==!1)return this.watchersLock(()=>this.watchDirectories([t],r,n,i,o));{r={...r,recursive:!0};let s=r.depth??eDe,a=r.limit??LGt,[c]=await Ep.fs.readdir(t,r.ignore,s,a,this._closeSignal,r.readdirMap);return this.watchersLock(async()=>{let u=await this.watchDirectories([t],r,n,i,o);if(c.length){let l=Ep.fs.getDepth(t);for(let p of c){let d=Ep.fs.getDepth(p),f=Math.max(0,s-(d-l)),m={...r,depth:f};await this.watchDirectories([p],m,n,i,o||u)}}})}}}async watchFileOnce(t,r,n){if(this.isClosed()||(r={...r,ignoreInitial:!1},this.subwatcherExists(t,r)))return;let i={targetPath:t,options:r},o=(u,l)=>{l===t&&(c(),n())},s=new e(o),a=()=>{this._subwatchers.add(i),this.on(NN.CLOSE,c),s.watchFile(t,r,o)},c=()=>{this._subwatchers.delete(i),this.removeListener(NN.CLOSE,c),s.close()};return a()}async watchFile(t,r,n){if(this.isClosed()||this.isIgnored(t,r.ignore))return;r={...r,recursive:!1};let i=KUe.default.dirname(t);return this.watchDirectory(i,r,n,t)}async watchPollingOnce(t,r,n){if(this.isClosed())return;let i=!1,o=new l8o,s=await this.watchPolling(t,r,async()=>{i||!(await o.update(t,r.pollingTimeout)).length||i||(i=!0,s(),n())})}async watchPolling(t,r,n){if(this.isClosed())return Ep.lang.noop;if(this.pollerExists(t,r))return Ep.lang.noop;let i={...r,interval:r.pollingInterval??nyu},o={targetPath:t,options:r},s=()=>{this._pollers.add(o),this.on(NN.CLOSE,a),qti.default.watchFile(t,i,n)},a=()=>{this._pollers.delete(o),this.removeListener(NN.CLOSE,a),qti.default.unwatchFile(t,n)};return Ep.lang.attempt(s),()=>Ep.lang.attempt(a)}async watchUnknownChild(t,r,n){if(this.isClosed())return;let i=()=>this.watchPath(t,r,n);return this.watchFileOnce(t,r,i)}async watchUnknownTarget(t,r,n){if(this.isClosed())return;let i=()=>this.watchPath(t,r,n);return this.watchPollingOnce(t,r,i)}async watchPaths(t,r,n){if(this.isClosed())return;if(t=Ep.lang.uniq(t).sort(),t.every((o,s)=>t.every((a,c)=>c===s||!Ep.fs.isSubPath(o,a))))await Promise.all(t.map(o=>this.watchPath(o,r,n)));else for(let o of t)await this.watchPath(o,r,n)}async watchPath(t,r,n){if(this.isClosed()||(t=KUe.default.resolve(t),this.isIgnored(t,r.ignore)))return;let i=await Ep.fs.poll(t,r.pollingTimeout);if(i){if(i.isFile())return this.watchFile(t,r,n);if(i.isDirectory())return this.watchDirectory(t,r,n);this.error(`"${t}" is not supported`)}else{let o=KUe.default.dirname(t);return(await Ep.fs.poll(o,r.pollingTimeout))?.isDirectory()?this.watchUnknownChild(t,r,n):this.watchUnknownTarget(t,r,n)}}async watch(t,r,n=Ep.lang.noop){if(Ep.lang.isFunction(t))return this.watch([],{},t);if(Ep.lang.isUndefined(t))return this.watch([],r,n);if(Ep.lang.isFunction(r))return this.watch(t,{},r);if(Ep.lang.isUndefined(r))return this.watch(t,{},n);if(this.isClosed())return;this.isReady()&&(r.readdirMap=void 0);let i=Ep.lang.castArray(t);i.forEach(o=>this._roots.add(o)),await this.watchPaths(i,r,n),!this.isClosed()&&(n!==Ep.lang.noop&&this.on(NN.ALL,n),r.readdirMap=void 0,this.ready())}},byu=p8o;function c3m(e){return"code"in e&&typeof e.code=="string"}function Eyu(e){return e instanceof Error?e:new Error(String(e))}function vyu(e){return c3m(e)&&e.code==="ENOSPC"?"Unable to watch Fern docs files for changes because the system limit for file watchers was reached. Close other file-watching processes or increase the file watcher limit, then restart `fern docs dev`.":`Unable to watch Fern docs files for changes: ${e.message}`}async function Gti({absoluteFilePathToFern:e,additionalFilepaths:t,context:r}){let n=new byu([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(Eyu(c))};n.once("ready",s),n.once("error",a)});return i!=null&&(n.close(),r.failAndThrow(vyu(i),i,{code:D.Code.EnvironmentError})),n.on("error",o=>{let s=Eyu(o);r.failWithoutThrowing(vyu(s),s,{code:D.Code.EnvironmentError}),n.close()}),n}tr();aS();_t();var CCu=require("child_process"),ini=we(E8o(),1),wCu=we(F7o(),1),Iv=require("fs"),LN=require("fs/promises"),xCu=require("os"),MN=we(require("path"),1),SCu=we(fw(),1),TCu=we(ICu(),1),n_e=process.platform==="win32",nni=Ae.cyan("[docs]:"),M_m="etag",L_m=23,q7o=e=>e.padEnd(L_m," "),z_m="preview",U_m="app-preview",__m="bundle",V_m=".next",q_m="standalone",G_m=".fern",W_m="packages/fern-docs/bundle/.next/server/instrumentation.js",H_m='Cannot find matching keyid: {"signatures":',K_m="ERR_PNPM_IGNORED_BUILDS";function J_m(e){try{let r=(0,CCu.execSync)('reg query "HKLM\\SYSTEM\\CurrentControlSet\\Control\\FileSystem" /v LongPathsEnabled',{encoding:"utf-8",timeout:5e3}).match(/LongPathsEnabled\s+REG_DWORD\s+0x(\d+)/i);if(r!=null&&r[1]==="1")return}catch(t){e.debug(`Registry query for LongPathsEnabled failed: ${t}`)}throw new D({message:`Windows long path support is not enabled. The docs bundle contains deeply nested .pnpm paths that exceed the 260-character MAX_PATH limit.
|
|
3819
3819
|
|
|
@@ -4379,7 +4379,7 @@ Please ensure you have membership at https://dashboard.buildwithfern.com, and as
|
|
|
4379
4379
|
|
|
4380
4380
|
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`:r}function BAh(e,t,r){return t!=null&&t.includes("Invalid authorization token")?`Your authentication token is invalid or expired. Please run '${r}' to re-authenticate.`:`You are not authorized to publish docs under organization '${e}'. Please run '${r}' to ensure you are logged in with the correct account.
|
|
4381
4381
|
|
|
4382
|
-
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function OAh(e){if(e==null)return{code:void 0,message:void 0};let t=e.body;if(t!=null&&typeof t=="object"){let n=typeof t.code=="string"?t.code:void 0,i=typeof t.message=="string"?t.message:void 0;return{code:n,message:i}}return{code:void 0,message:typeof t=="string"&&t.length>0?t:typeof e.errorMessage=="string"?e.errorMessage:typeof e.message=="string"?e.message:void 0}}function PAh(e){try{return new URL(TN(e)).pathname}catch{return}}async function DAh({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await RAh({fdr:e,workspace:t,snippetsConfig:i,context:n});if(Object.keys(o).length===0){n.logger.debug("[SDK Dynamic IR] No snippet configs found, skipping S3 check");return}try{let s=Object.fromEntries(Object.entries(o).map(([l,p])=>[l,{packageName:p.packageName,version:p.version}])),c=(await e.api.register.checkSdkDynamicIrExists({orgId:mn.OrgId(r),snippetConfiguration:s})).existingDynamicIrs??{};if(Object.keys(c).length===0){n.logger.debug("[SDK Dynamic IR] No existing SDK dynamic IRs found in S3");return}let u={};for(let[l,p]of Object.entries(c??{}))try{n.logger.debug(`Downloading existing SDK dynamic IR for ${l}...`);let d=await fetch(p.downloadUrl);if(d.ok){let f=await d.json();u[l]={dynamicIR:f},n.logger.debug(`Successfully downloaded SDK dynamic IR for ${l}`)}else n.logger.warn(`Failed to download SDK dynamic IR for ${l}: ${d.status}`)}catch(d){n.logger.warn(`Error downloading SDK dynamic IR for ${l}: ${d}`)}return Object.keys(u).length>0?u:void 0}catch(s){n.logger.debug(`Error checking for existing SDK dynamic IRs: ${s}`);return}}function Xes(e){return e.replace(/^https:\/\//,"")}async function RAh({fdr:e,workspace:t,snippetsConfig:r,context:n}){let i={},o=[{language:"typescript",snippetName:r.typescriptSdk?.package??void 0,explicitVersion:r.typescriptSdk?.version??void 0},{language:"python",snippetName:r.pythonSdk?.package??void 0,explicitVersion:r.pythonSdk?.version??void 0},{language:"java",snippetName:r.javaSdk?.coordinate??void 0,explicitVersion:r.javaSdk?.version??void 0},{language:"go",snippetName:r.goSdk?.githubRepo&&Xes(r.goSdk?.githubRepo),explicitVersion:r.goSdk?.version??void 0},{language:"csharp",snippetName:r.csharpSdk?.package??void 0,explicitVersion:r.csharpSdk?.version??void 0},{language:"ruby",snippetName:r.rubySdk?.gem??void 0,explicitVersion:r.rubySdk?.version??void 0},{language:"php",snippetName:r.phpSdk?.package??void 0,explicitVersion:r.phpSdk?.version??void 0},{language:"swift",snippetName:r.swiftSdk?.package??void 0,explicitVersion:r.swiftSdk?.version??void 0},{language:"rust",snippetName:r.rustSdk?.package??void 0,explicitVersion:r.rustSdk?.version??void 0}];for(let s of o){if(!s.snippetName)continue;let a=s.explicitVersion??void 0;a||(a=(await FAh({fdr:e,workspace:t,language:s.language,snippetName:s.snippetName,context:n}))?.version),i[s.language]={packageName:s.snippetName,version:a},a||n.logger.debug(`[SDK Dynamic IR] ${s.language}: no version specified, will use latest`)}return i}async function FAh({fdr:e,workspace:t,language:r,snippetName:n,context:i}){let o;switch(r){case"csharp":o="Csharp";break;case"go":o="Go";break;case"java":o="Java";break;case"python":o="Python";break;case"ruby":o="Ruby";break;case"typescript":o="TypeScript";break;case"php":o="Php";break;case"swift":o="Swift";break;default:return}let s,a,c;if(t.generatorsConfiguration?.groups){let u=[];for(let l of t.generatorsConfiguration.groups)for(let p of l.generators)if(p.language===r){let d=Un.getPackageName({generatorInvocation:p});d&&u.push(d),!a&&d&&(a=d,c=p.name,p.outputMode.type==="githubV2"&&(s=`${p.outputMode.githubV2.owner}/${p.outputMode.githubV2.repo}`))}}if(!a){i.logger.debug(`[SDK Dynamic IR] ${r}: no generator found with a package name`);return}try{let u=await e.sdks.computeSemanticVersion({githubRepository:s,language:o,package:a});return i.logger.debug(`[SDK Dynamic IR] ${r}: computed version ${u.version} for package "${a}"`),{version:u.version,generatorPackage:a}}catch(u){i.logger.debug(`[SDK Dynamic IR] ${r}: error computing version: ${u}`);return}}async function kAh({workspace:e,organization:t,context:r,snippetsConfig:n,skipLanguages:i=new Set}){let o={};if(!e)return;let s={typescript:n.typescriptSdk?.package,python:n.pythonSdk?.package,java:n.javaSdk?.coordinate,go:n.goSdk?.githubRepo&&Xes(n.goSdk?.githubRepo),csharp:n.csharpSdk?.package,ruby:n.rubySdk?.gem,php:n.phpSdk?.package,swift:n.swiftSdk?.package,rust:n.rustSdk?.package};if(e.generatorsConfiguration?.groups)for(let a of e.generatorsConfiguration.groups)for(let c of a.generators){let u=dVe({apiName:e.workspaceName??"",organization:t,generatorInvocation:c}),l="";if(u?.outputConfig.type==="publish")switch(u.outputConfig.value.type){case"npm":case"nuget":case"pypi":case"rubygems":l=u.outputConfig.value.packageName;break;case"maven":l=u.outputConfig.value.coordinate;break;case"go":l=u.outputConfig.value.repoUrl;break;case"swift":l=u.outputConfig.value.repoUrl;break;case"crates":l=u.outputConfig.value.packageName;break}if(c.language==="php"&&c.config&&typeof c.config=="object"&&"packageName"in c.config&&(l=c.config.packageName??""),c.language==="go"&&l&&(l=Xes(l)),!!c.language){if(i.has(c.language)){r.logger.debug(`Skipping dynamic IR generation for ${c.language} (using existing SDK dynamic IR)`);continue}if(c.language&&s[c.language]===l){let p=iA({workspace:e,generationLanguage:c.language,keywords:void 0,smartCasing:c.smartCasing,exampleGeneration:{disabled:!0,skipAutogenerationIfManualExamplesExist:!0,skipErrorAutogenerationIfManualErrorExamplesExist:!0},audiences:{type:"all"},readme:void 0,packageName:l,version:void 0,context:r,sourceResolver:new Yh(r,e),dynamicGeneratorConfig:u}),d=vLe({ir:p,disableExamples:!0,smartCasing:c.smartCasing,generationLanguage:c.language,generatorConfig:u});d?o[c.language]={dynamicIR:d}:r.logger.debug(`Failed to create dynamic IR for ${c.language}`)}}}for(let[a,c]of Object.entries(s))a&&c&&!Object.keys(o).includes(a)&&!i.has(a)&&(r.logger.warn(),r.logger.warn(`Failed to upload ${a} SDK snippets because of unknown package \`${c}\`.`),r.logger.warn(`Please make sure your ${e.workspaceName?`${e.workspaceName}/`:""}generators.yml has a generator that publishes a ${c} package.`),r.logger.warn());if(Object.keys(o).length>0)return o}async function NAh({dynamicIRs:e,dynamicIRUploadUrls:t,context:r,apiId:n}){if(Object.keys(t).length>0)for(let[i,o]of Object.entries(t)){let s=e[i]?.dynamicIR;if(s){let a=JSON.stringify(s);try{(await fetch(o.uploadUrl,{method:"PUT",body:a,headers:{"Content-Type":"application/octet-stream","Content-Length":Buffer.byteLength(a,"utf8").toString()}})).ok?r.logger.debug(`Uploaded dynamic IR for ${n}:${i}`):r.logger.warn(`Failed to upload dynamic IR for ${n}:${i}`)}catch(c){r.logger.warn(`Network error uploading dynamic IR for ${n}:${i}: ${c}`)}}else r.logger.warn(`Could not find matching dynamic IR to upload for ${n}:${i}`)}}async function jAh({docsDefinition:e,isPreview:t,context:r}){e.config.aiChatConfig==null||t||r.logger.warn(Ae.yellow("Enabling Ask Fern from docs.yml is deprecated. Please enable it from the Fern dashboard instead."))}function QAh(e,t){if(e)return{enabled:!0,model:process.env.FERN_AI_MODEL||"gpt-4o-mini",maxRetries:parseInt(process.env.FERN_AI_MAX_RETRIES||"3"),requestTimeoutMs:parseInt(process.env.FERN_AI_TIMEOUT_MS||"25000"),styleInstructions:t}}function cUu(e){let t=e,r=t?.content;return{errorType:t?.error,statusCode:t?.statusCode??r?.statusCode,reason:r?.reason,errorMessage:r?.errorMessage??r?.message,body:r?.body,cause:r?.cause,rawError:e}}var ZHt=[60*1e3,300*1e3,300*1e3];async function $Ht({organization:e,apiWorkspaces:t,ossWorkspaces:r,docsWorkspace:n,context:i,token:o,instanceUrl:s,preview:a,previewId:c,disableTemplates:u,skipUpload:l,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m}){let h=a&&!n.config.settings?.substituteEnvVars;n.config=Dy(n.config,{onError:x=>i.failAndThrow(void 0,x,{code:D.Code.EnvironmentError})},{substituteAsEmpty:h});let A=n.config.instances;if(A.length===0){i.failAndThrow("No instances specified in docs.yml! Cannot register docs.",void 0,{code:D.Code.ConfigError});return}if(A.length>1&&s==null){i.failAndThrow(`More than one docs instances. Please specify one (e.g. --instance ${A[0]?.url})`,void 0,{code:D.Code.ConfigError});return}let y=A.find(x=>x.url===s)??A[0];if(y==null){i.failAndThrow(`No docs instance with url ${s}. Failed to register.`,void 0,{code:D.Code.ConfigError});return}let I=(typeof y.customDomain=="string"?[y.customDomain]:y.customDomain??[]).map(c4u);(y.multiSource===!0||n.config.experimental?.basepathAware===!0)&&u4u(y.url,I,i),i.logger.info(`Starting docs publishing for ${a?"preview":"production"}: ${y.url}`),i.logger.debug(`Organization: ${e}, Preview: ${a}, APIs: ${t.length}, OSS: ${r.length}`);let C;return await i.runInteractiveTask({name:y.url},async()=>{let x=performance.now(),T=()=>oUu({docsWorkspace:n,customDomains:I,domain:y.url,token:o,organization:e,context:i,apiWorkspaces:t,ossWorkspaces:r,preview:a,previewId:c,editThisPage:y.editThisPage,disableTemplates:u,skipUpload:l,withAiExamples:n.config.aiExamples?.enabled??n.config.experimental?.aiExamples??!0,excludeApis:n.config.experimental?.excludeApis??!1,targetAudiences:y.audiences?Array.isArray(y.audiences)?y.audiences:[y.audiences]:void 0,docsUrl:y.url,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m,multiSource:y.multiSource??!1});for(let R=0;;R++)try{C=await T();break}catch(P){if(!(P instanceof owt)||R>=ZHt.length){if(P instanceof owt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:D.Code.NetworkError});throw P}let U=ZHt[R]??ZHt[ZHt.length-1]??6e4,X=U/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${X} minute${X===1?"":"s"} (attempt ${R+1}/${ZHt.length})...`),await new Promise($=>setTimeout($,U))}let O=performance.now()-x;i.logger.debug(`Docs publishing completed in ${O.toFixed(0)}ms`)}),C}_t();var Cpi=class{context;task;project;docsWorkspace;ossWorkspaces;token;constructor({context:t,task:r,project:n,docsWorkspace:i,ossWorkspaces:o,token:s}){this.context=t,this.task=r,this.project=n,this.docsWorkspace=i,this.ossWorkspaces=o,this.token=s}async publish({instanceUrl:t,preview:r,previewId:n,skipUpload:i}){let o=new Cd({context:this.context,task:this.task});try{let s=await $Ht({organization:this.project.config.organization,apiWorkspaces:this.project.apiWorkspaces,ossWorkspaces:this.ossWorkspaces,docsWorkspace:this.docsWorkspace,context:o,token:this.token,instanceUrl:t,preview:r,previewId:n,disableTemplates:void 0,skipUpload:i,cliVersion:"5.44.9",loginCommand:"fern auth login"});return o.getResult()===Uf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:qn(s)}}}};jt();var swt=class e{static MAX_DISPLAYED_LOGS_TTY=10;static URL_PATTERN=/https?:\/\/[^\s]+/;context;stream;tasks={};taskOrder=[];startTime;isRegistered=!1;constructor(t){this.context=t.context,this.stream=t.stream??process.stderr}addTask(t){let r={...t,status:t.status??"pending"};return this.tasks[t.id]=r,this.taskOrder.push(t.id),this}async start(t){return this.startTime=Date.now(),t!=null&&await this.context.ttyAwareLogger.takeOverTerminal(()=>{this.stream.write(`
|
|
4382
|
+
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function OAh(e){if(e==null)return{code:void 0,message:void 0};let t=e.body;if(t!=null&&typeof t=="object"){let n=typeof t.code=="string"?t.code:void 0,i=typeof t.message=="string"?t.message:void 0;return{code:n,message:i}}return{code:void 0,message:typeof t=="string"&&t.length>0?t:typeof e.errorMessage=="string"?e.errorMessage:typeof e.message=="string"?e.message:void 0}}function PAh(e){try{return new URL(TN(e)).pathname}catch{return}}async function DAh({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await RAh({fdr:e,workspace:t,snippetsConfig:i,context:n});if(Object.keys(o).length===0){n.logger.debug("[SDK Dynamic IR] No snippet configs found, skipping S3 check");return}try{let s=Object.fromEntries(Object.entries(o).map(([l,p])=>[l,{packageName:p.packageName,version:p.version}])),c=(await e.api.register.checkSdkDynamicIrExists({orgId:mn.OrgId(r),snippetConfiguration:s})).existingDynamicIrs??{};if(Object.keys(c).length===0){n.logger.debug("[SDK Dynamic IR] No existing SDK dynamic IRs found in S3");return}let u={};for(let[l,p]of Object.entries(c??{}))try{n.logger.debug(`Downloading existing SDK dynamic IR for ${l}...`);let d=await fetch(p.downloadUrl);if(d.ok){let f=await d.json();u[l]={dynamicIR:f},n.logger.debug(`Successfully downloaded SDK dynamic IR for ${l}`)}else n.logger.warn(`Failed to download SDK dynamic IR for ${l}: ${d.status}`)}catch(d){n.logger.warn(`Error downloading SDK dynamic IR for ${l}: ${d}`)}return Object.keys(u).length>0?u:void 0}catch(s){n.logger.debug(`Error checking for existing SDK dynamic IRs: ${s}`);return}}function Xes(e){return e.replace(/^https:\/\//,"")}async function RAh({fdr:e,workspace:t,snippetsConfig:r,context:n}){let i={},o=[{language:"typescript",snippetName:r.typescriptSdk?.package??void 0,explicitVersion:r.typescriptSdk?.version??void 0},{language:"python",snippetName:r.pythonSdk?.package??void 0,explicitVersion:r.pythonSdk?.version??void 0},{language:"java",snippetName:r.javaSdk?.coordinate??void 0,explicitVersion:r.javaSdk?.version??void 0},{language:"go",snippetName:r.goSdk?.githubRepo&&Xes(r.goSdk?.githubRepo),explicitVersion:r.goSdk?.version??void 0},{language:"csharp",snippetName:r.csharpSdk?.package??void 0,explicitVersion:r.csharpSdk?.version??void 0},{language:"ruby",snippetName:r.rubySdk?.gem??void 0,explicitVersion:r.rubySdk?.version??void 0},{language:"php",snippetName:r.phpSdk?.package??void 0,explicitVersion:r.phpSdk?.version??void 0},{language:"swift",snippetName:r.swiftSdk?.package??void 0,explicitVersion:r.swiftSdk?.version??void 0},{language:"rust",snippetName:r.rustSdk?.package??void 0,explicitVersion:r.rustSdk?.version??void 0}];for(let s of o){if(!s.snippetName)continue;let a=s.explicitVersion??void 0;a||(a=(await FAh({fdr:e,workspace:t,language:s.language,snippetName:s.snippetName,context:n}))?.version),i[s.language]={packageName:s.snippetName,version:a},a||n.logger.debug(`[SDK Dynamic IR] ${s.language}: no version specified, will use latest`)}return i}async function FAh({fdr:e,workspace:t,language:r,snippetName:n,context:i}){let o;switch(r){case"csharp":o="Csharp";break;case"go":o="Go";break;case"java":o="Java";break;case"python":o="Python";break;case"ruby":o="Ruby";break;case"typescript":o="TypeScript";break;case"php":o="Php";break;case"swift":o="Swift";break;default:return}let s,a,c;if(t.generatorsConfiguration?.groups){let u=[];for(let l of t.generatorsConfiguration.groups)for(let p of l.generators)if(p.language===r){let d=Un.getPackageName({generatorInvocation:p});d&&u.push(d),!a&&d&&(a=d,c=p.name,p.outputMode.type==="githubV2"&&(s=`${p.outputMode.githubV2.owner}/${p.outputMode.githubV2.repo}`))}}if(!a){i.logger.debug(`[SDK Dynamic IR] ${r}: no generator found with a package name`);return}try{let u=await e.sdks.computeSemanticVersion({githubRepository:s,language:o,package:a});return i.logger.debug(`[SDK Dynamic IR] ${r}: computed version ${u.version} for package "${a}"`),{version:u.version,generatorPackage:a}}catch(u){i.logger.debug(`[SDK Dynamic IR] ${r}: error computing version: ${u}`);return}}async function kAh({workspace:e,organization:t,context:r,snippetsConfig:n,skipLanguages:i=new Set}){let o={};if(!e)return;let s={typescript:n.typescriptSdk?.package,python:n.pythonSdk?.package,java:n.javaSdk?.coordinate,go:n.goSdk?.githubRepo&&Xes(n.goSdk?.githubRepo),csharp:n.csharpSdk?.package,ruby:n.rubySdk?.gem,php:n.phpSdk?.package,swift:n.swiftSdk?.package,rust:n.rustSdk?.package};if(e.generatorsConfiguration?.groups)for(let a of e.generatorsConfiguration.groups)for(let c of a.generators){let u=dVe({apiName:e.workspaceName??"",organization:t,generatorInvocation:c}),l="";if(u?.outputConfig.type==="publish")switch(u.outputConfig.value.type){case"npm":case"nuget":case"pypi":case"rubygems":l=u.outputConfig.value.packageName;break;case"maven":l=u.outputConfig.value.coordinate;break;case"go":l=u.outputConfig.value.repoUrl;break;case"swift":l=u.outputConfig.value.repoUrl;break;case"crates":l=u.outputConfig.value.packageName;break}if(c.language==="php"&&c.config&&typeof c.config=="object"&&"packageName"in c.config&&(l=c.config.packageName??""),c.language==="go"&&l&&(l=Xes(l)),!!c.language){if(i.has(c.language)){r.logger.debug(`Skipping dynamic IR generation for ${c.language} (using existing SDK dynamic IR)`);continue}if(c.language&&s[c.language]===l){let p=iA({workspace:e,generationLanguage:c.language,keywords:void 0,smartCasing:c.smartCasing,exampleGeneration:{disabled:!0,skipAutogenerationIfManualExamplesExist:!0,skipErrorAutogenerationIfManualErrorExamplesExist:!0},audiences:{type:"all"},readme:void 0,packageName:l,version:void 0,context:r,sourceResolver:new Yh(r,e),dynamicGeneratorConfig:u}),d=vLe({ir:p,disableExamples:!0,smartCasing:c.smartCasing,generationLanguage:c.language,generatorConfig:u});d?o[c.language]={dynamicIR:d}:r.logger.debug(`Failed to create dynamic IR for ${c.language}`)}}}for(let[a,c]of Object.entries(s))a&&c&&!Object.keys(o).includes(a)&&!i.has(a)&&(r.logger.warn(),r.logger.warn(`Failed to upload ${a} SDK snippets because of unknown package \`${c}\`.`),r.logger.warn(`Please make sure your ${e.workspaceName?`${e.workspaceName}/`:""}generators.yml has a generator that publishes a ${c} package.`),r.logger.warn());if(Object.keys(o).length>0)return o}async function NAh({dynamicIRs:e,dynamicIRUploadUrls:t,context:r,apiId:n}){if(Object.keys(t).length>0)for(let[i,o]of Object.entries(t)){let s=e[i]?.dynamicIR;if(s){let a=JSON.stringify(s);try{(await fetch(o.uploadUrl,{method:"PUT",body:a,headers:{"Content-Type":"application/octet-stream","Content-Length":Buffer.byteLength(a,"utf8").toString()}})).ok?r.logger.debug(`Uploaded dynamic IR for ${n}:${i}`):r.logger.warn(`Failed to upload dynamic IR for ${n}:${i}`)}catch(c){r.logger.warn(`Network error uploading dynamic IR for ${n}:${i}: ${c}`)}}else r.logger.warn(`Could not find matching dynamic IR to upload for ${n}:${i}`)}}async function jAh({docsDefinition:e,isPreview:t,context:r}){e.config.aiChatConfig==null||t||r.logger.warn(Ae.yellow("Enabling Ask Fern from docs.yml is deprecated. Please enable it from the Fern dashboard instead."))}function QAh(e,t){if(e)return{enabled:!0,model:process.env.FERN_AI_MODEL||"gpt-4o-mini",maxRetries:parseInt(process.env.FERN_AI_MAX_RETRIES||"3"),requestTimeoutMs:parseInt(process.env.FERN_AI_TIMEOUT_MS||"25000"),styleInstructions:t}}function cUu(e){let t=e,r=t?.content;return{errorType:t?.error,statusCode:t?.statusCode??r?.statusCode,reason:r?.reason,errorMessage:r?.errorMessage??r?.message,body:r?.body,cause:r?.cause,rawError:e}}var ZHt=[60*1e3,300*1e3,300*1e3];async function $Ht({organization:e,apiWorkspaces:t,ossWorkspaces:r,docsWorkspace:n,context:i,token:o,instanceUrl:s,preview:a,previewId:c,disableTemplates:u,skipUpload:l,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m}){let h=a&&!n.config.settings?.substituteEnvVars;n.config=Dy(n.config,{onError:x=>i.failAndThrow(void 0,x,{code:D.Code.EnvironmentError})},{substituteAsEmpty:h});let A=n.config.instances;if(A.length===0){i.failAndThrow("No instances specified in docs.yml! Cannot register docs.",void 0,{code:D.Code.ConfigError});return}if(A.length>1&&s==null){i.failAndThrow(`More than one docs instances. Please specify one (e.g. --instance ${A[0]?.url})`,void 0,{code:D.Code.ConfigError});return}let y=A.find(x=>x.url===s)??A[0];if(y==null){i.failAndThrow(`No docs instance with url ${s}. Failed to register.`,void 0,{code:D.Code.ConfigError});return}let I=(typeof y.customDomain=="string"?[y.customDomain]:y.customDomain??[]).map(c4u);(y.multiSource===!0||n.config.experimental?.basepathAware===!0)&&u4u(y.url,I,i),i.logger.info(`Starting docs publishing for ${a?"preview":"production"}: ${y.url}`),i.logger.debug(`Organization: ${e}, Preview: ${a}, APIs: ${t.length}, OSS: ${r.length}`);let C;return await i.runInteractiveTask({name:y.url},async()=>{let x=performance.now(),T=()=>oUu({docsWorkspace:n,customDomains:I,domain:y.url,token:o,organization:e,context:i,apiWorkspaces:t,ossWorkspaces:r,preview:a,previewId:c,editThisPage:y.editThisPage,disableTemplates:u,skipUpload:l,withAiExamples:n.config.aiExamples?.enabled??n.config.experimental?.aiExamples??!0,excludeApis:n.config.experimental?.excludeApis??!1,targetAudiences:y.audiences?Array.isArray(y.audiences)?y.audiences:[y.audiences]:void 0,docsUrl:y.url,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m,multiSource:y.multiSource??!1});for(let R=0;;R++)try{C=await T();break}catch(P){if(!(P instanceof owt)||R>=ZHt.length){if(P instanceof owt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:D.Code.NetworkError});throw P}let U=ZHt[R]??ZHt[ZHt.length-1]??6e4,X=U/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${X} minute${X===1?"":"s"} (attempt ${R+1}/${ZHt.length})...`),await new Promise($=>setTimeout($,U))}let O=performance.now()-x;i.logger.debug(`Docs publishing completed in ${O.toFixed(0)}ms`)}),C}_t();var Cpi=class{context;task;project;docsWorkspace;ossWorkspaces;token;constructor({context:t,task:r,project:n,docsWorkspace:i,ossWorkspaces:o,token:s}){this.context=t,this.task=r,this.project=n,this.docsWorkspace=i,this.ossWorkspaces=o,this.token=s}async publish({instanceUrl:t,preview:r,previewId:n,skipUpload:i}){let o=new Cd({context:this.context,task:this.task});try{let s=await $Ht({organization:this.project.config.organization,apiWorkspaces:this.project.apiWorkspaces,ossWorkspaces:this.ossWorkspaces,docsWorkspace:this.docsWorkspace,context:o,token:this.token,instanceUrl:t,preview:r,previewId:n,disableTemplates:void 0,skipUpload:i,cliVersion:"5.44.10",loginCommand:"fern auth login"});return o.getResult()===Uf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:qn(s)}}}};jt();var swt=class e{static MAX_DISPLAYED_LOGS_TTY=10;static URL_PATTERN=/https?:\/\/[^\s]+/;context;stream;tasks={};taskOrder=[];startTime;isRegistered=!1;constructor(t){this.context=t.context,this.stream=t.stream??process.stderr}addTask(t){let r={...t,status:t.status??"pending"};return this.tasks[t.id]=r,this.taskOrder.push(t.id),this}async start(t){return this.startTime=Date.now(),t!=null&&await this.context.ttyAwareLogger.takeOverTerminal(()=>{this.stream.write(`
|
|
4383
4383
|
`),this.stream.write(`${Ae.cyan("\u25C6")} ${Ae.bold(t.title)}
|
|
4384
4384
|
`),t.subtitle!=null&&this.stream.write(` ${Ae.dim(t.subtitle)}
|
|
4385
4385
|
`),this.stream.write(`
|
|
@@ -4680,7 +4680,7 @@ ${t}`)}return t}getContent(){let t=`package ${this.packageName};
|
|
|
4680
4680
|
`,r=this.stringifyImports();return r.length>0?`${t}${r}
|
|
4681
4681
|
|
|
4682
4682
|
${this.buffer}`:t+this.buffer}stringifyImports(){return Array.from(this.imports).filter(t=>t!==this.packageName).map(t=>`import ${t};`).sort().join(`
|
|
4683
|
-
`)}};as();as();var mZu=Bt.strictObject({title:Bt.string(),content:Bt.string()});var nbs=Bt.object({"base-api-exception-class-name":Bt.string().optional(),"base-exception-class-name":Bt.string().optional(),"client-class-name":Bt.string().optional(),"inline-file-properties":Bt.boolean().optional(),"inline-path-parameters":Bt.boolean().optional(),"package-layout":Bt.enum(["flat","nested"]).optional(),"package-prefix":Bt.string().optional(),"use-local-date-for-dates":Bt.boolean().optional(),"custom-dependencies":Bt.array(Bt.string()).optional(),"custom-plugins":Bt.array(Bt.string()).optional(),"disable-required-property-builder-checks":Bt.boolean().optional(),"enable-forward-compatible-enums":Bt.boolean().optional(),"enable-inline-types":Bt.boolean().optional(),"enable-public-constructors":Bt.boolean().optional(),"generate-unknown-as-json-node":Bt.boolean().optional(),"json-include":Bt.enum(["non-absent","non-empty"]).optional(),"enable-extensible-builders":Bt.boolean().optional(),"use-default-request-parameter-values":Bt.boolean().optional(),"enable-wire-tests":Bt.boolean().default(!1),"collapse-optional-nullable":Bt.boolean().optional(),"custom-readme-sections":Bt.array(mZu).optional(),"custom-pager-name":Bt.string().optional(),"offset-semantics":Bt.enum(["item-index","page-index"]).optional(),"default-timeout-in-seconds":Bt.number().optional(),"gradle-distribution-url":Bt.string().optional(),"gradle-plugin-management":Bt.string().optional(),"gradle-central-dependency-management":Bt.boolean().optional(),"output-directory":Bt.enum(["source-root","project-root"]).optional(),"custom-interceptors":Bt.boolean().optional(),"omit-fern-headers":Bt.boolean().optional(),"retry-status-codes":Bt.optional(Bt.enum(["legacy","recommended"])),"enable-gradle-profiling":Bt.boolean().optional(),"wrapped-aliases":Bt.boolean().optional(),maxRetries:Bt.number().int().min(0).optional()});var pr={};te(pr,{Access:()=>ibs,AstNode:()=>Fv,Class:()=>t8e,ClassInstantiation:()=>r8e,ClassReference:()=>Vg,CodeBlock:()=>n8e,Method:()=>i8e,MethodInvocation:()=>o8e,Parameter:()=>s8e,Type:()=>bYt,TypeLiteral:()=>CL,Writer:()=>e8e,classReference:()=>Tig,class_:()=>Sig,codeblock:()=>xig,instantiateClass:()=>Big,invokeMethod:()=>Oig,method:()=>Pig,parameter:()=>Dig});var Fv=class extends Dv{async toStringAsync({packageName:t,customConfig:r,formatter:n}){let i=new yYt({packageName:t,customConfig:r,formatter:n});return this.write(i),i.toStringAsync()}toString({packageName:t,customConfig:r,formatter:n}){let i=new yYt({packageName:t,customConfig:r,formatter:n});return this.write(i),i.toString()}};var t8e=class extends Fv{name;access;methods=[];constructor({name:t,access:r}){super(),this.name=t,this.access=r}write(t){if(t.write(`${this.access} class ${this.name}`),this.isEmpty()){t.writeLine(" {}");return}t.writeLine(" {"),t.indent();for(let r of this.methods)t.writeNode(r),t.newLine();t.dedent(),t.write("}")}addMethod(t){this.methods.push(t)}isEmpty(){return this.methods.length===0}};var ibs={Public:"public",Protected:"protected",Private:"private"};jt();var Vg=class extends Fv{name;packageName;fullyQualified;constructor({name:t,packageName:r,fullyQualified:n}){super(),this.name=t,this.packageName=r,this.fullyQualified=n??!1}write(t){if(t.addImport(`${this.packageName}.${this.name}`),this.fullyQualified){t.write(`${this.packageName}.${this.name}`);return}t.write(this.name)}};jt();var bYt=class extends Fv{internalType;constructor(t){super(),this.internalType=t}write(t){switch(this.internalType.type){case"array":t.writeNode(this.internalType.value),t.write("[]");break;case"bigInteger":t.writeNode(sig);break;case"boolean":t.write("Boolean");break;case"bytes":t.write("byte[]");break;case"date":t.write("String");break;case"dateTime":t.writeNode(uig);break;case"double":t.write("Double");break;case"float":t.write("Float");break;case"generic":t.writeNode(this.internalType.value),t.write("<");for(let[r,n]of this.internalType.parameters.entries())t.writeNode(n),r<this.internalType.parameters.length-1&&t.write(", ");t.write(">");break;case"inputStream":t.writeNode(fig);break;case"integer":t.write("Integer");break;case"iterable":this.writeIterable({writer:t,iterable:this.internalType});break;case"list":{this.writeList({writer:t,list:this.internalType});break}case"long":{t.write("Long");break}case"map":{this.writeMap({writer:t,map:this.internalType});break}case"object":{t.write("Object");break}case"optional":{this.writeOptional({writer:t,optional:this.internalType});break}case"reference":t.writeNode(this.internalType.value);break;case"set":{this.writeSet({writer:t,set:this.internalType});break}case"string":t.write("String");break;case"uuid":t.writeNode(pig);break;case"void":t.write("Void");break;default:xe(this.internalType)}}isOptional(){return this.internalType.type==="optional"}static array(t){return new this({type:"array",value:t})}static bigInteger(){return new this({type:"bigInteger"})}static boolean(){return new this({type:"boolean"})}static bytes(){return new this({type:"bytes"})}static date(){return new this({type:"date"})}static dateTime(){return new this({type:"dateTime"})}static double(){return new this({type:"double"})}static float(){return new this({type:"float"})}static integer(){return new this({type:"integer"})}static list(t){return new this({type:"list",value:t})}static long(){return new this({type:"long"})}static map(t,r){return new this({type:"map",keyType:t,valueType:r})}static object(){return new this({type:"object"})}static optional(t){return this.isAlreadyOptional(t)?t:new this({type:"optional",value:t})}static reference(t){return new this({type:"reference",value:t})}static generic(t,r){return new this({type:"generic",value:t,parameters:r})}static set(t){return new this({type:"set",value:t})}static string(){return new this({type:"string"})}static uuid(){return new this({type:"uuid"})}static void(){return new this({type:"void"})}static iterable(t){return new this({type:"iterable",value:t})}static inputStream(){return new this({type:"inputStream"})}writeList({writer:t,list:r}){t.writeNode(aig),t.write("<"),r.value.write(t),t.write(">")}writeMap({writer:t,map:r}){t.writeNode(cig),t.write("<"),r.keyType.write(t),t.write(", "),r.valueType.write(t),t.write(">")}writeOptional({writer:t,optional:r}){t.writeNode(obs),t.write("<"),r.value.write(t),t.write(">")}writeIterable({writer:t,iterable:r}){t.writeNode(dig),t.write("<"),r.value.write(t),t.write(">")}writeSet({writer:t,set:r}){t.writeNode(lig),t.write("<"),r.value.write(t),t.write(">")}static isAlreadyOptional(t){return t.internalType.type==="optional"}},ngi=new Vg({name:"Arrays",packageName:"java.util"}),sig=new Vg({name:"BigInteger",packageName:"java.math"}),fo1=new Vg({name:"HashMap",packageName:"java.util"}),aig=new Vg({name:"List",packageName:"java.util"}),cig=new Vg({name:"Map",packageName:"java.util"}),uig=new Vg({name:"OffsetDateTime",packageName:"java.time"}),obs=new Vg({name:"Optional",packageName:"java.util"}),lig=new Vg({name:"Set",packageName:"java.util"}),pig=new Vg({name:"UUID",packageName:"java.util"}),fig=new Vg({name:"InputStream",packageName:"java.io"}),dig=new Vg({name:"Iterable",packageName:"java.lang"});var CL=class e extends Fv{internalType;constructor(t){super(),this.internalType=t}write(t){switch(this.internalType.type){case"bigInteger":this.writeBigInteger({writer:t,bigInteger:this.internalType});break;case"boolean":t.write(this.internalType.value.toString());break;case"builder":this.writeBuilder({writer:t,builder:this.internalType});break;case"bytes":t.write(`"${this.internalType.value}".getBytes()`);break;case"class":{this.writeClass({writer:t,class_:this.internalType});break}case"date":this.writeDate({writer:t,date:this.internalType});break;case"dateTime":this.writeDateTime({writer:t,dateTime:this.internalType});break;case"double":{let r=this.internalType.value.toString();!r.includes(".")&&!r.includes("e")&&!r.includes("E")?t.write(`${r}.0`):t.write(r);break}case"enum":this.writeEnum({writer:t,enum_:this.internalType});break;case"float":t.write(`${this.internalType.value}f`);break;case"integer":t.write(Math.floor(this.internalType.value).toString());break;case"list":{this.writeList({writer:t,list:this.internalType});break}case"long":{t.write(`${Math.floor(this.internalType.value)}L`);break}case"map":{this.writeMap({writer:t,map:this.internalType});break}case"optional":{this.writeOptional({writer:t,optional:this.internalType});break}case"raw":{this.internalType.value instanceof Fv?t.writeNode(this.internalType.value):t.write(this.internalType.value);break}case"reference":t.writeNode(this.internalType.value);break;case"set":{this.writeSet({writer:t,set:this.internalType});break}case"string":t.write(`"${this.escapeString(this.internalType.value)}"`);break;case"unknown":this.writeUnknown({writer:t,value:this.internalType.value});break;case"uuid":this.writeUUID({writer:t,uuid:this.internalType});break;case"nop":break;default:xe(this.internalType)}}isOptional(){return this.internalType.type==="optional"}static bigInteger(t){return new this({type:"bigInteger",value:t})}static boolean(t){return new this({type:"boolean",value:t})}static builder({classReference:t,parameters:r}){return new this({type:"builder",classReference:t,parameters:r})}static bytes(t){return new this({type:"bytes",value:t})}static class_({reference:t,parameters:r}){return new this({type:"class",reference:t,parameters:r})}static date(t){return new this({type:"date",value:t})}static dateTime(t){return new this({type:"dateTime",value:t})}static double(t){return new this({type:"double",value:t})}static enum_({classReference:t,value:r}){return new this({type:"enum",classReference:t,value:r})}static float(t){return new this({type:"float",value:t})}static integer(t){return new this({type:"integer",value:t})}static list({valueType:t,values:r,isParameter:n}){return new this({type:"list",valueType:t,values:r,isParameter:n})}static long(t){return new this({type:"long",value:t})}static map({keyType:t,valueType:r,entries:n}){return new this({type:"map",keyType:t,valueType:r,entries:n})}static optional({value:t,useOf:r}){return this.isAlreadyOptional(t)?t:new this({type:"optional",value:t,useOf:r})}static raw(t){return new this({type:"raw",value:t})}static reference(t){return new this({type:"reference",value:t})}static set({valueType:t,values:r}){return new this({type:"set",valueType:t,values:r})}static string(t){return new this({type:"string",value:t})}static unknown(t){return new this({type:"unknown",value:t})}static uuid(t){return new this({type:"uuid",value:t})}static nop(){return new this({type:"nop"})}static isNop(t){return t.internalType.type==="nop"}shouldWriteInLine(){switch(this.internalType.type){case"bigInteger":case"boolean":case"bytes":case"date":case"dateTime":case"double":case"enum":case"float":case"integer":case"long":case"nop":case"raw":case"string":case"unknown":case"uuid":return!0;case"optional":return this.internalType.value.shouldWriteInLine();case"builder":case"class":case"list":case"map":case"reference":case"set":return!1;default:xe(this.internalType)}}writeBigInteger({writer:t,bigInteger:r}){t.write("new "),t.writeNode(pr.instantiateClass({classReference:mig,arguments_:[e.string(r.value)]}))}writeBuilder({writer:t,builder:r}){t.writeNode(r.classReference),t.writeNewLineIfLastLineNot(),t.indent(),this.writeBuilderParameters({writer:t,parameters:this.orderBuilderParameters(Eig({parameters:r.parameters}))}),t.dedent()}writeBuilderParameters({writer:t,parameters:r}){t.writeLine(".builder()");for(let n of r)t.write(`.${n.name}(`),n.value.shouldWriteInLine()||t.newLine(),t.indent(),t.writeNode(n.value),t.dedent(),n.value.shouldWriteInLine()||t.newLine(),t.writeLine(")");t.writeNewLineIfLastLineNot(),t.write(".build()")}orderBuilderParameters(t){return t.some(n=>!n.value.isOptional()&&!this.isCollection(n.value))?t.sort((n,i)=>{let o=this.isNonRequired(n.value),s=this.isNonRequired(i.value);return o&&!s?1:!o&&s?-1:0}):t.sort((n,i)=>{let o=n.value.isOptional(),s=i.value.isOptional();return o&&!s?1:!o&&s?-1:0})}isCollection(t){let r=t.internalType.type;return r==="list"||r==="set"||r==="map"}isNonRequired(t){return t.isOptional()||this.isCollection(t)}writeClass({writer:t,class_:r}){let n=big({parameters:r.parameters});t.writeNode(pr.instantiateClass({classReference:r.reference,arguments_:n.map(i=>i.value)}))}writeDate({writer:t,date:r}){t.writeNode(pr.invokeMethod({on:gig,method:"parse",arguments_:[e.string(r.value)]}))}writeDateTime({writer:t,dateTime:r}){t.writeNode(pr.invokeMethod({on:Aig,method:"parse",arguments_:[e.string(r.value)]}))}writeEnum({writer:t,enum_:r}){t.writeNode(r.classReference),t.write("."+r.value)}writeList({writer:t,list:r}){this.writeIterable({writer:t,iterable:r})}writeMap({writer:t,map:r}){let n=vig({entries:r.entries});if(n.length===0){t.write("new "),t.writeNode(igi),t.write("<"),t.writeNode(r.keyType),t.write(", "),t.writeNode(r.valueType),t.write(">()");return}t.write("new "),t.writeNode(igi),t.write("<"),t.writeNode(r.keyType),t.write(", "),t.writeNode(r.valueType),t.writeLine(">() {{"),t.indent();for(let i of n)t.write("put("),t.writeNode(i.key),t.write(", "),t.writeNode(i.value),t.writeLine(");");t.dedent(),t.write("}}")}writeOptional({writer:t,optional:r}){if(!r.useOf){t.writeNode(r.value);return}t.writeNode(pr.invokeMethod({on:obs,method:"of",arguments_:[r.value]}))}writeSet({writer:t,set:r}){this.writeIterable({writer:t,iterable:r})}writeIterable({writer:t,iterable:r}){let n=r.type==="list"?sbs:hig,i=Iig({values:r.values});if(r.type==="list"&&r.isParameter&&i.length>0){t.writeNode(pr.invokeMethod({on:ngi,method:"asList",arguments_:i}));return}if(i.length===0){t.write("new "),t.writeNode(n),t.write("<"),t.writeNode(r.valueType),t.write(">()");return}t.write("new "),t.writeNode(n),t.write("<"),t.writeNode(r.valueType),t.writeLine(">("),t.indent(),t.writeNode(pr.invokeMethod({on:ngi,method:"asList",arguments_:i})),t.writeNewLineIfLastLineNot(),t.dedent(),t.write(")")}writeUnknown({writer:t,value:r}){switch(typeof r){case"boolean":t.write(r.toString());return;case"string":t.write(`"${this.escapeString(r)}"`);return;case"number":t.write(r.toString());return;case"object":if(r==null){t.write("null");return}if(Array.isArray(r)){this.writeUnknownArray({writer:t,value:r});return}this.writeUnknownMap({writer:t,value:r});return;default:throw new Error(`Internal error; unsupported unknown type: ${typeof r}`)}}writeUnknownArray({writer:t,value:r}){if(r.length===0){t.write("new "),t.writeNode(sbs),t.write("<Object>()");return}t.write("new "),t.writeNode(sbs),t.write("<Object>("),t.writeNode(pr.invokeMethod({on:ngi,method:"asList",arguments_:r.map(n=>e.unknown(n))})),t.write(")")}writeUnknownMap({writer:t,value:r}){let n=Object.entries(r);if(n.length===0){t.write("new "),t.writeNode(igi),t.write("<String, Object>()");return}t.writeLine("new "),t.writeNode(igi),t.write("<String, Object>() {{"),t.indent();for(let[i,o]of n)t.write(`put("${i}", `),t.writeNode(e.unknown(o)),t.writeLine(");");t.dedent(),t.write("}}")}writeUUID({writer:t,uuid:r}){t.writeNode(pr.invokeMethod({on:yig,method:"fromString",arguments_:[e.string(r.value)]}))}escapeString(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}static isAlreadyOptional(t){return t.internalType.type==="optional"}},sbs=new Vg({name:"ArrayList",packageName:"java.util"}),mig=new Vg({name:"BigInteger",packageName:"java.math"}),igi=new Vg({name:"HashMap",packageName:"java.util"}),hig=new Vg({name:"HashSet",packageName:"java.util"}),bo1=new Vg({name:"List",packageName:"java.util"}),gig=new Vg({name:"LocalDate",packageName:"java.time"}),Eo1=new Vg({name:"Map",packageName:"java.util"}),Aig=new Vg({name:"OffsetDateTime",packageName:"java.time"}),vo1=new Vg({name:"Set",packageName:"java.util"}),yig=new Vg({name:"UUID",packageName:"java.util"});function big({parameters:e}){return e.filter(t=>!CL.isNop(t.value))}function Eig({parameters:e}){return e.filter(t=>!CL.isNop(t.value))}function vig({entries:e}){return e.filter(t=>!CL.isNop(t.key)&&!CL.isNop(t.value))}function Iig({values:e}){return e.filter(t=>!CL.isNop(t))}function ogi({writer:e,arguments_:t}){let r=wig(t);if(r.length===0){e.write("()");return}if(r.some(i=>i instanceof CL&&!i.shouldWriteInLine())){Cig({writer:e,arguments_:r});return}e.write("("),r.forEach((i,o)=>{o>0&&e.write(", "),hZu({writer:e,argument:i})}),e.write(")")}function Cig({writer:e,arguments_:t}){e.writeLine("("),e.indent(),t.forEach((r,n)=>{n>0&&e.writeLine(","),hZu({writer:e,argument:r})}),e.dedent(),t.length>0&&e.newLine(),e.write(")")}function hZu({writer:e,argument:t}){GRe(t)?e.writeNodeOrString(t.assignment):t.write(e)}function wig(e){return e.filter(t=>!(t instanceof CL&&CL.isNop(t)))}var r8e=class extends Fv{classReference;arguments_;constructor({classReference:t,arguments_:r}){super(),this.classReference=t,this.arguments_=r}write(t){t.writeNode(this.classReference),ogi({writer:t,arguments_:this.arguments_})}};var n8e=class extends Fv{arg;constructor(t){super(),this.arg=t}write(t){return new C0(this.arg).write(t)}};var i8e=class extends Fv{name;access;parameters;body;return_;static_;constructor({name:t,access:r,parameters:n,body:i,static_:o,return_:s}){super(),this.name=t,this.access=r,this.parameters=n,this.body=i,this.return_=s,this.static_=o??!1}write(t){if(t.write(`${this.access} `),this.static_&&t.write("static "),this.return_!=null?t.writeNode(this.return_):t.write("void"),t.write(` ${this.name}`),this.parameters.length===0)t.write("()");else if(this.parameters.length===1){if(t.write("("),this.parameters[0]==null)throw new Error("Cannot render parameter "+this.parameters[0]);t.writeNode(this.parameters[0]),t.write(")")}else t.writeLine("("),t.indent(),this.parameters.forEach((r,n)=>{n>0&&t.writeLine(", "),t.writeNode(r)}),t.dedent(),t.write(")");if(this.body==null){t.write(";");return}t.writeLine(" {"),t.indent(),t.writeNode(this.body),t.writeNewLineIfLastLineNot(),t.dedent(),t.write("}")}};var o8e=class extends Fv{on;method;arguments_;constructor({method:t,arguments_:r,on:n}){super(),this.on=n,this.method=t,this.arguments_=r}write(t){this.on.write(t),t.write("."),t.write(this.method),ogi({writer:t,arguments_:this.arguments_})}};var s8e=class extends Fv{name;type;constructor({name:t,type:r}){super(),this.name=t,this.type=r}write(t){t.writeNode(this.type),t.write(` ${this.name}`)}};function xig(e){return new n8e(e)}function Sig(e){return new t8e(e)}function Tig(e){return new Vg(e)}function Big(e){return new r8e(e)}function Oig(e){return new o8e(e)}function Pig(e){return new i8e(e)}function Dig(e){return new s8e(e)}co();jt();var sgi=class{context;constructor({context:t}){this.context=t}usesOptionalNullable(){return this.context.customConfig?.["collapse-optional-nullable"]===!0}wrapInOptionalIfNotNop(t,r=!1,n=!1){return pr.TypeLiteral.isNop(t)?t:n?this.context.getOptionalNullableOf(t):pr.TypeLiteral.optional({value:t,useOf:r})}convert(t){if(t.value===null)return this.context.isNullable(t.typeReference)?this.context.getNullableOfNull():(this.context.errors.add({severity:kr.Critical,message:"Expected non-null value, but got null"}),pr.TypeLiteral.nop());if(t.value===void 0)return pr.TypeLiteral.nop();switch(t.typeReference.type){case"list":return this.convertList({list:t.typeReference.value,value:t.value,as:t.as});case"literal":return this.convertLiteral({literal:t.typeReference.value,value:t.value});case"map":return this.convertMap({map:t.typeReference,value:t.value,as:t.as});case"named":{let r=this.context.resolveNamedType({typeId:t.typeReference.value});return r==null?pr.TypeLiteral.nop():this.convertNamed({named:r,value:t.value,as:t.as,inUndiscriminatedUnion:t.inUndiscriminatedUnion})}case"nullable":case"optional":{if(t.value===void 0||typeof t.value=="object"&&t.value!==null&&Object.keys(t.value).length===0&&t.typeReference.value.type==="named")return t.isCollapsedOptionalNullable||this.usesOptionalNullable()&&(t.typeReference.value.type==="optional"||t.typeReference.value.type==="nullable")?this.context.getOptionalNullableAbsent():pr.TypeLiteral.reference(pr.invokeMethod({on:pr.classReference({name:"Optional",packageName:"java.util"}),method:"empty",arguments_:[]}));if(t.typeReference.value.type==="list"){let i=this.convertList({list:t.typeReference.value.value,value:t.value});return this.wrapInOptionalIfNotNop(i,!0,t.isCollapsedOptionalNullable===!0)}if(this.usesOptionalNullable()&&(t.typeReference.value.type==="optional"||t.typeReference.value.type==="nullable"))return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as,inUndiscriminatedUnion:t.inUndiscriminatedUnion,isCollapsedOptionalNullable:!0});let r=this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as,inUndiscriminatedUnion:t.inUndiscriminatedUnion}),n=t.as==="mapValue"||t.inUndiscriminatedUnion===!0;return this.wrapInOptionalIfNotNop(r,n,t.isCollapsedOptionalNullable===!0)}case"primitive":return this.convertPrimitive({primitive:t.typeReference.value,value:t.value,as:t.as});case"set":return this.convertSet({set:t.typeReference.value,value:t.value,as:t.as});case"unknown":return this.convertUnknown({value:t.value});default:xe(t.typeReference)}}convertList({list:t,value:r,as:n}){if(!Array.isArray(r))return this.context.errors.add({severity:kr.Critical,message:`Expected array but got: ${typeof r}`}),pr.TypeLiteral.nop();let i=t.type==="optional"||t.type==="nullable";return pr.TypeLiteral.list({valueType:this.context.dynamicTypeMapper.convert({typeReference:t}),values:r.map((o,s)=>{this.context.errors.scope({index:s});try{if(i){let a=this.convert({typeReference:t.value,value:o,as:n});return this.wrapInOptionalIfNotNop(a,!0)}return this.convert({typeReference:t,value:o,as:n})}finally{this.context.errors.unscope()}}),isParameter:!0})}convertLiteral({literal:t,value:r}){switch(t.type){case"boolean":{let n=this.context.getValueAsBoolean({value:r});return n==null?pr.TypeLiteral.nop():pr.TypeLiteral.boolean(n)}case"string":{let n=this.context.getValueAsString({value:r});return n==null?pr.TypeLiteral.nop():pr.TypeLiteral.string(n)}default:xe(t)}}convertSet({set:t,value:r,as:n}){return Array.isArray(r)?pr.TypeLiteral.set({valueType:this.context.dynamicTypeMapper.convert({typeReference:t}),values:r.map((i,o)=>{this.context.errors.scope({index:o});try{return this.convert({typeReference:t,value:i,as:n})}finally{this.context.errors.unscope()}})}):(this.context.errors.add({severity:kr.Critical,message:`Expected array but got: ${typeof r}`}),pr.TypeLiteral.nop())}convertMap({map:t,value:r,as:n}){return typeof r!="object"||r==null?(this.context.errors.add({severity:kr.Critical,message:`Expected object but got: ${r==null?"null":typeof r}`}),pr.TypeLiteral.nop()):pr.TypeLiteral.map({keyType:this.context.dynamicTypeMapper.convert({typeReference:t.key}),valueType: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:"mapKey"}),value:this.convert({typeReference:t.value,value:o,as:"mapValue"})}}finally{this.context.errors.unscope()}})})}convertNamed({named:t,value:r,as:n,inUndiscriminatedUnion:i}){switch(t.type){case"alias":if(t.typeReference.type==="unknown"){let o=this.convert({typeReference:t.typeReference,value:r,as:n,inUndiscriminatedUnion:i});return pr.TypeLiteral.reference(pr.invokeMethod({on:this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),method:"of",arguments_:[o]}))}return this.convert({typeReference:t.typeReference,value:r,as:n,inUndiscriminatedUnion:i});case"discriminatedUnion":return this.convertDiscriminatedUnion({discriminatedUnion:t,value:r,as:n});case"enum":return this.convertEnum({enum_:t,value:r});case"object":return this.convertObject({object_:t,value:r,as:n,inUndiscriminatedUnion:i});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r,as:n});default:xe(t)}}convertDiscriminatedUnion({discriminatedUnion:t,value:r,as:n}){let i=this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),o=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:t,value:r});if(o==null)return pr.TypeLiteral.nop();let s=o.singleDiscriminatedUnionType;switch(s.type){case"samePropertiesAsObject":{let a=this.context.resolveNamedType({typeId:s.typeId});return a==null?pr.TypeLiteral.nop():pr.TypeLiteral.reference(pr.invokeMethod({on:i,method:this.context.getPropertyName(s.discriminantValue.name),arguments_:[this.convertNamed({named:a,value:o.value,as:n})]}))}case"singleProperty":{let a=this.context.getRecord(o.value);if(a==null)return pr.TypeLiteral.nop();try{return this.context.errors.scope(s.discriminantValue.wireValue),pr.TypeLiteral.reference(pr.invokeMethod({on:i,method:this.context.getPropertyName(s.discriminantValue.name),arguments_:[this.convert({typeReference:s.typeReference,value:a["value"],as:n})]}))}finally{this.context.errors.unscope()}}case"noProperties":return pr.TypeLiteral.reference(pr.invokeMethod({on:i,method:this.context.getPropertyName(s.discriminantValue.name),arguments_:[]}));default:xe(s)}}convertObject({object_:t,value:r,as:n,inUndiscriminatedUnion:i}){let o=this.context.getRecord(r)??{},s=this.context.associateByWireValue({parameters:t.properties,values:o}),a=new Set(s.map(d=>d.name.wireValue));for(let d of t.properties)if(!a.has(d.name.wireValue)&&!this.context.isOptional(d.typeReference)){if(i===!0)throw new Error(`Required property "${d.name.wireValue}" is missing from value`);let f=this.getDefaultValueForTypeReference(d.typeReference);f!==void 0&&s.push({name:d.name,typeReference:d.typeReference,value:f})}let c=new Map,u=new Set;t.properties.forEach((d,f)=>{c.set(d.name.wireValue,f),u.add(d.name.wireValue)}),s.sort((d,f)=>(c.get(d.name.wireValue)??0)-(c.get(f.name.wireValue)??0));let l=n==="request"?s.filter(d=>!this.context.isDirectLiteral(d.typeReference)):s,p=[];for(let d of l){this.context.errors.scope(d.name.wireValue);try{let f=this.convert({typeReference:d.typeReference,value:d.value,as:n,inUndiscriminatedUnion:i});if(pr.TypeLiteral.isNop(f)&&!this.context.isOptional(d.typeReference)){if(i===!0)throw new Error(`Required property "${d.name.wireValue}" could not be converted`);continue}p.push({name:this.context.getMethodName(d.name.name),value:f})}finally{this.context.errors.unscope()}}for(let[d,f]of Object.entries(o))if(!u.has(d)&&f!==void 0){let m=this.convertToRawJavaLiteral(f);m!=null&&p.push({name:"additionalProperty",value:pr.TypeLiteral.raw(`"${this.escapeJavaString(d)}", ${m}`)})}return pr.TypeLiteral.builder({classReference:this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),parameters:p})}convertToRawJavaLiteral(t){return typeof t=="string"?`"${this.escapeJavaString(t)}"`:typeof t=="number"||typeof t=="boolean"?t.toString():t===null?"null":null}escapeJavaString(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r")}getDefaultValueForTypeReference(t){switch(t.type){case"primitive":return this.getDefaultPrimitiveValue(t.value);case"nullable":return null;case"optional":return;case"list":case"set":return[];case"map":return{};case"named":{let r=this.context.resolveNamedType({typeId:t.value});if(r==null)return{};switch(r.type){case"enum":if(r.values.length>0){let n=r.values[0];return n?.wireValue}return;case"object":case"alias":return{};case"discriminatedUnion":case"undiscriminatedUnion":return;default:return{}}}case"literal":return t.value.value;case"unknown":return{};default:xe(t)}}getDefaultPrimitiveValue(t){switch(t){case"STRING":return"string";case"INTEGER":case"UINT":return 1;case"LONG":case"UINT_64":return 1e6;case"FLOAT":case"DOUBLE":return 1.1;case"BOOLEAN":return!0;case"DATE":return"2024-01-15";case"DATE_TIME":return"2024-01-15T09:30:00Z";case"DATE_TIME_RFC_2822":return"Tue, 15 Jan 2024 09:30:00 +0000";case"UUID":return"d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32";case"BASE_64":return"SGVsbG8gd29ybGQh";case"BIG_INTEGER":return"123456789";default:return"string"}}convertEnum({enum_:t,value:r}){let n=this.getEnumValueName({enum_:t,value:r});return n==null?pr.TypeLiteral.nop():pr.TypeLiteral.enum_({classReference:this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),value:n})}getEnumValueName({enum_:t,value:r}){if(typeof r!="string"){this.context.errors.add({severity:kr.Critical,message:`Expected enum value string, got: ${typeof r}`});return}let n=t.values.find(i=>i.wireValue===r);if(n==null){this.context.errors.add({severity:kr.Critical,message:`An enum value named "${r}" does not exist in this context`});return}return this.context.getEnumName(n.name)}convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r,as:n}){let i=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r,as:n});return i==null?pr.TypeLiteral.nop():this.context.isPrimitive(i.valueTypeReference)?pr.TypeLiteral.reference(pr.invokeMethod({on:this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),method:"of",arguments_:[i.typeInstantiation]})):pr.TypeLiteral.reference(pr.invokeMethod({on:this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),method:"of",arguments_:[i.typeInstantiation]}))}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r,as:n}){for(let i of t.types){let o=this.context.errors.size();try{let s=this.convert({typeReference:i,value:r,as:n,inUndiscriminatedUnion:!0});if(pr.TypeLiteral.isNop(s)||this.context.errors.size()>o){this.context.errors.truncate(o);continue}return{valueTypeReference:i,typeInstantiation:s}}catch{this.context.errors.truncate(o);continue}}this.context.errors.add({severity:kr.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof r}" value`})}getUndiscriminatedUnionFieldName({typeReference:t}){switch(t.type){case"list":return this.getUndiscriminatedUnionFieldNameForList({list:t});case"literal":return this.getUndiscriminatedUnionFieldNameForLiteral({literal:t.value});case"map":return this.getUndiscriminatedUnionFieldNameForMap({map:t});case"named":{let r=this.context.resolveNamedType({typeId:t.value});return r==null?void 0:this.context.getClassName(r.declaration.name)}case"optional":return this.getUndiscriminatedUnionFieldNameForOptional({typeReference:t});case"nullable":return this.getUndiscriminatedUnionFieldNameForNullable({typeReference:t});case"primitive":return this.getUndiscriminatedUnionFieldNameForPrimitive({primitive:t.value});case"set":return this.getUndiscriminatedUnionFieldNameForSet({set:t});case"unknown":return"Unknown";default:xe(t)}}getUndiscriminatedUnionFieldNameForList({list:t}){let r=this.getUndiscriminatedUnionFieldName({typeReference:t});if(r!=null)return`ListOf${r}`}getUndiscriminatedUnionFieldNameForMap({map:t}){let r=this.getUndiscriminatedUnionFieldName({typeReference:t.key});if(r==null)return;let n=this.getUndiscriminatedUnionFieldName({typeReference:t.value});if(n!=null)return`MapOf${r}To${n}`}getUndiscriminatedUnionFieldNameForOptional({typeReference:t}){let r=this.getUndiscriminatedUnionFieldName({typeReference:t});if(r!=null)return`Optional${r}`}getUndiscriminatedUnionFieldNameForNullable({typeReference:t}){let r=this.getUndiscriminatedUnionFieldName({typeReference:t});if(r!=null)return`Nullable${r}`}getUndiscriminatedUnionFieldNameForSet({set:t}){let r=this.getUndiscriminatedUnionFieldName({typeReference:t});if(r!=null)return`SetOf${r}`}getUndiscriminatedUnionFieldNameForLiteral({literal:t}){}getUndiscriminatedUnionFieldNameForPrimitive({primitive:t}){switch(t){case"INTEGER":case"UINT":return"Integer";case"LONG":case"UINT_64":return"Long";case"FLOAT":return"Float";case"DOUBLE":return"Double";case"BOOLEAN":return"Boolean";case"BIG_INTEGER":return"BigInteger";case"STRING":return"String";case"UUID":return"Uuid";case"DATE":return"Date";case"DATE_TIME":return"DateTime";case"DATE_TIME_RFC_2822":return"DateTimeRfc2822";case"BASE_64":return"Base64";default:xe(t)}}convertUnknown({value:t}){return this.context.customConfig?.["generate-unknown-as-json-node"]===!0?this.convertToJsonNode({value:t}):pr.TypeLiteral.unknown(t)}convertToJsonNode({value:t}){let r=pr.classReference({name:"ObjectMappers",packageName:this.context.getCorePackageName()});return typeof t=="string"?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.string(t)]})):typeof t=="number"?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.integer(t)]})):typeof t=="boolean"?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.boolean(t)]})):t===null?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.raw(pr.codeblock("null"))]})):Array.isArray(t)?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.list({valueType:pr.Type.object(),values:t.map(n=>pr.TypeLiteral.unknown(n)),isParameter:!0})]})):typeof t=="object"&&t!==null?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.unknown(t)]})):pr.TypeLiteral.unknown(t)}convertPrimitive({primitive:t,value:r,as:n}){switch(t){case"INTEGER":case"UINT":{let i=this.getValueAsNumber({value:r,as:n});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.integer(i)}case"LONG":case"UINT_64":{let i=this.getValueAsNumber({value:r,as:n});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.long(i)}case"FLOAT":{let i=this.getValueAsNumber({value:r,as:n});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.float(i)}case"DOUBLE":{let i=this.getValueAsNumber({value:r,as:n});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.double(i)}case"BOOLEAN":{let i=this.getValueAsBoolean({value:r,as:n});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.boolean(i)}case"STRING":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.string(i)}case"DATE":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():this.context.customConfig?.["use-local-date-for-dates"]===!0?pr.TypeLiteral.date(i):pr.TypeLiteral.string(i)}case"DATE_TIME":case"DATE_TIME_RFC_2822":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.dateTime(i)}case"UUID":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.uuid(i)}case"BASE_64":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.bytes(i)}case"BIG_INTEGER":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.bigInteger(i)}default:xe(t)}}getValueAsNumber({value:t,as:r}){let n=r==="mapKey"&&typeof t=="string"?Number(t):t;return this.context.getValueAsNumber({value:n})}getValueAsBoolean({value:t,as:r}){let n=r==="mapKey"?typeof t=="string"?t==="true":t==="false"?!1:t:t;return this.context.getValueAsBoolean({value:n})}};jt();var agi=class{context;constructor({context:t}){this.context=t}convert(t){switch(t.typeReference.type){case"list":return pr.Type.list(this.convert({typeReference:t.typeReference}));case"literal":return this.convertLiteral({literal:t.typeReference.value});case"map":return pr.Type.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})}case"optional":case"nullable":return pr.Type.optional(this.convert({typeReference:t.typeReference.value}));case"primitive":return this.convertPrimitive({primitive:t.typeReference.value});case"set":return pr.Type.set(this.convert({typeReference:t.typeReference}));case"unknown":return this.convertUnknown();default:xe(t.typeReference)}}convertNamed({named:t}){switch(t.type){case"alias":return this.convert({typeReference:t.typeReference});case"enum":case"discriminatedUnion":case"object":case"undiscriminatedUnion":return pr.Type.reference(pr.classReference({name:this.context.getClassName(t.declaration.name),packageName:this.context.getTypesPackageName(t.declaration.fernFilepath)}));default:xe(t)}}convertLiteral({literal:t}){switch(t.type){case"boolean":return pr.Type.boolean();case"string":return pr.Type.string()}}convertUnknown(){return this.context.customConfig?.["generate-unknown-as-json-node"]===!0?pr.Type.reference(pr.classReference({name:"JsonNode",packageName:"com.fasterxml.jackson.databind"})):pr.Type.object()}convertPrimitive({primitive:t}){switch(t){case"INTEGER":return pr.Type.integer();case"UINT":return pr.Type.integer();case"LONG":return pr.Type.long();case"UINT_64":return pr.Type.long();case"FLOAT":return pr.Type.float();case"DOUBLE":return pr.Type.double();case"BOOLEAN":return pr.Type.boolean();case"STRING":return pr.Type.string();case"DATE":return pr.Type.date();case"DATE_TIME":case"DATE_TIME_RFC_2822":return pr.Type.dateTime();case"UUID":return pr.Type.uuid();case"BASE_64":return pr.Type.bytes();case"BIG_INTEGER":return pr.Type.bigInteger();default:xe(t)}}};jt();var cgi=class{context;constructor({context:t}){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":n.fileFields.push({name:this.context.getMethodName(o.name),value:this.getSingleFileProperty({property:o,record:i})});break;case"fileArray":n.fileFields.push({name:this.context.getMethodName(o.name),value:this.getArrayFileProperty({property:o,record:i})});break;case"bodyProperty":n.bodyPropertyFields.push({name:this.context.getMethodName(o.name.name),value:this.getBodyProperty({property:o,record:i})});break;default:xe(o)}return n}getSingleFileProperty({property:t,record:r}){let n=this.context.getSingleFileValue({property:t,record:r});return n==null?pr.TypeLiteral.nop():pr.TypeLiteral.reference(this.context.getFileStreamFromString(n))}getArrayFileProperty({property:t,record:r}){let n=this.context.getFileArrayValues({property:t,record:r});if(n==null)return pr.TypeLiteral.nop();for(let i of n)return pr.TypeLiteral.reference(this.context.getFileStreamFromString(i));return pr.TypeLiteral.nop()}getBodyProperty({property:t,record:r}){let n=r[t.name.wireValue];return n==null?pr.TypeLiteral.nop():this.context.dynamicTypeLiteralMapper.convert({typeReference:t.typeReference,value:n})}};var Rig=new Set(["enum","extends","package","void","short","class","abstract","return","import","for","assert","switch"]),Fig=new Set(["getClass","notify","notifyAll","wait"]),ugi=class e extends HC{ir;customConfig;dynamicTypeMapper;dynamicTypeLiteralMapper;filePropertyMapper;constructor({ir:t,config:r,options:n,sharedCustomConfig:i}){super({ir:t,config:r,options:n}),this.ir=t,this.customConfig=i??nbs.parse(r.customConfig??{}),this.dynamicTypeMapper=new agi({context:this}),this.dynamicTypeLiteralMapper=new sgi({context:this}),this.filePropertyMapper=new cgi({context:this})}clone(){return new e({ir:this.ir,config:this.config,options:this.options,sharedCustomConfig:this.customConfig})}getClassName(t){return this.getName(t.pascalCase.safeName)}getEnumName(t){return this.getName(t.screamingSnakeCase.safeName)}getPropertyName(t){return this.getName(t.camelCase.safeName)}getMethodName(t){let r=t.camelCase.safeName;return this.isReservedMethodName(r)?r+"_":this.getName(r)}getRootClientClassReference(){return pr.classReference({name:this.getRootClientClassName(),packageName:this.getRootPackageName()})}getRootClientClassName(){return this.customConfig?.["client-class-name"]??`${this.getBaseNamePrefix()}Client`}getEnvironmentClassName(){return"Environment"}getEnvironmentTypeReferenceFromID(t){let r=this.resolveEnvironmentName(t);if(r!=null)return pr.codeblock(n=>{n.writeNode(this.getEnvironmentClassReference()),n.write("."),n.write(this.getEnumName(r))})}getEnvironmentClassReference(){return pr.classReference({name:this.getEnvironmentClassName(),packageName:this.getCorePackageName()})}getJavaClassReferenceFromDeclaration({declaration:t}){return pr.classReference({name:t.name.pascalCase.unsafeName,packageName:this.getTypesPackageName(t.fernFilepath)})}getNullableClassReference(){return pr.classReference({name:"Nullable",packageName:this.getCorePackageName()})}getNullableOfNull(){return pr.TypeLiteral.reference(pr.invokeMethod({on:this.getNullableClassReference(),method:"ofNull",arguments_:[]}))}getOptionalNullableClassReference(){return pr.classReference({name:"OptionalNullable",packageName:this.getCorePackageName()})}getOptionalNullableAbsent(){return pr.TypeLiteral.reference(pr.invokeMethod({on:this.getOptionalNullableClassReference(),method:"absent",arguments_:[]}))}getOptionalNullableOf(t){return pr.TypeLiteral.reference(pr.invokeMethod({on:this.getOptionalNullableClassReference(),method:"of",arguments_:[t]}))}getFileStreamFromString(t){return pr.TypeLiteral.reference(pr.codeblock(r=>{r.write("new "),r.writeNode(this.getFileStreamClassReference()),r.write("("),r.writeNode(this.getByteArrayInputStreamClassReference()),r.write("("),r.writeNode(pr.TypeLiteral.string(t)),r.write(".getBytes("),r.writeNode(this.getStandardCharsetsClassReference()),r.write(".UTF_8)))")}))}getFileStreamClassReference(){return pr.classReference({name:"FileStream",packageName:this.getCorePackageName()})}getByteArrayInputStreamClassReference(){return pr.classReference({name:"ByteArrayInputStream",packageName:"java.io"})}getStandardCharsetsClassReference(){return pr.classReference({name:"StandardCharsets",packageName:"java.nio.charset"})}isPrimitive(t){switch(t.type){case"primitive":return!0;case"optional":case"nullable":return this.isPrimitive(t.value);case"named":{let r=this.resolveNamedType({typeId:t.value});if(r==null)return!1;switch(r.type){case"alias":return this.isPrimitive(r.typeReference);case"discriminatedUnion":case"undiscriminatedUnion":case"object":case"enum":return!1;default:xe(r)}break}case"list":case"set":case"map":case"literal":case"unknown":return!1;default:xe(t)}}isDirectLiteral(t){return t.type==="literal"}sortTypeInstancesByRequiredFirst(t,r){let n=new Map;r.forEach((s,a)=>{n.set(s.name.wireValue,a)});let i=[],o=[];for(let s of t)this.isOptional(s.typeReference)?o.push(s):i.push(s);return i.sort((s,a)=>(n.get(s.name.wireValue)??0)-(n.get(a.name.wireValue)??0)),[...i,...o]}associateByWireValue({parameters:t,values:r,ignoreMissingParameters:n}){let i=super.associateByWireValue({parameters:t,values:r,ignoreMissingParameters:n}),o=new Map;for(let a of i)o.set(a.name.wireValue,a);let s=[];for(let a of t){let c=o.get(a.name.wireValue);c!=null&&s.push(c)}return s}getRootPackageName(){let t=this.getPackagePrefixTokens();return this.joinPackageTokens(t)}getCorePackageName(){let t=this.getPackagePrefixTokens();return t.push("core"),this.joinPackageTokens(t)}getTypesPackageName(t){return this.getResourcesPackage(t,"types")}getRequestsPackageName(t){return this.getPackageLayout()==="flat"?this.getTypesPackageName(t):this.getResourcesPackage(t,"requests")}getResourcesPackage(t,r){let n=this.getPackagePrefixTokens();return this.getPackageLayout()==="flat"?t!=null&&n.push(...t.packagePath.map(i=>this.getPackageNameSegment(i))):(t!=null&&t.allParts.length>0&&n.push("resources"),t!=null&&n.push(...t.allParts.map(i=>this.getPackageNameSegment(i)))),r!=null&&n.push(r),this.joinPackageTokens(n)}getPackageName(t,r){let n=this.getPackageNameSegments(t);return n=r!=null?[...n,r]:n,[...this.getPackagePrefixTokens(),...n].join(".")}getPackageLayout(){return this.customConfig?.["package-layout"]??"nested"}shouldInlinePathParameters(){return this.customConfig?.["inline-path-parameters"]??!1}shouldInlineFileProperties(){return this.customConfig?.["inline-file-properties"]??!1}getPackageNameSegments(t){return t.packagePath.map(r=>this.getPackageNameSegment(r))}getPackageNameSegment(t){return t.camelCase.safeName.toLowerCase()}getPackagePrefixTokens(){if(this.customConfig?.["package-prefix"]!=null)return this.customConfig["package-prefix"].split(".");let t=[];return t.push("com"),t.push(...this.splitOnNonAlphaNumericChar(this.config.organization)),t.push(...this.splitOnNonAlphaNumericChar(this.getApiName())),t}getBaseNamePrefix(){return this.convertKebabCaseToUpperCamelCase(this.config.organization)+this.convertKebabCaseToUpperCamelCase(this.getApiName())}getApiName(){return ui(this.config.workspaceName)}startsWithNumber(t){return/^\d/.test(t)}splitOnNonAlphaNumericChar(t){return t.split(/[^a-zA-Z0-9]/)}convertKebabCaseToUpperCamelCase(t){return t.replace(/-([a-z])/g,(r,n)=>n.toUpperCase()).replace(/^[a-z]/,r=>r.toUpperCase())}joinPackageTokens(t){return t.map(n=>this.startsWithNumber(n)?"_"+n:n).join(".")}getName(t){return this.isReservedName(t)?"_"+t:t}isReservedName(t){return Rig.has(t)}isReservedMethodName(t){return Fig.has(t)}};jt();var gZu="com.example.usage",kig="Example",Nig="main",jig="args",AZu="client",Qig={type:"primitive",value:"STRING"};function yZu(e){let t=e;for(;t.type==="optional"||t.type==="nullable";)t=t.value;return t}function Mig(e){if(e.type==="optional"&&e.value.type==="list"){let t=e.value.value,r=yZu(t);return r===t?e:{type:"optional",value:{type:"list",value:r}}}if(e.type==="list"){let t=yZu(e.value);return t===e.value?e:{type:"list",value:t}}return e}var lgi=class{context;formatter;constructor({context:t,formatter:r}){this.context=t,this.formatter=r}async generateSnippet({endpoint:t,request:r,options:n}){let i=this.getConfig(n);return await this.buildCodeBlock({endpoint:t,snippet:r,options:n}).toStringAsync({packageName:i.fullStylePackageName??gZu,customConfig:this.context.customConfig,formatter:this.formatter})}generateSnippetSync({endpoint:t,request:r,options:n}){let i=this.getConfig(n);return this.buildCodeBlock({endpoint:t,snippet:r,options:n}).toString({packageName:i.fullStylePackageName??gZu,customConfig:this.context.customConfig,formatter:this.formatter})}async generateSnippetAst({endpoint:t,request:r,options:n}){throw new Error("Unsupported")}buildCodeBlock({endpoint:t,snippet:r,options:n}){let i=pr.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 FS.Concise:return i;case FS.Full:return this.buildFullCodeBlock({body:i,options:n});default:xe(o)}}constructClient({endpoint:t,snippet:r}){let n=t.auth?.type==="oauth";return pr.codeblock(i=>{if(i.writeNode(this.context.getRootClientClassReference()),i.write(` ${AZu} = `),n&&r.auth?.type==="oauth"){let o=r.auth;i.writeNode(this.context.getRootClientClassReference()),i.write(`.withCredentials("${o.clientId}", "${o.clientSecret}")`),i.writeNewLineIfLastLineNot(),i.indent();let s=this.getRootClientBuilderArgsExcludingAuth({endpoint:t,snippet:r});for(let a of s)i.write(`.${a.name}(`),a.value.shouldWriteInLine()||i.newLine(),i.writeNode(a.value),a.value.shouldWriteInLine()||i.newLine(),i.writeLine(")");i.writeLine(".build()"),i.dedent()}else i.writeNode(pr.TypeLiteral.builder({classReference:this.context.getRootClientClassReference(),parameters:this.getRootClientBuilderArgs({endpoint:t,snippet:r})}))})}getRootClientBuilderArgsExcludingAuth({endpoint:t,snippet:r}){let n=[],i=this.getRootClientBaseUrlArg({baseUrl:r.baseURL,environment:r.environment});i!=null&&n.push(i),this.context.errors.scope(ps.Headers),this.context.ir.headers!=null&&r.headers!=null&&n.push(...this.getRootClientHeaderArgs({headers:this.context.ir.headers,values:r.headers})),this.context.errors.unscope();let o=new Set;if([...this.context.ir.pathParameters??[],...t.request.pathParameters??[]].forEach(a=>{a.variable!=null&&o.add(a.variable)}),this.context.ir.variables!=null&&this.context.ir.variables.length>0){for(let a of this.context.ir.variables)if(o.has(a.id)){let c=a.name.camelCase.unsafeName;n.push({name:c,value:pr.TypeLiteral.string(`YOUR_${a.name.screamingSnakeCase.unsafeName}`)})}}if(this.context.errors.scope(ps.PathParameters),this.context.ir.pathParameters!=null&&this.context.ir.pathParameters.length>0){let a=this.context.ir.pathParameters.filter(c=>c.variable==null);a.length>0&&n.push(...this.getPathParameters({namedParameters:a,snippet:r}))}return this.context.errors.unscope(),n}buildFullCodeBlock({body:t,options:r}){let n=this.getConfig(r),i=pr.class_({name:n.fullStyleClassName??kig,access:pr.Access.Public}),o=pr.parameter({name:jig,type:pr.Type.array(pr.Type.string())});return i.addMethod(pr.method({name:Nig,access:pr.Access.Public,static_:!0,parameters:[o],body:t})),i}getRootClientBuilderArgs({endpoint:t,snippet:r}){let n=[];t.auth!=null&&(r.auth!=null?n.push(...this.getRootClientAuthArgs({auth:t.auth,values:r.auth})):this.context.errors.add({severity:kr.Warning,message:`Auth with ${t.auth.type} configuration is required for this endpoint`}));let i=this.getRootClientBaseUrlArg({baseUrl:r.baseURL,environment:r.environment});i!=null&&n.push(i),this.context.errors.scope(ps.Headers),this.context.ir.headers!=null&&r.headers!=null&&n.push(...this.getRootClientHeaderArgs({headers:this.context.ir.headers,values:r.headers})),this.context.errors.unscope();let o=new Set;if([...this.context.ir.pathParameters??[],...t.request.pathParameters??[]].forEach(a=>{a.variable!=null&&o.add(a.variable)}),this.context.ir.variables!=null&&this.context.ir.variables.length>0){for(let a of this.context.ir.variables)if(o.has(a.id)){let c=a.name.camelCase.unsafeName;n.push({name:c,value:pr.TypeLiteral.string(`YOUR_${a.name.screamingSnakeCase.unsafeName}`)})}}if(this.context.errors.scope(ps.PathParameters),this.context.ir.pathParameters!=null&&this.context.ir.pathParameters.length>0){let a=this.context.ir.pathParameters.filter(c=>c.variable==null);a.length>0&&n.push(...this.getPathParameters({namedParameters:a,snippet:r}))}return this.context.errors.unscope(),n}getRootClientBaseUrlArg({baseUrl:t,environment:r}){if(t!=null&&r!=null){this.context.errors.add({severity:kr.Critical,message:"Cannot specify both baseUrl and environment options"});return}if(t!=null){if(this.context.ir.environments?.environments.type==="multipleBaseUrls"){this.context.errors.add({severity:kr.Critical,message:"The Java SDK doesn't support a baseUrl when multiple URL environments are configured"});return}return{name:"url",value:pr.TypeLiteral.string(t)}}if(r!=null){if(this.context.isSingleEnvironmentID(r)){let n=this.context.getEnvironmentTypeReferenceFromID(r);if(n==null){this.context.errors.add({severity:kr.Warning,message:`Environment ${JSON.stringify(r)} was not found`});return}return{name:"environment",value:pr.TypeLiteral.reference(n)}}if(this.context.isMultiEnvironmentValues(r))return this.context.validateMultiEnvironmentUrlValues(r)?{name:"environment",value:pr.TypeLiteral.reference(pr.instantiateClass({classReference:this.context.getEnvironmentClassReference(),arguments_:Object.values(r).map(n=>this.context.dynamicTypeLiteralMapper.convert({typeReference:Qig,value:n}))}))}:void 0}}getRootClientAuthArgs({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.getRootClientBasicAuthArgs({auth:t,values:r}):[];case"bearer":return r.type==="bearer"?this.getRootClientBearerAuthArgs({auth:t,values:r}):[];case"header":return r.type==="header"?this.getRootClientHeaderAuthArgs({auth:t,values:r}):[];case"oauth":return r.type==="oauth"?this.getRootClientOAuthArgs({auth:t,values:r}):[];case"inferred":return this.addWarning("The Java SDK Generator does not support Inferred auth scheme yet"),[];default:xe(t)}}addError(t){this.context.errors.add({severity:kr.Critical,message:t})}addWarning(t){this.context.errors.add({severity:kr.Warning,message:t})}getRootClientBasicAuthArgs({auth:t,values:r}){let n=t,i=!!n.usernameOmit,o=!!n.passwordOmit,s=[];return i||s.push(`"${r.username}"`),o||s.push(`"${r.password}"`),s.length===0?[]:[{name:"credentials",value:pr.TypeLiteral.raw(s.join(", "))}]}getRootClientBearerAuthArgs({auth:t,values:r}){return[{name:this.context.getMethodName(t.token),value:pr.TypeLiteral.string(r.token)}]}getRootClientHeaderAuthArgs({auth:t,values:r}){return[{name:this.context.getMethodName(t.header.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:t.header.typeReference,value:r.value})}]}getRootClientOAuthArgs({auth:t,values:r}){return[{name:this.context.getMethodName(t.clientId),value:pr.TypeLiteral.string(r.clientId)},{name:this.context.getMethodName(t.clientSecret),value:pr.TypeLiteral.string(r.clientSecret)}]}getRootClientHeaderArgs({headers:t,values:r}){let n=[];for(let i of t){let o=r[i.name.wireValue],s=this.getRootClientHeaderArg({header:i,value:o});s!=null&&n.push({name:this.context.getMethodName(i.name.name),value:s})}return n}getRootClientHeaderArg({header:t,value:r}){let n=this.context.dynamicTypeLiteralMapper.convert({typeReference:t.typeReference,value:r});if(!pr.TypeLiteral.isNop(n))return n}callMethod({endpoint:t,snippet:r}){return pr.invokeMethod({on:pr.codeblock(AZu),method:this.getMethod({endpoint:t}),arguments_:this.getMethodArgs({endpoint:t,snippet:r})})}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:xe(t.request)}}getMethodArgsForBodyRequest({request:t,snippet:r}){let n=[];this.context.errors.scope(ps.PathParameters);let i=(t.pathParameters??[]).filter(s=>s.variable==null);i.length>0&&n.push(...this.getPathParameters({namedParameters:i,snippet:r}).map(s=>s.value)),this.context.errors.unscope(),this.context.errors.scope(ps.RequestBody),t.body!=null&&n.push(this.getBodyRequestArg({body:t.body,value:r.requestBody})),this.context.errors.unscope();let o=this.getRequestOptionsArg({request:t,snippet:r});return o!=null&&n.push(o),n}usesOptionalNullable(){return this.context.customConfig?.["collapse-optional-nullable"]===!0}getBodyRequestArg({body:t,value:r}){switch(t.type){case"bytes":return this.getBytesBodyRequestArg({value:r});case"typeReference":{if(t.value.type==="optional"){let n=this.usesOptionalNullable()&&(t.value.value.type==="optional"||t.value.value.type==="nullable");if(r==null)return n?this.context.getOptionalNullableAbsent():pr.TypeLiteral.reference(pr.invokeMethod({on:pr.classReference({name:"Optional",packageName:"java.util"}),method:"empty",arguments_:[]}));let i=this.context.dynamicTypeLiteralMapper.convert({typeReference:t.value.value,value:r,as:"request",isCollapsedOptionalNullable:n}),o=i.toString({packageName:"com.example",customConfig:this.context.customConfig});return o.includes("Optional.empty()")||o.includes("OptionalNullable.absent()")?i:n?this.context.getOptionalNullableOf(i):pr.TypeLiteral.optional({value:i,useOf:!0})}return this.context.dynamicTypeLiteralMapper.convert({typeReference:t.value,value:r,as:"request"})}default:xe(t)}}getBytesBodyRequestArg({value:t}){return t==null?pr.TypeLiteral.bytes(""):typeof t!="string"?(this.context.errors.add({severity:kr.Critical,message:`Expected bytes value to be a string, got ${typeof t}`}),pr.TypeLiteral.nop()):pr.TypeLiteral.bytes(t)}getMethodArgsForInlinedRequest({request:t,snippet:r}){let n=[],{inlinePathParameters:i,inlineFileProperties:o}={inlinePathParameters:this.context.shouldInlinePathParameters(),inlineFileProperties:this.context.shouldInlineFileProperties()};this.context.errors.scope(ps.PathParameters);let s=[],a=(t.pathParameters??[]).filter(u=>u.variable==null);a.length>0&&s.push(...this.getPathParameters({namedParameters:a,snippet:r})),this.context.errors.unscope(),this.context.errors.scope(ps.RequestBody);let c=this.getFilePropertyInfo({request:t,snippet:r});return this.context.errors.unscope(),this.context.includePathParametersInWrappedRequest({request:t,inlinePathParameters:i})||n.push(...s.map(u=>u.value)),o||n.push(...c.fileFields.map(u=>pr.TypeLiteral.isNop(u.value)?pr.TypeLiteral.raw("null"):u.value)),n.push(this.getInlinedRequestArg({request:t,snippet:r,pathParameterFields:this.context.includePathParametersInWrappedRequest({request:t,inlinePathParameters:i})?s:[],filePropertyInfo:c})),n}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}){this.context.errors.scope(ps.QueryParameters);let s=this.context.associateQueryParametersByWireValue({parameters:t.queryParameters??[],values:r.queryParameters??{}}).filter(m=>!this.context.isDirectLiteral(m.typeReference)),c=this.context.sortTypeInstancesByRequiredFirst(s,t.queryParameters??[]).map(m=>({name:this.context.getMethodName(m.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:Mig(m.typeReference),value:m.value,as:"request"})}));this.context.errors.unscope(),this.context.errors.scope(ps.Headers);let l=this.context.associateByWireValue({parameters:t.headers??[],values:r.headers??{}}).filter(m=>!this.context.isDirectLiteral(m.typeReference)),d=this.context.sortTypeInstancesByRequiredFirst(l,t.headers??[]).map(m=>({name:this.context.getMethodName(m.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:m.typeReference,value:m.value,as:"request"})}));this.context.errors.unscope(),this.context.errors.scope(ps.RequestBody);let f=t.body!=null?this.getInlinedRequestBodyBuilderParameters({body:t.body,value:r.requestBody,filePropertyInfo:i}):[];return this.context.errors.unscope(),pr.TypeLiteral.builder({classReference:pr.classReference({name:this.context.getClassName(t.declaration.name),packageName:this.context.getRequestsPackageName(t.declaration.fernFilepath)}),parameters:[...n,...d,...c,...f]})}getRequestOptionsArg({request:t,snippet:r}){let n="headers"in t?t.headers??[]:[];if(n.length===0||Object.keys(r.headers??{}).length===0)return;this.context.errors.scope(ps.Headers);let i=this.context.associateByWireValue({parameters:n,values:r.headers??{}});if(this.context.errors.unscope(),i.length===0)return;let o=pr.classReference({name:"RequestOptions",packageName:this.context.getCorePackageName()}),s=pr.invokeMethod({on:o,method:"builder",arguments_:[]});for(let c of i)s=pr.invokeMethod({on:s,method:"addHeader",arguments_:[pr.TypeLiteral.string(c.name.wireValue),this.context.dynamicTypeLiteralMapper.convert(c)]});let a=pr.invokeMethod({on:s,method:"build",arguments_:[]});return pr.TypeLiteral.reference(a)}getInlinedRequestBodyBuilderParameters({body:t,value:r,filePropertyInfo:n}){switch(t.type){case"properties":return this.getInlinedRequestBodyPropertyBuilderParameters({parameters:t.value,value:r});case"referenced":return[this.getReferencedRequestBodyPropertyBuilderParameter({body:t,value:r})];case"fileUpload":return this.getFileUploadRequestBodyBuilderParameters({filePropertyInfo:n});default:xe(t)}}getFileUploadRequestBodyBuilderParameters({filePropertyInfo:t}){return this.context.shouldInlineFileProperties()?[...t.fileFields,...t.bodyPropertyFields]:t.bodyPropertyFields}getReferencedRequestBodyPropertyBuilderParameter({body:t,value:r}){return{name:this.context.getMethodName(t.bodyKey),value:this.getReferencedRequestBodyPropertyTypeLiteral({body:t.bodyType,value:r})}}getReferencedRequestBodyPropertyTypeLiteral({body:t,value:r}){switch(t.type){case"bytes":return this.getBytesBodyRequestArg({value:r});case"typeReference":return this.context.dynamicTypeLiteralMapper.convert({typeReference:t.value,value:r,as:"request"});default:xe(t)}}getInlinedRequestBodyPropertyBuilderParameters({parameters:t,value:r}){let i=this.context.associateByWireValue({parameters:t,values:this.context.getRecord(r)??{}}).filter(s=>!this.context.isDirectLiteral(s.typeReference));return this.context.sortTypeInstancesByRequiredFirst(i,t).map(s=>({name:this.context.getMethodName(s.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:s.typeReference,value:s.value,as:"request"})}))}getPathParameters({namedParameters:t,snippet:r}){let n=[],i=this.context.associateByWireValue({parameters:t,values:r.pathParameters??{},ignoreMissingParameters:!0});for(let o of i)n.push({name:this.context.getMethodName(o.name.name),value:this.context.dynamicTypeLiteralMapper.convert(o)});return n}getMethod({endpoint:t}){return t.declaration.fernFilepath.allParts.length>0?`${t.declaration.fernFilepath.allParts.map(r=>`${this.context.getMethodName(r)}()`).join(".")}.${this.context.getMethodName(t.declaration.name)}`:this.context.getMethodName(t.declaration.name)}getStyle(t){return t.style??this.context.options.style??FS.Full}getConfig(t){return t.config??this.context.options.config??{}}};var EYt=class extends WC{constructor({ir:t,config:r,options:n={}}){super(new ugi({ir:t,config:r,options:n}))}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 lgi({context:t})}};aS();_t();var a8e=require("fs/promises"),bZu=we(require("path"),1);var pgi=class{context;ir;generatorConfig;dynamicSnippetsGenerator;constructor(t,r,n){this.context=t,this.ir=r,this.generatorConfig=n,this.dynamicSnippetsGenerator=new EYt({ir:wB(this.ir),config:this.generatorConfig})}async generateTests({outputDir:t,requests:r}){this.context.logger.debug("Generating dynamic snippet tests...");let n=await this.initializeProject(t);for(let[s,{endpointId:a,request:c}]of r.entries())try{let u=CB(c);if(u==null)continue;let l=await this.dynamicSnippetsGenerator.generate(u,{config:{fullStyleClassName:`Example${s}`,fullStylePackageName:"com.snippets"},style:FS.Full,endpointId:a}),p=this.getTestFilePath({absolutePathToOutputDir:n,idx:s});await(0,a8e.mkdir)(bZu.default.dirname(p),{recursive:!0}),await(0,a8e.writeFile)(p,l.snippet)}catch(u){this.context.logger.error(`Failed to generate dynamic snippet for endpoint ${JSON.stringify(c.endpoint)}: ${u}`)}this.context.logger.debug("Dynamic snippets test files generated, running spotlessApply...");let i=Ze(t,Fe.of("gradlew"));if(await sr(i,"file"))try{let a=this.generatorConfig.customConfig?.["enable-gradle-profiling"]===!0,c=[":spotlessApply"];if(a&&(c.push("--profile"),this.context.logger.info("Running spotlessApply with profiling enabled")),await hu(this.context.logger,"./gradlew",c,{doNotPipeOutput:!1,cwd:t}),this.context.logger.debug("Successfully ran spotlessApply"),a){let u=Ze(t,Fe.of("build/reports")),l=Ze(t,Fe.of("reports"));await sr(u,"directory")?(await(0,a8e.cp)(u,l,{recursive:!0}),this.context.logger.info("Gradle profiling report copied to reports/")):this.context.logger.info("No profiling report found in build/reports/")}}catch(s){this.context.failAndThrow("Failed to run spotlessApply",s,{code:D.Code.InternalError})}this.context.logger.debug("Done generating dynamic snippet tests")}async initializeProject(t){let r=Ze(t,Fe.of("src/main/java/com/snippets"));return await(0,a8e.mkdir)(r,{recursive:!0}),r}getTestFilePath({absolutePathToOutputDir:t,idx:r}){return Ze(t,Fe.of(`Example${r}.java`))}};tr();var EZu="self",vZu="static";var IZu=new Set(["abstract","and","array","as","break","callable","case","catch","class","clone","const","continue","declare","default","die","do","echo","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","eval","exit","extends","final","finally","fn","for","foreach","function","global","goto","if","implements","include","include_once","instanceof","insteadof","interface","isset","list","match","namespace","new","or","print","private","protected","public","readonly","require","require_once","return","static","switch","throw","trait","try","unset","use","var","while","xor","yield","yield_from","__halt_compiler"]);var An={};te(An,{Access:()=>aFe,Array:()=>u8e,AstNode:()=>mp,Attribute:()=>l8e,Class:()=>jhe,ClassInstantiation:()=>fae,ClassReference:()=>kS,CodeBlock:()=>sk,DataClass:()=>c8e,Enum:()=>p8e,Field:()=>f8e,Interface:()=>d8e,Map:()=>m8e,Method:()=>Lhe,MethodInvocation:()=>Mhe,Parameter:()=>Qhe,Trait:()=>h8e,Type:()=>YK,TypeLiteral:()=>JK,Writer:()=>pae,array:()=>Wig,assignVariable:()=>aog,attribute:()=>Hig,classReference:()=>Xig,class_:()=>Kig,codeblock:()=>g8e,dataClass:()=>Zig,enum_:()=>$ig,escapePhpString:()=>ubs,field:()=>eog,instantiateClass:()=>TZu,interface_:()=>Yig,invokeMethod:()=>tog,map:()=>nog,mergeArrays:()=>log,method:()=>iog,parameter:()=>oog,string:()=>uog,ternary:()=>sog,this_:()=>pog,throwException:()=>rog,trait:()=>Jig,variable:()=>cog});function CZu(e){return{namespace:e.substring(0,e.lastIndexOf("\\")),name:e.substring(e.lastIndexOf("\\")+1)}}var pae=class extends RS{namespace;rootNamespace;customConfig;references={};constructor({namespace:t,rootNamespace:r,customConfig:n}){super(),this.namespace=t,this.rootNamespace=r,this.customConfig=n}addReference(t){if(t.namespace==null)return;if(Object.keys(this.references).filter(o=>{let s=CZu(o);return s.namespace!==t.namespace&&s.name===t.name}).length>0){t.requireFullyQualified();return}let n=t.namespace===""?t.name:`${t.namespace}\\${t.name}`;(this.references[n]??=[]).push(t)}toString(t=!1){if(t)return this.buffer;let r=`namespace ${this.namespace};`,n=this.stringifyImports();return n.length>0?`${r}
|
|
4683
|
+
`)}};as();as();var mZu=Bt.strictObject({title:Bt.string(),content:Bt.string()});var nbs=Bt.object({"base-api-exception-class-name":Bt.string().optional(),"base-exception-class-name":Bt.string().optional(),"client-class-name":Bt.string().optional(),"exported-client-class-name":Bt.string().optional(),"inline-file-properties":Bt.boolean().optional(),"inline-path-parameters":Bt.boolean().optional(),"package-layout":Bt.enum(["flat","nested"]).optional(),"package-prefix":Bt.string().optional(),"use-local-date-for-dates":Bt.boolean().optional(),"custom-dependencies":Bt.array(Bt.string()).optional(),"custom-plugins":Bt.array(Bt.string()).optional(),"disable-required-property-builder-checks":Bt.boolean().optional(),"enable-forward-compatible-enums":Bt.boolean().optional(),"enable-inline-types":Bt.boolean().optional(),"enable-public-constructors":Bt.boolean().optional(),"generate-unknown-as-json-node":Bt.boolean().optional(),"json-include":Bt.enum(["non-absent","non-empty"]).optional(),"enable-extensible-builders":Bt.boolean().optional(),"use-default-request-parameter-values":Bt.boolean().optional(),"enable-wire-tests":Bt.boolean().default(!1),"collapse-optional-nullable":Bt.boolean().optional(),"custom-readme-sections":Bt.array(mZu).optional(),"custom-pager-name":Bt.string().optional(),"offset-semantics":Bt.enum(["item-index","page-index"]).optional(),"default-timeout-in-seconds":Bt.number().optional(),"gradle-distribution-url":Bt.string().optional(),"gradle-plugin-management":Bt.string().optional(),"gradle-central-dependency-management":Bt.boolean().optional(),"output-directory":Bt.enum(["source-root","project-root"]).optional(),"custom-interceptors":Bt.boolean().optional(),"omit-fern-headers":Bt.boolean().optional(),"retry-status-codes":Bt.optional(Bt.enum(["legacy","recommended"])),"enable-gradle-profiling":Bt.boolean().optional(),"wrapped-aliases":Bt.boolean().optional(),maxRetries:Bt.number().int().min(0).optional()});var pr={};te(pr,{Access:()=>ibs,AstNode:()=>Fv,Class:()=>t8e,ClassInstantiation:()=>r8e,ClassReference:()=>Vg,CodeBlock:()=>n8e,Method:()=>i8e,MethodInvocation:()=>o8e,Parameter:()=>s8e,Type:()=>bYt,TypeLiteral:()=>CL,Writer:()=>e8e,classReference:()=>Tig,class_:()=>Sig,codeblock:()=>xig,instantiateClass:()=>Big,invokeMethod:()=>Oig,method:()=>Pig,parameter:()=>Dig});var Fv=class extends Dv{async toStringAsync({packageName:t,customConfig:r,formatter:n}){let i=new yYt({packageName:t,customConfig:r,formatter:n});return this.write(i),i.toStringAsync()}toString({packageName:t,customConfig:r,formatter:n}){let i=new yYt({packageName:t,customConfig:r,formatter:n});return this.write(i),i.toString()}};var t8e=class extends Fv{name;access;methods=[];constructor({name:t,access:r}){super(),this.name=t,this.access=r}write(t){if(t.write(`${this.access} class ${this.name}`),this.isEmpty()){t.writeLine(" {}");return}t.writeLine(" {"),t.indent();for(let r of this.methods)t.writeNode(r),t.newLine();t.dedent(),t.write("}")}addMethod(t){this.methods.push(t)}isEmpty(){return this.methods.length===0}};var ibs={Public:"public",Protected:"protected",Private:"private"};jt();var Vg=class extends Fv{name;packageName;fullyQualified;constructor({name:t,packageName:r,fullyQualified:n}){super(),this.name=t,this.packageName=r,this.fullyQualified=n??!1}write(t){if(t.addImport(`${this.packageName}.${this.name}`),this.fullyQualified){t.write(`${this.packageName}.${this.name}`);return}t.write(this.name)}};jt();var bYt=class extends Fv{internalType;constructor(t){super(),this.internalType=t}write(t){switch(this.internalType.type){case"array":t.writeNode(this.internalType.value),t.write("[]");break;case"bigInteger":t.writeNode(sig);break;case"boolean":t.write("Boolean");break;case"bytes":t.write("byte[]");break;case"date":t.write("String");break;case"dateTime":t.writeNode(uig);break;case"double":t.write("Double");break;case"float":t.write("Float");break;case"generic":t.writeNode(this.internalType.value),t.write("<");for(let[r,n]of this.internalType.parameters.entries())t.writeNode(n),r<this.internalType.parameters.length-1&&t.write(", ");t.write(">");break;case"inputStream":t.writeNode(fig);break;case"integer":t.write("Integer");break;case"iterable":this.writeIterable({writer:t,iterable:this.internalType});break;case"list":{this.writeList({writer:t,list:this.internalType});break}case"long":{t.write("Long");break}case"map":{this.writeMap({writer:t,map:this.internalType});break}case"object":{t.write("Object");break}case"optional":{this.writeOptional({writer:t,optional:this.internalType});break}case"reference":t.writeNode(this.internalType.value);break;case"set":{this.writeSet({writer:t,set:this.internalType});break}case"string":t.write("String");break;case"uuid":t.writeNode(pig);break;case"void":t.write("Void");break;default:xe(this.internalType)}}isOptional(){return this.internalType.type==="optional"}static array(t){return new this({type:"array",value:t})}static bigInteger(){return new this({type:"bigInteger"})}static boolean(){return new this({type:"boolean"})}static bytes(){return new this({type:"bytes"})}static date(){return new this({type:"date"})}static dateTime(){return new this({type:"dateTime"})}static double(){return new this({type:"double"})}static float(){return new this({type:"float"})}static integer(){return new this({type:"integer"})}static list(t){return new this({type:"list",value:t})}static long(){return new this({type:"long"})}static map(t,r){return new this({type:"map",keyType:t,valueType:r})}static object(){return new this({type:"object"})}static optional(t){return this.isAlreadyOptional(t)?t:new this({type:"optional",value:t})}static reference(t){return new this({type:"reference",value:t})}static generic(t,r){return new this({type:"generic",value:t,parameters:r})}static set(t){return new this({type:"set",value:t})}static string(){return new this({type:"string"})}static uuid(){return new this({type:"uuid"})}static void(){return new this({type:"void"})}static iterable(t){return new this({type:"iterable",value:t})}static inputStream(){return new this({type:"inputStream"})}writeList({writer:t,list:r}){t.writeNode(aig),t.write("<"),r.value.write(t),t.write(">")}writeMap({writer:t,map:r}){t.writeNode(cig),t.write("<"),r.keyType.write(t),t.write(", "),r.valueType.write(t),t.write(">")}writeOptional({writer:t,optional:r}){t.writeNode(obs),t.write("<"),r.value.write(t),t.write(">")}writeIterable({writer:t,iterable:r}){t.writeNode(dig),t.write("<"),r.value.write(t),t.write(">")}writeSet({writer:t,set:r}){t.writeNode(lig),t.write("<"),r.value.write(t),t.write(">")}static isAlreadyOptional(t){return t.internalType.type==="optional"}},ngi=new Vg({name:"Arrays",packageName:"java.util"}),sig=new Vg({name:"BigInteger",packageName:"java.math"}),fo1=new Vg({name:"HashMap",packageName:"java.util"}),aig=new Vg({name:"List",packageName:"java.util"}),cig=new Vg({name:"Map",packageName:"java.util"}),uig=new Vg({name:"OffsetDateTime",packageName:"java.time"}),obs=new Vg({name:"Optional",packageName:"java.util"}),lig=new Vg({name:"Set",packageName:"java.util"}),pig=new Vg({name:"UUID",packageName:"java.util"}),fig=new Vg({name:"InputStream",packageName:"java.io"}),dig=new Vg({name:"Iterable",packageName:"java.lang"});var CL=class e extends Fv{internalType;constructor(t){super(),this.internalType=t}write(t){switch(this.internalType.type){case"bigInteger":this.writeBigInteger({writer:t,bigInteger:this.internalType});break;case"boolean":t.write(this.internalType.value.toString());break;case"builder":this.writeBuilder({writer:t,builder:this.internalType});break;case"bytes":t.write(`"${this.internalType.value}".getBytes()`);break;case"class":{this.writeClass({writer:t,class_:this.internalType});break}case"date":this.writeDate({writer:t,date:this.internalType});break;case"dateTime":this.writeDateTime({writer:t,dateTime:this.internalType});break;case"double":{let r=this.internalType.value.toString();!r.includes(".")&&!r.includes("e")&&!r.includes("E")?t.write(`${r}.0`):t.write(r);break}case"enum":this.writeEnum({writer:t,enum_:this.internalType});break;case"float":t.write(`${this.internalType.value}f`);break;case"integer":t.write(Math.floor(this.internalType.value).toString());break;case"list":{this.writeList({writer:t,list:this.internalType});break}case"long":{t.write(`${Math.floor(this.internalType.value)}L`);break}case"map":{this.writeMap({writer:t,map:this.internalType});break}case"optional":{this.writeOptional({writer:t,optional:this.internalType});break}case"raw":{this.internalType.value instanceof Fv?t.writeNode(this.internalType.value):t.write(this.internalType.value);break}case"reference":t.writeNode(this.internalType.value);break;case"set":{this.writeSet({writer:t,set:this.internalType});break}case"string":t.write(`"${this.escapeString(this.internalType.value)}"`);break;case"unknown":this.writeUnknown({writer:t,value:this.internalType.value});break;case"uuid":this.writeUUID({writer:t,uuid:this.internalType});break;case"nop":break;default:xe(this.internalType)}}isOptional(){return this.internalType.type==="optional"}static bigInteger(t){return new this({type:"bigInteger",value:t})}static boolean(t){return new this({type:"boolean",value:t})}static builder({classReference:t,parameters:r}){return new this({type:"builder",classReference:t,parameters:r})}static bytes(t){return new this({type:"bytes",value:t})}static class_({reference:t,parameters:r}){return new this({type:"class",reference:t,parameters:r})}static date(t){return new this({type:"date",value:t})}static dateTime(t){return new this({type:"dateTime",value:t})}static double(t){return new this({type:"double",value:t})}static enum_({classReference:t,value:r}){return new this({type:"enum",classReference:t,value:r})}static float(t){return new this({type:"float",value:t})}static integer(t){return new this({type:"integer",value:t})}static list({valueType:t,values:r,isParameter:n}){return new this({type:"list",valueType:t,values:r,isParameter:n})}static long(t){return new this({type:"long",value:t})}static map({keyType:t,valueType:r,entries:n}){return new this({type:"map",keyType:t,valueType:r,entries:n})}static optional({value:t,useOf:r}){return this.isAlreadyOptional(t)?t:new this({type:"optional",value:t,useOf:r})}static raw(t){return new this({type:"raw",value:t})}static reference(t){return new this({type:"reference",value:t})}static set({valueType:t,values:r}){return new this({type:"set",valueType:t,values:r})}static string(t){return new this({type:"string",value:t})}static unknown(t){return new this({type:"unknown",value:t})}static uuid(t){return new this({type:"uuid",value:t})}static nop(){return new this({type:"nop"})}static isNop(t){return t.internalType.type==="nop"}shouldWriteInLine(){switch(this.internalType.type){case"bigInteger":case"boolean":case"bytes":case"date":case"dateTime":case"double":case"enum":case"float":case"integer":case"long":case"nop":case"raw":case"string":case"unknown":case"uuid":return!0;case"optional":return this.internalType.value.shouldWriteInLine();case"builder":case"class":case"list":case"map":case"reference":case"set":return!1;default:xe(this.internalType)}}writeBigInteger({writer:t,bigInteger:r}){t.write("new "),t.writeNode(pr.instantiateClass({classReference:mig,arguments_:[e.string(r.value)]}))}writeBuilder({writer:t,builder:r}){t.writeNode(r.classReference),t.writeNewLineIfLastLineNot(),t.indent(),this.writeBuilderParameters({writer:t,parameters:this.orderBuilderParameters(Eig({parameters:r.parameters}))}),t.dedent()}writeBuilderParameters({writer:t,parameters:r}){t.writeLine(".builder()");for(let n of r)t.write(`.${n.name}(`),n.value.shouldWriteInLine()||t.newLine(),t.indent(),t.writeNode(n.value),t.dedent(),n.value.shouldWriteInLine()||t.newLine(),t.writeLine(")");t.writeNewLineIfLastLineNot(),t.write(".build()")}orderBuilderParameters(t){return t.some(n=>!n.value.isOptional()&&!this.isCollection(n.value))?t.sort((n,i)=>{let o=this.isNonRequired(n.value),s=this.isNonRequired(i.value);return o&&!s?1:!o&&s?-1:0}):t.sort((n,i)=>{let o=n.value.isOptional(),s=i.value.isOptional();return o&&!s?1:!o&&s?-1:0})}isCollection(t){let r=t.internalType.type;return r==="list"||r==="set"||r==="map"}isNonRequired(t){return t.isOptional()||this.isCollection(t)}writeClass({writer:t,class_:r}){let n=big({parameters:r.parameters});t.writeNode(pr.instantiateClass({classReference:r.reference,arguments_:n.map(i=>i.value)}))}writeDate({writer:t,date:r}){t.writeNode(pr.invokeMethod({on:gig,method:"parse",arguments_:[e.string(r.value)]}))}writeDateTime({writer:t,dateTime:r}){t.writeNode(pr.invokeMethod({on:Aig,method:"parse",arguments_:[e.string(r.value)]}))}writeEnum({writer:t,enum_:r}){t.writeNode(r.classReference),t.write("."+r.value)}writeList({writer:t,list:r}){this.writeIterable({writer:t,iterable:r})}writeMap({writer:t,map:r}){let n=vig({entries:r.entries});if(n.length===0){t.write("new "),t.writeNode(igi),t.write("<"),t.writeNode(r.keyType),t.write(", "),t.writeNode(r.valueType),t.write(">()");return}t.write("new "),t.writeNode(igi),t.write("<"),t.writeNode(r.keyType),t.write(", "),t.writeNode(r.valueType),t.writeLine(">() {{"),t.indent();for(let i of n)t.write("put("),t.writeNode(i.key),t.write(", "),t.writeNode(i.value),t.writeLine(");");t.dedent(),t.write("}}")}writeOptional({writer:t,optional:r}){if(!r.useOf){t.writeNode(r.value);return}t.writeNode(pr.invokeMethod({on:obs,method:"of",arguments_:[r.value]}))}writeSet({writer:t,set:r}){this.writeIterable({writer:t,iterable:r})}writeIterable({writer:t,iterable:r}){let n=r.type==="list"?sbs:hig,i=Iig({values:r.values});if(r.type==="list"&&r.isParameter&&i.length>0){t.writeNode(pr.invokeMethod({on:ngi,method:"asList",arguments_:i}));return}if(i.length===0){t.write("new "),t.writeNode(n),t.write("<"),t.writeNode(r.valueType),t.write(">()");return}t.write("new "),t.writeNode(n),t.write("<"),t.writeNode(r.valueType),t.writeLine(">("),t.indent(),t.writeNode(pr.invokeMethod({on:ngi,method:"asList",arguments_:i})),t.writeNewLineIfLastLineNot(),t.dedent(),t.write(")")}writeUnknown({writer:t,value:r}){switch(typeof r){case"boolean":t.write(r.toString());return;case"string":t.write(`"${this.escapeString(r)}"`);return;case"number":t.write(r.toString());return;case"object":if(r==null){t.write("null");return}if(Array.isArray(r)){this.writeUnknownArray({writer:t,value:r});return}this.writeUnknownMap({writer:t,value:r});return;default:throw new Error(`Internal error; unsupported unknown type: ${typeof r}`)}}writeUnknownArray({writer:t,value:r}){if(r.length===0){t.write("new "),t.writeNode(sbs),t.write("<Object>()");return}t.write("new "),t.writeNode(sbs),t.write("<Object>("),t.writeNode(pr.invokeMethod({on:ngi,method:"asList",arguments_:r.map(n=>e.unknown(n))})),t.write(")")}writeUnknownMap({writer:t,value:r}){let n=Object.entries(r);if(n.length===0){t.write("new "),t.writeNode(igi),t.write("<String, Object>()");return}t.writeLine("new "),t.writeNode(igi),t.write("<String, Object>() {{"),t.indent();for(let[i,o]of n)t.write(`put("${i}", `),t.writeNode(e.unknown(o)),t.writeLine(");");t.dedent(),t.write("}}")}writeUUID({writer:t,uuid:r}){t.writeNode(pr.invokeMethod({on:yig,method:"fromString",arguments_:[e.string(r.value)]}))}escapeString(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}static isAlreadyOptional(t){return t.internalType.type==="optional"}},sbs=new Vg({name:"ArrayList",packageName:"java.util"}),mig=new Vg({name:"BigInteger",packageName:"java.math"}),igi=new Vg({name:"HashMap",packageName:"java.util"}),hig=new Vg({name:"HashSet",packageName:"java.util"}),bo1=new Vg({name:"List",packageName:"java.util"}),gig=new Vg({name:"LocalDate",packageName:"java.time"}),Eo1=new Vg({name:"Map",packageName:"java.util"}),Aig=new Vg({name:"OffsetDateTime",packageName:"java.time"}),vo1=new Vg({name:"Set",packageName:"java.util"}),yig=new Vg({name:"UUID",packageName:"java.util"});function big({parameters:e}){return e.filter(t=>!CL.isNop(t.value))}function Eig({parameters:e}){return e.filter(t=>!CL.isNop(t.value))}function vig({entries:e}){return e.filter(t=>!CL.isNop(t.key)&&!CL.isNop(t.value))}function Iig({values:e}){return e.filter(t=>!CL.isNop(t))}function ogi({writer:e,arguments_:t}){let r=wig(t);if(r.length===0){e.write("()");return}if(r.some(i=>i instanceof CL&&!i.shouldWriteInLine())){Cig({writer:e,arguments_:r});return}e.write("("),r.forEach((i,o)=>{o>0&&e.write(", "),hZu({writer:e,argument:i})}),e.write(")")}function Cig({writer:e,arguments_:t}){e.writeLine("("),e.indent(),t.forEach((r,n)=>{n>0&&e.writeLine(","),hZu({writer:e,argument:r})}),e.dedent(),t.length>0&&e.newLine(),e.write(")")}function hZu({writer:e,argument:t}){GRe(t)?e.writeNodeOrString(t.assignment):t.write(e)}function wig(e){return e.filter(t=>!(t instanceof CL&&CL.isNop(t)))}var r8e=class extends Fv{classReference;arguments_;constructor({classReference:t,arguments_:r}){super(),this.classReference=t,this.arguments_=r}write(t){t.writeNode(this.classReference),ogi({writer:t,arguments_:this.arguments_})}};var n8e=class extends Fv{arg;constructor(t){super(),this.arg=t}write(t){return new C0(this.arg).write(t)}};var i8e=class extends Fv{name;access;parameters;body;return_;static_;constructor({name:t,access:r,parameters:n,body:i,static_:o,return_:s}){super(),this.name=t,this.access=r,this.parameters=n,this.body=i,this.return_=s,this.static_=o??!1}write(t){if(t.write(`${this.access} `),this.static_&&t.write("static "),this.return_!=null?t.writeNode(this.return_):t.write("void"),t.write(` ${this.name}`),this.parameters.length===0)t.write("()");else if(this.parameters.length===1){if(t.write("("),this.parameters[0]==null)throw new Error("Cannot render parameter "+this.parameters[0]);t.writeNode(this.parameters[0]),t.write(")")}else t.writeLine("("),t.indent(),this.parameters.forEach((r,n)=>{n>0&&t.writeLine(", "),t.writeNode(r)}),t.dedent(),t.write(")");if(this.body==null){t.write(";");return}t.writeLine(" {"),t.indent(),t.writeNode(this.body),t.writeNewLineIfLastLineNot(),t.dedent(),t.write("}")}};var o8e=class extends Fv{on;method;arguments_;constructor({method:t,arguments_:r,on:n}){super(),this.on=n,this.method=t,this.arguments_=r}write(t){this.on.write(t),t.write("."),t.write(this.method),ogi({writer:t,arguments_:this.arguments_})}};var s8e=class extends Fv{name;type;constructor({name:t,type:r}){super(),this.name=t,this.type=r}write(t){t.writeNode(this.type),t.write(` ${this.name}`)}};function xig(e){return new n8e(e)}function Sig(e){return new t8e(e)}function Tig(e){return new Vg(e)}function Big(e){return new r8e(e)}function Oig(e){return new o8e(e)}function Pig(e){return new i8e(e)}function Dig(e){return new s8e(e)}co();jt();var sgi=class{context;constructor({context:t}){this.context=t}usesOptionalNullable(){return this.context.customConfig?.["collapse-optional-nullable"]===!0}wrapInOptionalIfNotNop(t,r=!1,n=!1){return pr.TypeLiteral.isNop(t)?t:n?this.context.getOptionalNullableOf(t):pr.TypeLiteral.optional({value:t,useOf:r})}convert(t){if(t.value===null)return this.context.isNullable(t.typeReference)?this.context.getNullableOfNull():(this.context.errors.add({severity:kr.Critical,message:"Expected non-null value, but got null"}),pr.TypeLiteral.nop());if(t.value===void 0)return pr.TypeLiteral.nop();switch(t.typeReference.type){case"list":return this.convertList({list:t.typeReference.value,value:t.value,as:t.as});case"literal":return this.convertLiteral({literal:t.typeReference.value,value:t.value});case"map":return this.convertMap({map:t.typeReference,value:t.value,as:t.as});case"named":{let r=this.context.resolveNamedType({typeId:t.typeReference.value});return r==null?pr.TypeLiteral.nop():this.convertNamed({named:r,value:t.value,as:t.as,inUndiscriminatedUnion:t.inUndiscriminatedUnion})}case"nullable":case"optional":{if(t.value===void 0||typeof t.value=="object"&&t.value!==null&&Object.keys(t.value).length===0&&t.typeReference.value.type==="named")return t.isCollapsedOptionalNullable||this.usesOptionalNullable()&&(t.typeReference.value.type==="optional"||t.typeReference.value.type==="nullable")?this.context.getOptionalNullableAbsent():pr.TypeLiteral.reference(pr.invokeMethod({on:pr.classReference({name:"Optional",packageName:"java.util"}),method:"empty",arguments_:[]}));if(t.typeReference.value.type==="list"){let i=this.convertList({list:t.typeReference.value.value,value:t.value});return this.wrapInOptionalIfNotNop(i,!0,t.isCollapsedOptionalNullable===!0)}if(this.usesOptionalNullable()&&(t.typeReference.value.type==="optional"||t.typeReference.value.type==="nullable"))return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as,inUndiscriminatedUnion:t.inUndiscriminatedUnion,isCollapsedOptionalNullable:!0});let r=this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as,inUndiscriminatedUnion:t.inUndiscriminatedUnion}),n=t.as==="mapValue"||t.inUndiscriminatedUnion===!0;return this.wrapInOptionalIfNotNop(r,n,t.isCollapsedOptionalNullable===!0)}case"primitive":return this.convertPrimitive({primitive:t.typeReference.value,value:t.value,as:t.as});case"set":return this.convertSet({set:t.typeReference.value,value:t.value,as:t.as});case"unknown":return this.convertUnknown({value:t.value});default:xe(t.typeReference)}}convertList({list:t,value:r,as:n}){if(!Array.isArray(r))return this.context.errors.add({severity:kr.Critical,message:`Expected array but got: ${typeof r}`}),pr.TypeLiteral.nop();let i=t.type==="optional"||t.type==="nullable";return pr.TypeLiteral.list({valueType:this.context.dynamicTypeMapper.convert({typeReference:t}),values:r.map((o,s)=>{this.context.errors.scope({index:s});try{if(i){let a=this.convert({typeReference:t.value,value:o,as:n});return this.wrapInOptionalIfNotNop(a,!0)}return this.convert({typeReference:t,value:o,as:n})}finally{this.context.errors.unscope()}}),isParameter:!0})}convertLiteral({literal:t,value:r}){switch(t.type){case"boolean":{let n=this.context.getValueAsBoolean({value:r});return n==null?pr.TypeLiteral.nop():pr.TypeLiteral.boolean(n)}case"string":{let n=this.context.getValueAsString({value:r});return n==null?pr.TypeLiteral.nop():pr.TypeLiteral.string(n)}default:xe(t)}}convertSet({set:t,value:r,as:n}){return Array.isArray(r)?pr.TypeLiteral.set({valueType:this.context.dynamicTypeMapper.convert({typeReference:t}),values:r.map((i,o)=>{this.context.errors.scope({index:o});try{return this.convert({typeReference:t,value:i,as:n})}finally{this.context.errors.unscope()}})}):(this.context.errors.add({severity:kr.Critical,message:`Expected array but got: ${typeof r}`}),pr.TypeLiteral.nop())}convertMap({map:t,value:r,as:n}){return typeof r!="object"||r==null?(this.context.errors.add({severity:kr.Critical,message:`Expected object but got: ${r==null?"null":typeof r}`}),pr.TypeLiteral.nop()):pr.TypeLiteral.map({keyType:this.context.dynamicTypeMapper.convert({typeReference:t.key}),valueType: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:"mapKey"}),value:this.convert({typeReference:t.value,value:o,as:"mapValue"})}}finally{this.context.errors.unscope()}})})}convertNamed({named:t,value:r,as:n,inUndiscriminatedUnion:i}){switch(t.type){case"alias":if(t.typeReference.type==="unknown"){let o=this.convert({typeReference:t.typeReference,value:r,as:n,inUndiscriminatedUnion:i});return pr.TypeLiteral.reference(pr.invokeMethod({on:this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),method:"of",arguments_:[o]}))}return this.convert({typeReference:t.typeReference,value:r,as:n,inUndiscriminatedUnion:i});case"discriminatedUnion":return this.convertDiscriminatedUnion({discriminatedUnion:t,value:r,as:n});case"enum":return this.convertEnum({enum_:t,value:r});case"object":return this.convertObject({object_:t,value:r,as:n,inUndiscriminatedUnion:i});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r,as:n});default:xe(t)}}convertDiscriminatedUnion({discriminatedUnion:t,value:r,as:n}){let i=this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),o=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:t,value:r});if(o==null)return pr.TypeLiteral.nop();let s=o.singleDiscriminatedUnionType;switch(s.type){case"samePropertiesAsObject":{let a=this.context.resolveNamedType({typeId:s.typeId});return a==null?pr.TypeLiteral.nop():pr.TypeLiteral.reference(pr.invokeMethod({on:i,method:this.context.getPropertyName(s.discriminantValue.name),arguments_:[this.convertNamed({named:a,value:o.value,as:n})]}))}case"singleProperty":{let a=this.context.getRecord(o.value);if(a==null)return pr.TypeLiteral.nop();try{return this.context.errors.scope(s.discriminantValue.wireValue),pr.TypeLiteral.reference(pr.invokeMethod({on:i,method:this.context.getPropertyName(s.discriminantValue.name),arguments_:[this.convert({typeReference:s.typeReference,value:a["value"],as:n})]}))}finally{this.context.errors.unscope()}}case"noProperties":return pr.TypeLiteral.reference(pr.invokeMethod({on:i,method:this.context.getPropertyName(s.discriminantValue.name),arguments_:[]}));default:xe(s)}}convertObject({object_:t,value:r,as:n,inUndiscriminatedUnion:i}){let o=this.context.getRecord(r)??{},s=this.context.associateByWireValue({parameters:t.properties,values:o}),a=new Set(s.map(d=>d.name.wireValue));for(let d of t.properties)if(!a.has(d.name.wireValue)&&!this.context.isOptional(d.typeReference)){if(i===!0)throw new Error(`Required property "${d.name.wireValue}" is missing from value`);let f=this.getDefaultValueForTypeReference(d.typeReference);f!==void 0&&s.push({name:d.name,typeReference:d.typeReference,value:f})}let c=new Map,u=new Set;t.properties.forEach((d,f)=>{c.set(d.name.wireValue,f),u.add(d.name.wireValue)}),s.sort((d,f)=>(c.get(d.name.wireValue)??0)-(c.get(f.name.wireValue)??0));let l=n==="request"?s.filter(d=>!this.context.isDirectLiteral(d.typeReference)):s,p=[];for(let d of l){this.context.errors.scope(d.name.wireValue);try{let f=this.convert({typeReference:d.typeReference,value:d.value,as:n,inUndiscriminatedUnion:i});if(pr.TypeLiteral.isNop(f)&&!this.context.isOptional(d.typeReference)){if(i===!0)throw new Error(`Required property "${d.name.wireValue}" could not be converted`);continue}p.push({name:this.context.getMethodName(d.name.name),value:f})}finally{this.context.errors.unscope()}}for(let[d,f]of Object.entries(o))if(!u.has(d)&&f!==void 0){let m=this.convertToRawJavaLiteral(f);m!=null&&p.push({name:"additionalProperty",value:pr.TypeLiteral.raw(`"${this.escapeJavaString(d)}", ${m}`)})}return pr.TypeLiteral.builder({classReference:this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),parameters:p})}convertToRawJavaLiteral(t){return typeof t=="string"?`"${this.escapeJavaString(t)}"`:typeof t=="number"||typeof t=="boolean"?t.toString():t===null?"null":null}escapeJavaString(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r")}getDefaultValueForTypeReference(t){switch(t.type){case"primitive":return this.getDefaultPrimitiveValue(t.value);case"nullable":return null;case"optional":return;case"list":case"set":return[];case"map":return{};case"named":{let r=this.context.resolveNamedType({typeId:t.value});if(r==null)return{};switch(r.type){case"enum":if(r.values.length>0){let n=r.values[0];return n?.wireValue}return;case"object":case"alias":return{};case"discriminatedUnion":case"undiscriminatedUnion":return;default:return{}}}case"literal":return t.value.value;case"unknown":return{};default:xe(t)}}getDefaultPrimitiveValue(t){switch(t){case"STRING":return"string";case"INTEGER":case"UINT":return 1;case"LONG":case"UINT_64":return 1e6;case"FLOAT":case"DOUBLE":return 1.1;case"BOOLEAN":return!0;case"DATE":return"2024-01-15";case"DATE_TIME":return"2024-01-15T09:30:00Z";case"DATE_TIME_RFC_2822":return"Tue, 15 Jan 2024 09:30:00 +0000";case"UUID":return"d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32";case"BASE_64":return"SGVsbG8gd29ybGQh";case"BIG_INTEGER":return"123456789";default:return"string"}}convertEnum({enum_:t,value:r}){let n=this.getEnumValueName({enum_:t,value:r});return n==null?pr.TypeLiteral.nop():pr.TypeLiteral.enum_({classReference:this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),value:n})}getEnumValueName({enum_:t,value:r}){if(typeof r!="string"){this.context.errors.add({severity:kr.Critical,message:`Expected enum value string, got: ${typeof r}`});return}let n=t.values.find(i=>i.wireValue===r);if(n==null){this.context.errors.add({severity:kr.Critical,message:`An enum value named "${r}" does not exist in this context`});return}return this.context.getEnumName(n.name)}convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r,as:n}){let i=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r,as:n});return i==null?pr.TypeLiteral.nop():this.context.isPrimitive(i.valueTypeReference)?pr.TypeLiteral.reference(pr.invokeMethod({on:this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),method:"of",arguments_:[i.typeInstantiation]})):pr.TypeLiteral.reference(pr.invokeMethod({on:this.context.getJavaClassReferenceFromDeclaration({declaration:t.declaration}),method:"of",arguments_:[i.typeInstantiation]}))}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r,as:n}){for(let i of t.types){let o=this.context.errors.size();try{let s=this.convert({typeReference:i,value:r,as:n,inUndiscriminatedUnion:!0});if(pr.TypeLiteral.isNop(s)||this.context.errors.size()>o){this.context.errors.truncate(o);continue}return{valueTypeReference:i,typeInstantiation:s}}catch{this.context.errors.truncate(o);continue}}this.context.errors.add({severity:kr.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof r}" value`})}getUndiscriminatedUnionFieldName({typeReference:t}){switch(t.type){case"list":return this.getUndiscriminatedUnionFieldNameForList({list:t});case"literal":return this.getUndiscriminatedUnionFieldNameForLiteral({literal:t.value});case"map":return this.getUndiscriminatedUnionFieldNameForMap({map:t});case"named":{let r=this.context.resolveNamedType({typeId:t.value});return r==null?void 0:this.context.getClassName(r.declaration.name)}case"optional":return this.getUndiscriminatedUnionFieldNameForOptional({typeReference:t});case"nullable":return this.getUndiscriminatedUnionFieldNameForNullable({typeReference:t});case"primitive":return this.getUndiscriminatedUnionFieldNameForPrimitive({primitive:t.value});case"set":return this.getUndiscriminatedUnionFieldNameForSet({set:t});case"unknown":return"Unknown";default:xe(t)}}getUndiscriminatedUnionFieldNameForList({list:t}){let r=this.getUndiscriminatedUnionFieldName({typeReference:t});if(r!=null)return`ListOf${r}`}getUndiscriminatedUnionFieldNameForMap({map:t}){let r=this.getUndiscriminatedUnionFieldName({typeReference:t.key});if(r==null)return;let n=this.getUndiscriminatedUnionFieldName({typeReference:t.value});if(n!=null)return`MapOf${r}To${n}`}getUndiscriminatedUnionFieldNameForOptional({typeReference:t}){let r=this.getUndiscriminatedUnionFieldName({typeReference:t});if(r!=null)return`Optional${r}`}getUndiscriminatedUnionFieldNameForNullable({typeReference:t}){let r=this.getUndiscriminatedUnionFieldName({typeReference:t});if(r!=null)return`Nullable${r}`}getUndiscriminatedUnionFieldNameForSet({set:t}){let r=this.getUndiscriminatedUnionFieldName({typeReference:t});if(r!=null)return`SetOf${r}`}getUndiscriminatedUnionFieldNameForLiteral({literal:t}){}getUndiscriminatedUnionFieldNameForPrimitive({primitive:t}){switch(t){case"INTEGER":case"UINT":return"Integer";case"LONG":case"UINT_64":return"Long";case"FLOAT":return"Float";case"DOUBLE":return"Double";case"BOOLEAN":return"Boolean";case"BIG_INTEGER":return"BigInteger";case"STRING":return"String";case"UUID":return"Uuid";case"DATE":return"Date";case"DATE_TIME":return"DateTime";case"DATE_TIME_RFC_2822":return"DateTimeRfc2822";case"BASE_64":return"Base64";default:xe(t)}}convertUnknown({value:t}){return this.context.customConfig?.["generate-unknown-as-json-node"]===!0?this.convertToJsonNode({value:t}):pr.TypeLiteral.unknown(t)}convertToJsonNode({value:t}){let r=pr.classReference({name:"ObjectMappers",packageName:this.context.getCorePackageName()});return typeof t=="string"?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.string(t)]})):typeof t=="number"?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.integer(t)]})):typeof t=="boolean"?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.boolean(t)]})):t===null?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.raw(pr.codeblock("null"))]})):Array.isArray(t)?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.list({valueType:pr.Type.object(),values:t.map(n=>pr.TypeLiteral.unknown(n)),isParameter:!0})]})):typeof t=="object"&&t!==null?pr.TypeLiteral.reference(pr.invokeMethod({on:pr.codeblock(n=>{n.writeNode(r),n.write(".JSON_MAPPER")}),method:"valueToTree",arguments_:[pr.TypeLiteral.unknown(t)]})):pr.TypeLiteral.unknown(t)}convertPrimitive({primitive:t,value:r,as:n}){switch(t){case"INTEGER":case"UINT":{let i=this.getValueAsNumber({value:r,as:n});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.integer(i)}case"LONG":case"UINT_64":{let i=this.getValueAsNumber({value:r,as:n});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.long(i)}case"FLOAT":{let i=this.getValueAsNumber({value:r,as:n});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.float(i)}case"DOUBLE":{let i=this.getValueAsNumber({value:r,as:n});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.double(i)}case"BOOLEAN":{let i=this.getValueAsBoolean({value:r,as:n});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.boolean(i)}case"STRING":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.string(i)}case"DATE":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():this.context.customConfig?.["use-local-date-for-dates"]===!0?pr.TypeLiteral.date(i):pr.TypeLiteral.string(i)}case"DATE_TIME":case"DATE_TIME_RFC_2822":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.dateTime(i)}case"UUID":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.uuid(i)}case"BASE_64":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.bytes(i)}case"BIG_INTEGER":{let i=this.context.getValueAsString({value:r});return i==null?pr.TypeLiteral.nop():pr.TypeLiteral.bigInteger(i)}default:xe(t)}}getValueAsNumber({value:t,as:r}){let n=r==="mapKey"&&typeof t=="string"?Number(t):t;return this.context.getValueAsNumber({value:n})}getValueAsBoolean({value:t,as:r}){let n=r==="mapKey"?typeof t=="string"?t==="true":t==="false"?!1:t:t;return this.context.getValueAsBoolean({value:n})}};jt();var agi=class{context;constructor({context:t}){this.context=t}convert(t){switch(t.typeReference.type){case"list":return pr.Type.list(this.convert({typeReference:t.typeReference}));case"literal":return this.convertLiteral({literal:t.typeReference.value});case"map":return pr.Type.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})}case"optional":case"nullable":return pr.Type.optional(this.convert({typeReference:t.typeReference.value}));case"primitive":return this.convertPrimitive({primitive:t.typeReference.value});case"set":return pr.Type.set(this.convert({typeReference:t.typeReference}));case"unknown":return this.convertUnknown();default:xe(t.typeReference)}}convertNamed({named:t}){switch(t.type){case"alias":return this.convert({typeReference:t.typeReference});case"enum":case"discriminatedUnion":case"object":case"undiscriminatedUnion":return pr.Type.reference(pr.classReference({name:this.context.getClassName(t.declaration.name),packageName:this.context.getTypesPackageName(t.declaration.fernFilepath)}));default:xe(t)}}convertLiteral({literal:t}){switch(t.type){case"boolean":return pr.Type.boolean();case"string":return pr.Type.string()}}convertUnknown(){return this.context.customConfig?.["generate-unknown-as-json-node"]===!0?pr.Type.reference(pr.classReference({name:"JsonNode",packageName:"com.fasterxml.jackson.databind"})):pr.Type.object()}convertPrimitive({primitive:t}){switch(t){case"INTEGER":return pr.Type.integer();case"UINT":return pr.Type.integer();case"LONG":return pr.Type.long();case"UINT_64":return pr.Type.long();case"FLOAT":return pr.Type.float();case"DOUBLE":return pr.Type.double();case"BOOLEAN":return pr.Type.boolean();case"STRING":return pr.Type.string();case"DATE":return pr.Type.date();case"DATE_TIME":case"DATE_TIME_RFC_2822":return pr.Type.dateTime();case"UUID":return pr.Type.uuid();case"BASE_64":return pr.Type.bytes();case"BIG_INTEGER":return pr.Type.bigInteger();default:xe(t)}}};jt();var cgi=class{context;constructor({context:t}){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":n.fileFields.push({name:this.context.getMethodName(o.name),value:this.getSingleFileProperty({property:o,record:i})});break;case"fileArray":n.fileFields.push({name:this.context.getMethodName(o.name),value:this.getArrayFileProperty({property:o,record:i})});break;case"bodyProperty":n.bodyPropertyFields.push({name:this.context.getMethodName(o.name.name),value:this.getBodyProperty({property:o,record:i})});break;default:xe(o)}return n}getSingleFileProperty({property:t,record:r}){let n=this.context.getSingleFileValue({property:t,record:r});return n==null?pr.TypeLiteral.nop():pr.TypeLiteral.reference(this.context.getFileStreamFromString(n))}getArrayFileProperty({property:t,record:r}){let n=this.context.getFileArrayValues({property:t,record:r});if(n==null)return pr.TypeLiteral.nop();for(let i of n)return pr.TypeLiteral.reference(this.context.getFileStreamFromString(i));return pr.TypeLiteral.nop()}getBodyProperty({property:t,record:r}){let n=r[t.name.wireValue];return n==null?pr.TypeLiteral.nop():this.context.dynamicTypeLiteralMapper.convert({typeReference:t.typeReference,value:n})}};var Rig=new Set(["enum","extends","package","void","short","class","abstract","return","import","for","assert","switch"]),Fig=new Set(["getClass","notify","notifyAll","wait"]),ugi=class e extends HC{ir;customConfig;dynamicTypeMapper;dynamicTypeLiteralMapper;filePropertyMapper;constructor({ir:t,config:r,options:n,sharedCustomConfig:i}){super({ir:t,config:r,options:n}),this.ir=t,this.customConfig=i??nbs.parse(r.customConfig??{}),this.dynamicTypeMapper=new agi({context:this}),this.dynamicTypeLiteralMapper=new sgi({context:this}),this.filePropertyMapper=new cgi({context:this})}clone(){return new e({ir:this.ir,config:this.config,options:this.options,sharedCustomConfig:this.customConfig})}getClassName(t){return this.getName(t.pascalCase.safeName)}getEnumName(t){return this.getName(t.screamingSnakeCase.safeName)}getPropertyName(t){return this.getName(t.camelCase.safeName)}getMethodName(t){let r=t.camelCase.safeName;return this.isReservedMethodName(r)?r+"_":this.getName(r)}getRootClientClassReference(){return pr.classReference({name:this.getRootClientClassNameForSnippets(),packageName:this.getRootPackageName()})}getRootClientClassName(){return this.customConfig?.["client-class-name"]??`${this.getBaseNamePrefix()}Client`}getRootClientClassNameForSnippets(){return this.customConfig?.["exported-client-class-name"]??this.getRootClientClassName()}getEnvironmentClassName(){return"Environment"}getEnvironmentTypeReferenceFromID(t){let r=this.resolveEnvironmentName(t);if(r!=null)return pr.codeblock(n=>{n.writeNode(this.getEnvironmentClassReference()),n.write("."),n.write(this.getEnumName(r))})}getEnvironmentClassReference(){return pr.classReference({name:this.getEnvironmentClassName(),packageName:this.getCorePackageName()})}getJavaClassReferenceFromDeclaration({declaration:t}){return pr.classReference({name:t.name.pascalCase.unsafeName,packageName:this.getTypesPackageName(t.fernFilepath)})}getNullableClassReference(){return pr.classReference({name:"Nullable",packageName:this.getCorePackageName()})}getNullableOfNull(){return pr.TypeLiteral.reference(pr.invokeMethod({on:this.getNullableClassReference(),method:"ofNull",arguments_:[]}))}getOptionalNullableClassReference(){return pr.classReference({name:"OptionalNullable",packageName:this.getCorePackageName()})}getOptionalNullableAbsent(){return pr.TypeLiteral.reference(pr.invokeMethod({on:this.getOptionalNullableClassReference(),method:"absent",arguments_:[]}))}getOptionalNullableOf(t){return pr.TypeLiteral.reference(pr.invokeMethod({on:this.getOptionalNullableClassReference(),method:"of",arguments_:[t]}))}getFileStreamFromString(t){return pr.TypeLiteral.reference(pr.codeblock(r=>{r.write("new "),r.writeNode(this.getFileStreamClassReference()),r.write("("),r.writeNode(this.getByteArrayInputStreamClassReference()),r.write("("),r.writeNode(pr.TypeLiteral.string(t)),r.write(".getBytes("),r.writeNode(this.getStandardCharsetsClassReference()),r.write(".UTF_8)))")}))}getFileStreamClassReference(){return pr.classReference({name:"FileStream",packageName:this.getCorePackageName()})}getByteArrayInputStreamClassReference(){return pr.classReference({name:"ByteArrayInputStream",packageName:"java.io"})}getStandardCharsetsClassReference(){return pr.classReference({name:"StandardCharsets",packageName:"java.nio.charset"})}isPrimitive(t){switch(t.type){case"primitive":return!0;case"optional":case"nullable":return this.isPrimitive(t.value);case"named":{let r=this.resolveNamedType({typeId:t.value});if(r==null)return!1;switch(r.type){case"alias":return this.isPrimitive(r.typeReference);case"discriminatedUnion":case"undiscriminatedUnion":case"object":case"enum":return!1;default:xe(r)}break}case"list":case"set":case"map":case"literal":case"unknown":return!1;default:xe(t)}}isDirectLiteral(t){return t.type==="literal"}sortTypeInstancesByRequiredFirst(t,r){let n=new Map;r.forEach((s,a)=>{n.set(s.name.wireValue,a)});let i=[],o=[];for(let s of t)this.isOptional(s.typeReference)?o.push(s):i.push(s);return i.sort((s,a)=>(n.get(s.name.wireValue)??0)-(n.get(a.name.wireValue)??0)),[...i,...o]}associateByWireValue({parameters:t,values:r,ignoreMissingParameters:n}){let i=super.associateByWireValue({parameters:t,values:r,ignoreMissingParameters:n}),o=new Map;for(let a of i)o.set(a.name.wireValue,a);let s=[];for(let a of t){let c=o.get(a.name.wireValue);c!=null&&s.push(c)}return s}getRootPackageName(){let t=this.getPackagePrefixTokens();return this.joinPackageTokens(t)}getCorePackageName(){let t=this.getPackagePrefixTokens();return t.push("core"),this.joinPackageTokens(t)}getTypesPackageName(t){return this.getResourcesPackage(t,"types")}getRequestsPackageName(t){return this.getPackageLayout()==="flat"?this.getTypesPackageName(t):this.getResourcesPackage(t,"requests")}getResourcesPackage(t,r){let n=this.getPackagePrefixTokens();return this.getPackageLayout()==="flat"?t!=null&&n.push(...t.packagePath.map(i=>this.getPackageNameSegment(i))):(t!=null&&t.allParts.length>0&&n.push("resources"),t!=null&&n.push(...t.allParts.map(i=>this.getPackageNameSegment(i)))),r!=null&&n.push(r),this.joinPackageTokens(n)}getPackageName(t,r){let n=this.getPackageNameSegments(t);return n=r!=null?[...n,r]:n,[...this.getPackagePrefixTokens(),...n].join(".")}getPackageLayout(){return this.customConfig?.["package-layout"]??"nested"}shouldInlinePathParameters(){return this.customConfig?.["inline-path-parameters"]??!1}shouldInlineFileProperties(){return this.customConfig?.["inline-file-properties"]??!1}getPackageNameSegments(t){return t.packagePath.map(r=>this.getPackageNameSegment(r))}getPackageNameSegment(t){return t.camelCase.safeName.toLowerCase()}getPackagePrefixTokens(){if(this.customConfig?.["package-prefix"]!=null)return this.customConfig["package-prefix"].split(".");let t=[];return t.push("com"),t.push(...this.splitOnNonAlphaNumericChar(this.config.organization)),t.push(...this.splitOnNonAlphaNumericChar(this.getApiName())),t}getBaseNamePrefix(){return this.convertKebabCaseToUpperCamelCase(this.config.organization)+this.convertKebabCaseToUpperCamelCase(this.getApiName())}getApiName(){return ui(this.config.workspaceName)}startsWithNumber(t){return/^\d/.test(t)}splitOnNonAlphaNumericChar(t){return t.split(/[^a-zA-Z0-9]/)}convertKebabCaseToUpperCamelCase(t){return t.replace(/-([a-z])/g,(r,n)=>n.toUpperCase()).replace(/^[a-z]/,r=>r.toUpperCase())}joinPackageTokens(t){return t.map(n=>this.startsWithNumber(n)?"_"+n:n).join(".")}getName(t){return this.isReservedName(t)?"_"+t:t}isReservedName(t){return Rig.has(t)}isReservedMethodName(t){return Fig.has(t)}};jt();var gZu="com.example.usage",kig="Example",Nig="main",jig="args",AZu="client",Qig={type:"primitive",value:"STRING"};function yZu(e){let t=e;for(;t.type==="optional"||t.type==="nullable";)t=t.value;return t}function Mig(e){if(e.type==="optional"&&e.value.type==="list"){let t=e.value.value,r=yZu(t);return r===t?e:{type:"optional",value:{type:"list",value:r}}}if(e.type==="list"){let t=yZu(e.value);return t===e.value?e:{type:"list",value:t}}return e}var lgi=class{context;formatter;constructor({context:t,formatter:r}){this.context=t,this.formatter=r}async generateSnippet({endpoint:t,request:r,options:n}){let i=this.getConfig(n);return await this.buildCodeBlock({endpoint:t,snippet:r,options:n}).toStringAsync({packageName:i.fullStylePackageName??gZu,customConfig:this.context.customConfig,formatter:this.formatter})}generateSnippetSync({endpoint:t,request:r,options:n}){let i=this.getConfig(n);return this.buildCodeBlock({endpoint:t,snippet:r,options:n}).toString({packageName:i.fullStylePackageName??gZu,customConfig:this.context.customConfig,formatter:this.formatter})}async generateSnippetAst({endpoint:t,request:r,options:n}){throw new Error("Unsupported")}buildCodeBlock({endpoint:t,snippet:r,options:n}){let i=pr.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 FS.Concise:return i;case FS.Full:return this.buildFullCodeBlock({body:i,options:n});default:xe(o)}}constructClient({endpoint:t,snippet:r}){let n=t.auth?.type==="oauth";return pr.codeblock(i=>{if(i.writeNode(this.context.getRootClientClassReference()),i.write(` ${AZu} = `),n&&r.auth?.type==="oauth"){let o=r.auth;i.writeNode(this.context.getRootClientClassReference()),i.write(`.withCredentials("${o.clientId}", "${o.clientSecret}")`),i.writeNewLineIfLastLineNot(),i.indent();let s=this.getRootClientBuilderArgsExcludingAuth({endpoint:t,snippet:r});for(let a of s)i.write(`.${a.name}(`),a.value.shouldWriteInLine()||i.newLine(),i.writeNode(a.value),a.value.shouldWriteInLine()||i.newLine(),i.writeLine(")");i.writeLine(".build()"),i.dedent()}else i.writeNode(pr.TypeLiteral.builder({classReference:this.context.getRootClientClassReference(),parameters:this.getRootClientBuilderArgs({endpoint:t,snippet:r})}))})}getRootClientBuilderArgsExcludingAuth({endpoint:t,snippet:r}){let n=[],i=this.getRootClientBaseUrlArg({baseUrl:r.baseURL,environment:r.environment});i!=null&&n.push(i),this.context.errors.scope(ps.Headers),this.context.ir.headers!=null&&r.headers!=null&&n.push(...this.getRootClientHeaderArgs({headers:this.context.ir.headers,values:r.headers})),this.context.errors.unscope();let o=new Set;if([...this.context.ir.pathParameters??[],...t.request.pathParameters??[]].forEach(a=>{a.variable!=null&&o.add(a.variable)}),this.context.ir.variables!=null&&this.context.ir.variables.length>0){for(let a of this.context.ir.variables)if(o.has(a.id)){let c=a.name.camelCase.unsafeName;n.push({name:c,value:pr.TypeLiteral.string(`YOUR_${a.name.screamingSnakeCase.unsafeName}`)})}}if(this.context.errors.scope(ps.PathParameters),this.context.ir.pathParameters!=null&&this.context.ir.pathParameters.length>0){let a=this.context.ir.pathParameters.filter(c=>c.variable==null);a.length>0&&n.push(...this.getPathParameters({namedParameters:a,snippet:r}))}return this.context.errors.unscope(),n}buildFullCodeBlock({body:t,options:r}){let n=this.getConfig(r),i=pr.class_({name:n.fullStyleClassName??kig,access:pr.Access.Public}),o=pr.parameter({name:jig,type:pr.Type.array(pr.Type.string())});return i.addMethod(pr.method({name:Nig,access:pr.Access.Public,static_:!0,parameters:[o],body:t})),i}getRootClientBuilderArgs({endpoint:t,snippet:r}){let n=[];t.auth!=null&&(r.auth!=null?n.push(...this.getRootClientAuthArgs({auth:t.auth,values:r.auth})):this.context.errors.add({severity:kr.Warning,message:`Auth with ${t.auth.type} configuration is required for this endpoint`}));let i=this.getRootClientBaseUrlArg({baseUrl:r.baseURL,environment:r.environment});i!=null&&n.push(i),this.context.errors.scope(ps.Headers),this.context.ir.headers!=null&&r.headers!=null&&n.push(...this.getRootClientHeaderArgs({headers:this.context.ir.headers,values:r.headers})),this.context.errors.unscope();let o=new Set;if([...this.context.ir.pathParameters??[],...t.request.pathParameters??[]].forEach(a=>{a.variable!=null&&o.add(a.variable)}),this.context.ir.variables!=null&&this.context.ir.variables.length>0){for(let a of this.context.ir.variables)if(o.has(a.id)){let c=a.name.camelCase.unsafeName;n.push({name:c,value:pr.TypeLiteral.string(`YOUR_${a.name.screamingSnakeCase.unsafeName}`)})}}if(this.context.errors.scope(ps.PathParameters),this.context.ir.pathParameters!=null&&this.context.ir.pathParameters.length>0){let a=this.context.ir.pathParameters.filter(c=>c.variable==null);a.length>0&&n.push(...this.getPathParameters({namedParameters:a,snippet:r}))}return this.context.errors.unscope(),n}getRootClientBaseUrlArg({baseUrl:t,environment:r}){if(t!=null&&r!=null){this.context.errors.add({severity:kr.Critical,message:"Cannot specify both baseUrl and environment options"});return}if(t!=null){if(this.context.ir.environments?.environments.type==="multipleBaseUrls"){this.context.errors.add({severity:kr.Critical,message:"The Java SDK doesn't support a baseUrl when multiple URL environments are configured"});return}return{name:"url",value:pr.TypeLiteral.string(t)}}if(r!=null){if(this.context.isSingleEnvironmentID(r)){let n=this.context.getEnvironmentTypeReferenceFromID(r);if(n==null){this.context.errors.add({severity:kr.Warning,message:`Environment ${JSON.stringify(r)} was not found`});return}return{name:"environment",value:pr.TypeLiteral.reference(n)}}if(this.context.isMultiEnvironmentValues(r))return this.context.validateMultiEnvironmentUrlValues(r)?{name:"environment",value:pr.TypeLiteral.reference(pr.instantiateClass({classReference:this.context.getEnvironmentClassReference(),arguments_:Object.values(r).map(n=>this.context.dynamicTypeLiteralMapper.convert({typeReference:Qig,value:n}))}))}:void 0}}getRootClientAuthArgs({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.getRootClientBasicAuthArgs({auth:t,values:r}):[];case"bearer":return r.type==="bearer"?this.getRootClientBearerAuthArgs({auth:t,values:r}):[];case"header":return r.type==="header"?this.getRootClientHeaderAuthArgs({auth:t,values:r}):[];case"oauth":return r.type==="oauth"?this.getRootClientOAuthArgs({auth:t,values:r}):[];case"inferred":return this.addWarning("The Java SDK Generator does not support Inferred auth scheme yet"),[];default:xe(t)}}addError(t){this.context.errors.add({severity:kr.Critical,message:t})}addWarning(t){this.context.errors.add({severity:kr.Warning,message:t})}getRootClientBasicAuthArgs({auth:t,values:r}){let n=t,i=!!n.usernameOmit,o=!!n.passwordOmit,s=[];return i||s.push(`"${r.username}"`),o||s.push(`"${r.password}"`),s.length===0?[]:[{name:"credentials",value:pr.TypeLiteral.raw(s.join(", "))}]}getRootClientBearerAuthArgs({auth:t,values:r}){return[{name:this.context.getMethodName(t.token),value:pr.TypeLiteral.string(r.token)}]}getRootClientHeaderAuthArgs({auth:t,values:r}){return[{name:this.context.getMethodName(t.header.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:t.header.typeReference,value:r.value})}]}getRootClientOAuthArgs({auth:t,values:r}){return[{name:this.context.getMethodName(t.clientId),value:pr.TypeLiteral.string(r.clientId)},{name:this.context.getMethodName(t.clientSecret),value:pr.TypeLiteral.string(r.clientSecret)}]}getRootClientHeaderArgs({headers:t,values:r}){let n=[];for(let i of t){let o=r[i.name.wireValue],s=this.getRootClientHeaderArg({header:i,value:o});s!=null&&n.push({name:this.context.getMethodName(i.name.name),value:s})}return n}getRootClientHeaderArg({header:t,value:r}){let n=this.context.dynamicTypeLiteralMapper.convert({typeReference:t.typeReference,value:r});if(!pr.TypeLiteral.isNop(n))return n}callMethod({endpoint:t,snippet:r}){return pr.invokeMethod({on:pr.codeblock(AZu),method:this.getMethod({endpoint:t}),arguments_:this.getMethodArgs({endpoint:t,snippet:r})})}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:xe(t.request)}}getMethodArgsForBodyRequest({request:t,snippet:r}){let n=[];this.context.errors.scope(ps.PathParameters);let i=(t.pathParameters??[]).filter(s=>s.variable==null);i.length>0&&n.push(...this.getPathParameters({namedParameters:i,snippet:r}).map(s=>s.value)),this.context.errors.unscope(),this.context.errors.scope(ps.RequestBody),t.body!=null&&n.push(this.getBodyRequestArg({body:t.body,value:r.requestBody})),this.context.errors.unscope();let o=this.getRequestOptionsArg({request:t,snippet:r});return o!=null&&n.push(o),n}usesOptionalNullable(){return this.context.customConfig?.["collapse-optional-nullable"]===!0}getBodyRequestArg({body:t,value:r}){switch(t.type){case"bytes":return this.getBytesBodyRequestArg({value:r});case"typeReference":{if(t.value.type==="optional"){let n=this.usesOptionalNullable()&&(t.value.value.type==="optional"||t.value.value.type==="nullable");if(r==null)return n?this.context.getOptionalNullableAbsent():pr.TypeLiteral.reference(pr.invokeMethod({on:pr.classReference({name:"Optional",packageName:"java.util"}),method:"empty",arguments_:[]}));let i=this.context.dynamicTypeLiteralMapper.convert({typeReference:t.value.value,value:r,as:"request",isCollapsedOptionalNullable:n}),o=i.toString({packageName:"com.example",customConfig:this.context.customConfig});return o.includes("Optional.empty()")||o.includes("OptionalNullable.absent()")?i:n?this.context.getOptionalNullableOf(i):pr.TypeLiteral.optional({value:i,useOf:!0})}return this.context.dynamicTypeLiteralMapper.convert({typeReference:t.value,value:r,as:"request"})}default:xe(t)}}getBytesBodyRequestArg({value:t}){return t==null?pr.TypeLiteral.bytes(""):typeof t!="string"?(this.context.errors.add({severity:kr.Critical,message:`Expected bytes value to be a string, got ${typeof t}`}),pr.TypeLiteral.nop()):pr.TypeLiteral.bytes(t)}getMethodArgsForInlinedRequest({request:t,snippet:r}){let n=[],{inlinePathParameters:i,inlineFileProperties:o}={inlinePathParameters:this.context.shouldInlinePathParameters(),inlineFileProperties:this.context.shouldInlineFileProperties()};this.context.errors.scope(ps.PathParameters);let s=[],a=(t.pathParameters??[]).filter(u=>u.variable==null);a.length>0&&s.push(...this.getPathParameters({namedParameters:a,snippet:r})),this.context.errors.unscope(),this.context.errors.scope(ps.RequestBody);let c=this.getFilePropertyInfo({request:t,snippet:r});return this.context.errors.unscope(),this.context.includePathParametersInWrappedRequest({request:t,inlinePathParameters:i})||n.push(...s.map(u=>u.value)),o||n.push(...c.fileFields.map(u=>pr.TypeLiteral.isNop(u.value)?pr.TypeLiteral.raw("null"):u.value)),n.push(this.getInlinedRequestArg({request:t,snippet:r,pathParameterFields:this.context.includePathParametersInWrappedRequest({request:t,inlinePathParameters:i})?s:[],filePropertyInfo:c})),n}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}){this.context.errors.scope(ps.QueryParameters);let s=this.context.associateQueryParametersByWireValue({parameters:t.queryParameters??[],values:r.queryParameters??{}}).filter(m=>!this.context.isDirectLiteral(m.typeReference)),c=this.context.sortTypeInstancesByRequiredFirst(s,t.queryParameters??[]).map(m=>({name:this.context.getMethodName(m.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:Mig(m.typeReference),value:m.value,as:"request"})}));this.context.errors.unscope(),this.context.errors.scope(ps.Headers);let l=this.context.associateByWireValue({parameters:t.headers??[],values:r.headers??{}}).filter(m=>!this.context.isDirectLiteral(m.typeReference)),d=this.context.sortTypeInstancesByRequiredFirst(l,t.headers??[]).map(m=>({name:this.context.getMethodName(m.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:m.typeReference,value:m.value,as:"request"})}));this.context.errors.unscope(),this.context.errors.scope(ps.RequestBody);let f=t.body!=null?this.getInlinedRequestBodyBuilderParameters({body:t.body,value:r.requestBody,filePropertyInfo:i}):[];return this.context.errors.unscope(),pr.TypeLiteral.builder({classReference:pr.classReference({name:this.context.getClassName(t.declaration.name),packageName:this.context.getRequestsPackageName(t.declaration.fernFilepath)}),parameters:[...n,...d,...c,...f]})}getRequestOptionsArg({request:t,snippet:r}){let n="headers"in t?t.headers??[]:[];if(n.length===0||Object.keys(r.headers??{}).length===0)return;this.context.errors.scope(ps.Headers);let i=this.context.associateByWireValue({parameters:n,values:r.headers??{}});if(this.context.errors.unscope(),i.length===0)return;let o=pr.classReference({name:"RequestOptions",packageName:this.context.getCorePackageName()}),s=pr.invokeMethod({on:o,method:"builder",arguments_:[]});for(let c of i)s=pr.invokeMethod({on:s,method:"addHeader",arguments_:[pr.TypeLiteral.string(c.name.wireValue),this.context.dynamicTypeLiteralMapper.convert(c)]});let a=pr.invokeMethod({on:s,method:"build",arguments_:[]});return pr.TypeLiteral.reference(a)}getInlinedRequestBodyBuilderParameters({body:t,value:r,filePropertyInfo:n}){switch(t.type){case"properties":return this.getInlinedRequestBodyPropertyBuilderParameters({parameters:t.value,value:r});case"referenced":return[this.getReferencedRequestBodyPropertyBuilderParameter({body:t,value:r})];case"fileUpload":return this.getFileUploadRequestBodyBuilderParameters({filePropertyInfo:n});default:xe(t)}}getFileUploadRequestBodyBuilderParameters({filePropertyInfo:t}){return this.context.shouldInlineFileProperties()?[...t.fileFields,...t.bodyPropertyFields]:t.bodyPropertyFields}getReferencedRequestBodyPropertyBuilderParameter({body:t,value:r}){return{name:this.context.getMethodName(t.bodyKey),value:this.getReferencedRequestBodyPropertyTypeLiteral({body:t.bodyType,value:r})}}getReferencedRequestBodyPropertyTypeLiteral({body:t,value:r}){switch(t.type){case"bytes":return this.getBytesBodyRequestArg({value:r});case"typeReference":return this.context.dynamicTypeLiteralMapper.convert({typeReference:t.value,value:r,as:"request"});default:xe(t)}}getInlinedRequestBodyPropertyBuilderParameters({parameters:t,value:r}){let i=this.context.associateByWireValue({parameters:t,values:this.context.getRecord(r)??{}}).filter(s=>!this.context.isDirectLiteral(s.typeReference));return this.context.sortTypeInstancesByRequiredFirst(i,t).map(s=>({name:this.context.getMethodName(s.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:s.typeReference,value:s.value,as:"request"})}))}getPathParameters({namedParameters:t,snippet:r}){let n=[],i=this.context.associateByWireValue({parameters:t,values:r.pathParameters??{},ignoreMissingParameters:!0});for(let o of i)n.push({name:this.context.getMethodName(o.name.name),value:this.context.dynamicTypeLiteralMapper.convert(o)});return n}getMethod({endpoint:t}){return t.declaration.fernFilepath.allParts.length>0?`${t.declaration.fernFilepath.allParts.map(r=>`${this.context.getMethodName(r)}()`).join(".")}.${this.context.getMethodName(t.declaration.name)}`:this.context.getMethodName(t.declaration.name)}getStyle(t){return t.style??this.context.options.style??FS.Full}getConfig(t){return t.config??this.context.options.config??{}}};var EYt=class extends WC{constructor({ir:t,config:r,options:n={}}){super(new ugi({ir:t,config:r,options:n}))}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 lgi({context:t})}};aS();_t();var a8e=require("fs/promises"),bZu=we(require("path"),1);var pgi=class{context;ir;generatorConfig;dynamicSnippetsGenerator;constructor(t,r,n){this.context=t,this.ir=r,this.generatorConfig=n,this.dynamicSnippetsGenerator=new EYt({ir:wB(this.ir),config:this.generatorConfig})}async generateTests({outputDir:t,requests:r}){this.context.logger.debug("Generating dynamic snippet tests...");let n=await this.initializeProject(t);for(let[s,{endpointId:a,request:c}]of r.entries())try{let u=CB(c);if(u==null)continue;let l=await this.dynamicSnippetsGenerator.generate(u,{config:{fullStyleClassName:`Example${s}`,fullStylePackageName:"com.snippets"},style:FS.Full,endpointId:a}),p=this.getTestFilePath({absolutePathToOutputDir:n,idx:s});await(0,a8e.mkdir)(bZu.default.dirname(p),{recursive:!0}),await(0,a8e.writeFile)(p,l.snippet)}catch(u){this.context.logger.error(`Failed to generate dynamic snippet for endpoint ${JSON.stringify(c.endpoint)}: ${u}`)}this.context.logger.debug("Dynamic snippets test files generated, running spotlessApply...");let i=Ze(t,Fe.of("gradlew"));if(await sr(i,"file"))try{let a=this.generatorConfig.customConfig?.["enable-gradle-profiling"]===!0,c=[":spotlessApply"];if(a&&(c.push("--profile"),this.context.logger.info("Running spotlessApply with profiling enabled")),await hu(this.context.logger,"./gradlew",c,{doNotPipeOutput:!1,cwd:t}),this.context.logger.debug("Successfully ran spotlessApply"),a){let u=Ze(t,Fe.of("build/reports")),l=Ze(t,Fe.of("reports"));await sr(u,"directory")?(await(0,a8e.cp)(u,l,{recursive:!0}),this.context.logger.info("Gradle profiling report copied to reports/")):this.context.logger.info("No profiling report found in build/reports/")}}catch(s){this.context.failAndThrow("Failed to run spotlessApply",s,{code:D.Code.InternalError})}this.context.logger.debug("Done generating dynamic snippet tests")}async initializeProject(t){let r=Ze(t,Fe.of("src/main/java/com/snippets"));return await(0,a8e.mkdir)(r,{recursive:!0}),r}getTestFilePath({absolutePathToOutputDir:t,idx:r}){return Ze(t,Fe.of(`Example${r}.java`))}};tr();var EZu="self",vZu="static";var IZu=new Set(["abstract","and","array","as","break","callable","case","catch","class","clone","const","continue","declare","default","die","do","echo","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","eval","exit","extends","final","finally","fn","for","foreach","function","global","goto","if","implements","include","include_once","instanceof","insteadof","interface","isset","list","match","namespace","new","or","print","private","protected","public","readonly","require","require_once","return","static","switch","throw","trait","try","unset","use","var","while","xor","yield","yield_from","__halt_compiler"]);var An={};te(An,{Access:()=>aFe,Array:()=>u8e,AstNode:()=>mp,Attribute:()=>l8e,Class:()=>jhe,ClassInstantiation:()=>fae,ClassReference:()=>kS,CodeBlock:()=>sk,DataClass:()=>c8e,Enum:()=>p8e,Field:()=>f8e,Interface:()=>d8e,Map:()=>m8e,Method:()=>Lhe,MethodInvocation:()=>Mhe,Parameter:()=>Qhe,Trait:()=>h8e,Type:()=>YK,TypeLiteral:()=>JK,Writer:()=>pae,array:()=>Wig,assignVariable:()=>aog,attribute:()=>Hig,classReference:()=>Xig,class_:()=>Kig,codeblock:()=>g8e,dataClass:()=>Zig,enum_:()=>$ig,escapePhpString:()=>ubs,field:()=>eog,instantiateClass:()=>TZu,interface_:()=>Yig,invokeMethod:()=>tog,map:()=>nog,mergeArrays:()=>log,method:()=>iog,parameter:()=>oog,string:()=>uog,ternary:()=>sog,this_:()=>pog,throwException:()=>rog,trait:()=>Jig,variable:()=>cog});function CZu(e){return{namespace:e.substring(0,e.lastIndexOf("\\")),name:e.substring(e.lastIndexOf("\\")+1)}}var pae=class extends RS{namespace;rootNamespace;customConfig;references={};constructor({namespace:t,rootNamespace:r,customConfig:n}){super(),this.namespace=t,this.rootNamespace=r,this.customConfig=n}addReference(t){if(t.namespace==null)return;if(Object.keys(this.references).filter(o=>{let s=CZu(o);return s.namespace!==t.namespace&&s.name===t.name}).length>0){t.requireFullyQualified();return}let n=t.namespace===""?t.name:`${t.namespace}\\${t.name}`;(this.references[n]??=[]).push(t)}toString(t=!1){if(t)return this.buffer;let r=`namespace ${this.namespace};`,n=this.stringifyImports();return n.length>0?`${r}
|
|
4684
4684
|
|
|
4685
4685
|
${n}
|
|
4686
4686
|
|
|
@@ -5024,7 +5024,7 @@ ${r}`}function ryi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
|
|
|
5024
5024
|
`),h="";return c&&(h=l.style.error(c)),[`${p} ${f} ${s}`,[m,h].filter(Boolean).join(`
|
|
5025
5025
|
`)]});var Wfg=$C((e,t)=>{let{validate:r=()=>!0}=e,n=kv(e.theme),[i,o]=Iu("idle"),[s,a]=Iu(),[c,u]=Iu(""),l=XC({status:i,theme:n});ZC(async(h,A)=>{if(i==="idle")if(YC(h)){let y=c;o("loading");let I=await r(y);I===!0?(u(y),o("done"),t(y)):(A.write(c),a(I||"You must provide a valid value"),o("idle"))}else u(A.line),a(void 0)});let p=n.style.message(e.message,i),d="",f;e.mask?d=(typeof e.mask=="string"?e.mask:"*").repeat(c.length):i!=="done"&&(f=`${n.style.help("[input is masked]")}${v1t}`),i==="done"&&(d=n.style.answer(d));let m="";return s&&(m=n.style.error(s)),[[l,p,e.mask?d:f].join(" "),m]});var f7e=we(pS(),1);var Hfg={icon:{cursor:_w.pointer},style:{disabled:e=>f7e.default.dim(`- ${e}`),searchTerm:e=>f7e.default.cyan(e),description:e=>f7e.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${f7e.default.bold(t)} ${f7e.default.dim(r)}`).join(f7e.default.dim(" \u2022 "))},helpMode:"always"};function Evs(e){return!Pd.isSeparator(e)&&!e.disabled}function Kfg(e){return e.map(t=>{if(Pd.isSeparator(t))return t;if(typeof t=="string")return{value:t,name:t,short:t,disabled:!1};let r=t.name??String(t.value),n={value:t.value,name:r,short:t.short??r,disabled:t.disabled??!1};return t.description&&(n.description=t.description),n})}var Jfg=$C((e,t)=>{let{pageSize:r=7,validate:n=()=>!0}=e,i=kv(Hfg,e.theme),[o,s]=Iu("loading"),[a,c]=Iu(""),[u,l]=Iu([]),[p,d]=Iu(),f=XC({status:o,theme:i}),m=OL(()=>{let U=u.findIndex(Evs),X=u.findLastIndex(Evs);return{first:U,last:X}},[u]),[h=m.first,A]=Iu();x4(()=>{let U=new AbortController;return s("loading"),d(void 0),(async()=>{try{let $=await e.source(a||void 0,{signal:U.signal});U.signal.aborted||(A(void 0),d(void 0),l(Kfg($)),s("idle"))}catch($){!U.signal.aborted&&$ instanceof Error&&d($.message)}})(),()=>{U.abort()}},[a]);let y=u[h];ZC(async(U,X)=>{if(YC(U))if(y){s("loading");let $=await n(y.value);s("idle"),$===!0?(s("done"),t(y.value)):y.name===a?d($||"You must provide a valid value"):(X.write(y.name),c(y.name))}else X.write(a);else if(Zhe(U)&&y)X.clearLine(0),X.write(y.name),c(y.name);else if(o!=="loading"&&(OP(U)||BL(U))){if(X.clearLine(0),OP(U)&&h!==m.first||BL(U)&&h!==m.last){let $=OP(U)?-1:1,ne=h;do ne=(ne+$+u.length)%u.length;while(!Evs(u[ne]));A(ne)}}else c(X.line)});let I=i.style.message(e.message,o),w;if(i.helpMode!=="never")if(e.instructions){let{pager:U,navigation:X}=e.instructions;w=i.style.help(u.length>r?U:X)}else w=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let C=c7e({items:u,active:h,renderItem({item:U,isActive:X}){if(Pd.isSeparator(U))return` ${U.separator}`;if(U.disabled){let le=typeof U.disabled=="string"?U.disabled:"(disabled)";return i.style.disabled(`${U.name} ${le}`)}let $=X?i.style.highlight:le=>le,ne=X?i.icon.cursor:" ";return $(`${ne} ${U.name}`)},pageSize:r,loop:!1}),x;p?x=i.style.error(p):u.length===0&&a!==""&&o==="idle"&&(x=i.style.error("No results found"));let T;if(o==="done"&&y)return[f,I,i.style.answer(y.short)].filter(Boolean).join(" ").trimEnd();T=i.style.searchTerm(a);let O=y?.description,R=[f,I,T].filter(Boolean).join(" ").trimEnd(),P=[x??C," ",O?i.style.description(O):"",w].filter(Boolean).join(`
|
|
5026
5026
|
`).trimEnd();return[R,P]});var C1t=we(pS(),1);var Yfg={icon:{cursor:_w.pointer},style:{disabled:e=>C1t.default.dim(`- ${e}`),description:e=>C1t.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${C1t.default.bold(t)} ${C1t.default.dim(r)}`).join(C1t.default.dim(" \u2022 "))},helpMode:"always",indexMode:"hidden",keybindings:[]};function I1t(e){return!Pd.isSeparator(e)&&!e.disabled}function Xfg(e){return e.map(t=>{if(Pd.isSeparator(t))return t;if(typeof t=="string")return{value:t,name:t,short:t,disabled:!1};let r=t.name??String(t.value),n={value:t.value,name:r,short:t.short??r,disabled:t.disabled??!1};return t.description&&(n.description=t.description),n})}var vvs=$C((e,t)=>{let{loop:r=!0,pageSize:n=7}=e,i=kv(Yfg,e.theme),{keybindings:o}=i,[s,a]=Iu("idle"),c=XC({status:s,theme:i}),u=a7e(),l=!o.includes("vim"),p=OL(()=>Xfg(e.choices),[e.choices]),d=OL(()=>{let O=p.findIndex(I1t),R=p.findLastIndex(I1t);if(O===-1)throw new Iae("[select prompt] No selectable choices. All choices are disabled.");return{first:O,last:R}},[p]),f=OL(()=>"default"in e?p.findIndex(O=>I1t(O)&&O.value===e.default):-1,[e.default,p]),[m,h]=Iu(f===-1?d.first:f),A=p[m];ZC((O,R)=>{if(clearTimeout(u.current),YC(O))a("done"),t(A.value);else if(OP(O,o)||BL(O,o)){if(R.clearLine(0),r||OP(O,o)&&m!==d.first||BL(O,o)&&m!==d.last){let P=OP(O,o)?-1:1,U=m;do U=(U+P+p.length)%p.length;while(!I1t(p[U]));h(U)}}else if(xXt(O)&&!Number.isNaN(Number(R.line))){let P=Number(R.line)-1,U=-1,X=p.findIndex(ne=>Pd.isSeparator(ne)?!1:(U++,U===P)),$=p[X];$!=null&&I1t($)&&h(X),u.current=setTimeout(()=>{R.clearLine(0)},700)}else if(i7e(O))R.clearLine(0);else if(l){let P=R.line.toLowerCase(),U=p.findIndex(X=>Pd.isSeparator(X)||!I1t(X)?!1:X.name.toLowerCase().startsWith(P));U!==-1&&h(U),u.current=setTimeout(()=>{R.clearLine(0)},700)}}),x4(()=>()=>{clearTimeout(u.current)},[]);let y=i.style.message(e.message,s),I;if(i.helpMode!=="never")if(e.instructions){let{pager:O,navigation:R}=e.instructions;I=i.style.help(p.length>n?O:R)}else I=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let w=0,C=c7e({items:p,active:m,renderItem({item:O,isActive:R,index:P}){if(Pd.isSeparator(O))return w++,` ${O.separator}`;let U=i.indexMode==="number"?`${P+1-w}. `:"";if(O.disabled){let ne=typeof O.disabled=="string"?O.disabled:"(disabled)";return i.style.disabled(`${U}${O.name} ${ne}`)}let X=R?i.style.highlight:ne=>ne,$=R?i.icon.cursor:" ";return X(`${$} ${U}${O.name}`)},pageSize:n,loop:r});if(s==="done")return[c,y,i.style.answer(A.short)].filter(Boolean).join(" ");let{description:x}=A;return`${[[c,y].filter(Boolean).join(" "),C," ",x?i.style.description(x):"",I].filter(Boolean).join(`
|
|
5027
|
-
`).trimEnd()}${v1t}`});co();var Cae={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"},Zfg={[Cae.GENERATION_STARTED]:!1,[Cae.GENERATION_COMPLETED]:!1,[Cae.GENERATION_FAILED]:!0,[Cae.VERIFICATION_FAILED]:!0,[Cae.SDK_PR_CREATED]:!1,[Cae.UPGRADE_APPLIED]:!1,[Cae.MAJOR_VERSION_BUMP]:!1};function ysl(e){return Zfg[e]}function bsl(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 Esl(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 vsl(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 Isl(e,t){return{event:e.event,timestamp:new Date().toISOString(),surface:"cli",action:t.action,run_id:t.run_id,github_run_id:t.github_run_id,github_run_url:t.github_run_url,org:t.org,config_repo:t.config_repo,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,trigger:t.trigger,cli_version:t.cli_version,...e.errorCode!==void 0?{error_code:e.errorCode}:{},...e.attributes??{}}}function Csl(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?Cae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?Cae.VERIFICATION_FAILED:Cae.GENERATION_FAILED}var $fg="",edg="FERN_AUTOMATION_EVENTS_ORIGIN",tdg=3e3,Myi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[edg]??$fg)),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(),tdg);try{let s={"content-type":"application/json"},a=await BV();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(Isl(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function wsl(){let{fern_run_id:e,github_run_id:t}=tce();return{action:process.env.FERN_ACTION,run_id:e,github_run_id:t,github_run_url:process.env.FERN_GITHUB_RUN_URL,org:void 0,config_repo:process.env.FERN_CONFIG_REPO,config_commit_sha:process.env.FERN_CONFIG_COMMIT_SHA,config_branch:process.env.FERN_CONFIG_BRANCH,config_pr_number:process.env.FERN_CONFIG_PR_NUMBER,trigger:process.env.GITHUB_EVENT_NAME,cli_version:"5.44.
|
|
5027
|
+
`).trimEnd()}${v1t}`});co();var Cae={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"},Zfg={[Cae.GENERATION_STARTED]:!1,[Cae.GENERATION_COMPLETED]:!1,[Cae.GENERATION_FAILED]:!0,[Cae.VERIFICATION_FAILED]:!0,[Cae.SDK_PR_CREATED]:!1,[Cae.UPGRADE_APPLIED]:!1,[Cae.MAJOR_VERSION_BUMP]:!1};function ysl(e){return Zfg[e]}function bsl(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 Esl(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 vsl(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 Isl(e,t){return{event:e.event,timestamp:new Date().toISOString(),surface:"cli",action:t.action,run_id:t.run_id,github_run_id:t.github_run_id,github_run_url:t.github_run_url,org:t.org,config_repo:t.config_repo,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,trigger:t.trigger,cli_version:t.cli_version,...e.errorCode!==void 0?{error_code:e.errorCode}:{},...e.attributes??{}}}function Csl(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?Cae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?Cae.VERIFICATION_FAILED:Cae.GENERATION_FAILED}var $fg="",edg="FERN_AUTOMATION_EVENTS_ORIGIN",tdg=3e3,Myi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[edg]??$fg)),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(),tdg);try{let s={"content-type":"application/json"},a=await BV();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(Isl(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function wsl(){let{fern_run_id:e,github_run_id:t}=tce();return{action:process.env.FERN_ACTION,run_id:e,github_run_id:t,github_run_url:process.env.FERN_GITHUB_RUN_URL,org:void 0,config_repo:process.env.FERN_CONFIG_REPO,config_commit_sha:process.env.FERN_CONFIG_COMMIT_SHA,config_branch:process.env.FERN_CONFIG_BRANCH,config_pr_number:process.env.FERN_CONFIG_PR_NUMBER,trigger:process.env.GITHUB_EVENT_NAME,cli_version:"5.44.10"}}function xsl(){return process.env.FERN_AUTOMATION==="true"}var Lyi=class{constructor(t,r=Myi.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=wsl()}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:bsl(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!ysl(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:Esl(t,r),context:{automation:vsl(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};_t();function zyi(e,t,r){if(t instanceof fu)return;let n=OAe(t,r?.code),i=r?.argv??process.argv,o=i.join(" "),s=r?.message??(t instanceof Error?t.message:void 0)??"",a=t??new D({message:s,code:n});xsl()?ndg(i,e,n,s,a):rdg(e,o,n,a)}function rdg(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),b9e(r)&&e.captureException(n,{tags:{"error.code":r}})}function ndg(e,t,r,n,i){let o=Csl(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}_t();function d7e(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function Uyi({cliName:e,packageVersion:t,isLocal:r}){return d7e()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var _yi=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(Uyi(r)&&n!=null&&n.length>0){let i="production";if(i==null||i.length===0)throw new D({message:"SENTRY_ENVIRONMENT must be set when SENTRY_DSN is configured",code:D.Code.ConfigError});this.sentry=NPt({dsn:n,release:t,environment:i,defaultIntegrations:!1,integrations:[rGe(),tAe(),rAe(),Lge(),eAe()],tracesSampleRate:0,attachStacktrace:!0,sendClientReports:!1}),jPt()}}captureException(t,r){if(this.sentry!=null)try{let n=r?.tags,i=r?.context,o=n!=null&&Object.keys(n).length>0,s=i!=null&&Object.values(i).some(a=>a!=null);return!o&&!s?this.sentry.captureException(t):NB(a=>{if(o&&a.setTags(n),i!=null)for(let[c,u]of Object.entries(i))u!=null&&a.setContext(c,u);return this.sentry?.captureException(t,void 0,a)})}catch{return}}async flush(){this.sentry!=null&&await Promise.resolve(this.sentry.flush(2e3)).catch(()=>{})}};_t();var Vyi=class{originalWrite;redirected=!1;redirect(){if(this.redirected)throw new D({message:"StdoutRedirector: already redirected \u2014 did you forget to restore()?",code:D.Code.InternalError});this.originalWrite=process.stdout.write,process.stdout.write=process.stderr.write.bind(process.stderr),this.redirected=!0}restore(){!this.redirected||this.originalWrite==null||(process.stdout.write=this.originalWrite,this.originalWrite=void 0,this.redirected=!1)}async withRedirect(t){this.redirect();try{return await t()}finally{this.restore()}}};jt();Hb();_t();var OXt=class{result=Uf.Success;lastFailureMessage=void 0;logImmediately;logPrefix;title;subtasks=[];shouldBufferLogs;bufferedLogs=[];status="notStarted";onResult;instrumentPostHogEventImpl;captureExceptionImpl;emitAutomationTelemetryEventImpl;constructor({logImmediately:t,logPrefix:r,title:n,takeOverTerminal:i,onResult:o,shouldBufferLogs:s,instrumentPostHogEvent:a,captureException:c,emitAutomationTelemetryEvent:u}){this.logImmediately=t,this.logPrefix=r??"",this.title=n,this.takeOverTerminal=i,this.onResult=o,this.shouldBufferLogs=s,this.instrumentPostHogEventImpl=a,this.captureExceptionImpl=c,this.emitAutomationTelemetryEventImpl=u}start(){return this.status="running",this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.status="finished",this.flushLogs(),this.onResult?.(this.getResult()))}isFinished(){return this.status==="finished"}takeOverTerminal;failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),this.finish(),new fu}failWithoutThrowing(t,r,n){this.result=Uf.Failure,!(r instanceof fu)&&(t!=null&&(this.lastFailureMessage=t),T3t({message:t,error:r,logger:this.logger}),zyi(this,r,{...n,message:t}))}getLastFailureMessage(){return this.lastFailureMessage}captureException(t,r){return this.captureExceptionImpl?.(t,r)}emitAutomationTelemetryEvent(t,r){this.emitAutomationTelemetryEventImpl(t,r)}getResult(){return this.result}instrumentPostHogEvent(t){this.instrumentPostHogEventImpl(t)}logAtLevel(t,...r){this.logAtLevelWithOverrides(t,r)}logAtLevelWithOverrides(t,r,n={}){this.log({parts:r,level:t,time:new Date,...n})}log(t){this.bufferedLogs.push({...t,prefix:this.logPrefix}),this.shouldBufferLogs||this.flushLogs()}flushLogs(){this.logImmediately(this.bufferedLogs),this.bufferedLogs=[]}logger=VI(this.logAtLevel.bind(this));addInteractiveTask({name:t,subtitle:r}){let n=new Ivs({name:t,subtitle:r,logImmediately:i=>this.logImmediately(i),logPrefix:`${this.logPrefix}${Ae.blackBright(t)} `,takeOverTerminal:this.takeOverTerminal,onResult:this.onResult,shouldBufferLogs:this.shouldBufferLogs,instrumentPostHogEvent:i=>this.instrumentPostHogEventImpl(i),captureException:this.captureExceptionImpl,emitAutomationTelemetryEvent:this.emitAutomationTelemetryEventImpl});return this.subtasks.push(n),n}async runInteractiveTask(t,r){let n=this.addInteractiveTask(t).start();try{await r(n)}catch(i){n.failWithoutThrowing(void 0,i)}finally{n.finish()}return n.getResult()===Uf.Success}printInteractiveTasks({spinner:t}){return this.subtasks.map(r=>r.print({spinner:t})).join(`
|
|
5028
5028
|
`)}},Ivs=class extends OXt{name;subtitle;constructor({name:t,subtitle:r,...n}){super(n),this.name=t,this.subtitle=r}start(){return super.start(),this.logAtLevelWithOverrides(Gn.Info,["Started."],{omitOnTTY:!0}),this.flushLogs(),this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.result===Uf.Success?this.logAtLevelWithOverrides(Gn.Info,["Finished."],{omitOnTTY:!0}):this.logAtLevelWithOverrides(Gn.Error,["Failed."],{omitOnTTY:!0}),super.finish())}setSubtitle(t){this.subtitle=t}print({spinner:t}){let r=[this.name];return this.subtitle!=null&&r.push(Ae.dim(this.subtitle)),r.push(...this.subtasks.map(n=>n.print({spinner:t}))),Fj({prefix:this.getIcon({spinner:t}),content:r.join(`
|
|
5029
5029
|
`)})}printInteractiveTasks({spinner:t}){return this.print({spinner:t})}getIcon({spinner:t}){let r=this.subtasks.length>0;switch(this.status){case"notStarted":return r?Ae.dim("\u25B8 "):Ae.dim("\u25E6 ");case"running":return r?Ae.cyan("\u25BE "):t;case"finished":switch(this.getResult()){case Uf.Success:return r?Ae.green("\u25BE "):Ae.green("\u2713 ");case Uf.Failure:return r?Ae.red("\u25BE "):Ae.red("x ")}}}getResult(){if(this.result===Uf.Failure)return Uf.Failure;for(let t of this.subtasks)if(t.getResult()===Uf.Failure)return Uf.Failure;return Uf.Success}};_t();var Ssl=we(Y6e(),1);function Tsl(e){return e.filter(t=>t.isUpgradeAvailable).length>0}function idg(e){return(e.cliUpgradeInfo?.isUpgradeAvailable??!1)||Tsl(e.generatorUpgradeInfo)}async function Bsl({cliEnvironment:e,upgradeInfo:t}){if(!idg(t)||e.packageVersion==t.cliUpgradeInfo?.latestVersion)return;let r=`${Ae.underline("Upgrades available")}
|
|
5030
5030
|
|
|
@@ -5033,7 +5033,7 @@ ${r}`}function ryi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
|
|
|
5033
5033
|
Run ${Ae.cyan("fern generator upgrade")} to upgrade your generators.`),i.length>2&&(r+=`
|
|
5034
5034
|
Run ${Ae.cyan("fern generator upgrade --list")} to see the full list of generator upgrades available.`),tst(r,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"})}async function Cvs({generatorUpgradeInfo:e,header:t,limit:r,includeBoxen:n=!0}){if(!Tsl(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+=`
|
|
5035
5035
|
${await odg(a.generatorName)} (${a.apiName!=null?"API: "+a.apiName+", ":""}Group: ${a.generatorGroup}) `+Ae.dim(a.currentVersion)+Ae.reset(" \u2192 ")+Ae.green(a.latestVersion);return i+=`
|
|
5036
|
-
`,n?tst(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function odg(e){let r=await new Ssl.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new D({message:`Generator ${e} not found`,code:D.Code.ConfigError});return r.body.displayName}_t();async function sdg({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await Osl({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=z6e(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await M1({generatorName:d,cliVersion:e.environment.packageVersion,currentGeneratorVersion:l.version,channel:i,includeMajor:o,context:p});f!=null&&(a.versions[u][l.name]={previousVersion:l.version,latestVersion:f})},generatorFilter:r,groupFilter:n}),a}let s={type:"multiApi",versions:{}};return await Osl({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(a,c,u,l)=>{if(a==null)return;s.versions[a]==null&&(s.versions[a]={}),s.versions[a][c]==null&&(s.versions[a][c]={});let p=z6e(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await M1({generatorName:p,cliVersion:e.environment.packageVersion,currentGeneratorVersion:u.version,channel:i,includeMajor:o,context:l});d!=null&&(s.versions[a][c][u.name]={previousVersion:u.version,latestVersion:d})},generatorFilter:r,groupFilter:n}),s}async function Osl({cliContext:e,apiWorkspaces:t,perGeneratorAction:r,generatorFilter:n,groupFilter:i}){await Promise.all(t.map(async o=>{await e.runTaskForWorkspace(o,async s=>{let a=await W3({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?py(n):void 0;for(let u of a.groups)if(!(i!=null&&u.groupName!==i))for(let l of u.generators)c!=null&&l.name!==c||await r(o.workspaceName,u.groupName,l,s)})}))}function Psl(e,t,r){let n=[];for(let[i,o]of Object.entries(e))for(let[s,a]of Object.entries(o)){r.debug(`Checking if ${s} in group ${i} has an upgrade available...`);let c;try{c=qQ(a.latestVersion,a.previousVersion)}catch{throw new D({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:D.Code.ConfigError})}r.debug(`Latest version: ${a.latestVersion}. `+(c?"Upgrade available.":"No upgrade available.")),n.push({generatorName:s,generatorGroup:i,apiName:t,isUpgradeAvailable:c,currentVersion:a.previousVersion,latestVersion:a.latestVersion})}return n}async function qyi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await sdg({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(...Psl(u,c,t.logger));else s.push(...Psl(a.versions,void 0,t.logger))}return s}_t();async function $he({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await dFt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new D({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:D.Code.NetworkError})}}var Dsl=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Gyi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Gn.Info;isLocal;stdoutRedirector=new Vyi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await hVt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new q3t(t,r),this.isLocal=n??!1,this.posthogManager=i;let o=this.getPackageName(),s=this.getPackageVersion(),a=this.getCliName();(o==null||s==null||a==null)&&this.exitProgram(),this.environment={packageName:o,packageVersion:s,cliName:a},this.sentryClient=new _yi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new Lyi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.44.
|
|
5036
|
+
`,n?tst(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function odg(e){let r=await new Ssl.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new D({message:`Generator ${e} not found`,code:D.Code.ConfigError});return r.body.displayName}_t();async function sdg({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await Osl({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=z6e(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await M1({generatorName:d,cliVersion:e.environment.packageVersion,currentGeneratorVersion:l.version,channel:i,includeMajor:o,context:p});f!=null&&(a.versions[u][l.name]={previousVersion:l.version,latestVersion:f})},generatorFilter:r,groupFilter:n}),a}let s={type:"multiApi",versions:{}};return await Osl({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(a,c,u,l)=>{if(a==null)return;s.versions[a]==null&&(s.versions[a]={}),s.versions[a][c]==null&&(s.versions[a][c]={});let p=z6e(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await M1({generatorName:p,cliVersion:e.environment.packageVersion,currentGeneratorVersion:u.version,channel:i,includeMajor:o,context:l});d!=null&&(s.versions[a][c][u.name]={previousVersion:u.version,latestVersion:d})},generatorFilter:r,groupFilter:n}),s}async function Osl({cliContext:e,apiWorkspaces:t,perGeneratorAction:r,generatorFilter:n,groupFilter:i}){await Promise.all(t.map(async o=>{await e.runTaskForWorkspace(o,async s=>{let a=await W3({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?py(n):void 0;for(let u of a.groups)if(!(i!=null&&u.groupName!==i))for(let l of u.generators)c!=null&&l.name!==c||await r(o.workspaceName,u.groupName,l,s)})}))}function Psl(e,t,r){let n=[];for(let[i,o]of Object.entries(e))for(let[s,a]of Object.entries(o)){r.debug(`Checking if ${s} in group ${i} has an upgrade available...`);let c;try{c=qQ(a.latestVersion,a.previousVersion)}catch{throw new D({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:D.Code.ConfigError})}r.debug(`Latest version: ${a.latestVersion}. `+(c?"Upgrade available.":"No upgrade available.")),n.push({generatorName:s,generatorGroup:i,apiName:t,isUpgradeAvailable:c,currentVersion:a.previousVersion,latestVersion:a.latestVersion})}return n}async function qyi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await sdg({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(...Psl(u,c,t.logger));else s.push(...Psl(a.versions,void 0,t.logger))}return s}_t();async function $he({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await dFt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new D({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:D.Code.NetworkError})}}var Dsl=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Gyi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Gn.Info;isLocal;stdoutRedirector=new Vyi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await hVt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new q3t(t,r),this.isLocal=n??!1,this.posthogManager=i;let o=this.getPackageName(),s=this.getPackageVersion(),a=this.getCliName();(o==null||s==null||a==null)&&this.exitProgram(),this.environment={packageName:o,packageVersion:s,cliName:a},this.sentryClient=new _yi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new Lyi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.44.10"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${Ae.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new fu}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof fu)&&(T3t({message:t,error:r,logger:this.logger}),zyi(this,r,{...n,message:t}))}enableJsonMode(){this.jsonMode||(this.jsonMode=!0,this.stdoutRedirector.redirect())}get isJsonMode(){return this.jsonMode}writeJsonToStdout(t){this.stdoutRedirector.restore(),process.stdout.write(JSON.stringify(t,null,2)+`
|
|
5037
5037
|
`),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 Bsl({cliEnvironment:this.environment,upgradeInfo:t});r!=null&&(r.endsWith(`
|
|
5038
5038
|
`)||(r+=`
|
|
5039
5039
|
`),this.stderr.info(r))}catch{}}async exitIfFailed(){this.didSucceed||await this.exit()}exitProgram({code:t}={}){process.exit(t??(this.didSucceed?0:1))}longestWorkspaceName;registerWorkspaces(t){let r=uPi(t.map(n=>n.type==="docs"?"docs":n.workspaceName??"api"),n=>n.length);r!=null&&(this.longestWorkspaceName=r)}project;registerProject(t){this.project=t,this.automationTelemetryManager.setOrganization(t.config.organization)}runTask(t){return this.runTaskWithInit(this.constructTaskInit(),t)}addTask(){return this.addTaskWithInit(this.constructTaskInit())}async runTaskForWorkspace(t,r){await this.runTaskWithInit(this.constructTaskInitForWorkspace(t),r)}addTaskWithInit(t){let r=new OXt(t);return this.ttyAwareLogger.registerTask(r),r}USE_NODE_18_OR_ABOVE_MESSAGE="The Fern CLI requires Node 18+ or above.";async runTaskWithInit(t,r){let n=this.addTaskWithInit(t).start(),i;try{i=await r(n)}catch(o){throw n.failWithoutThrowing(void 0,o),new fu}finally{n.finish()}return i}instrumentPostHogEvent(t){this.isLocal||this.posthogManager.sendEvent(t)}instrumentPostHogAutomationEvent(t){this.isLocal||this.posthogManager.sendAutomationEvent(t)}captureException(t,r){return this.sentryClient.captureException(t,r)}emitAutomationTelemetryEvent(t,r){this.automationTelemetryManager.emit(t,r)}logger=VI((t,...r)=>this.log(t,...r));stderr=VI((t,...r)=>this.logStderr(t,...r));constructTaskInitForWorkspace(t){let r=t.type==="docs"?"docs":t.workspaceName??"api",n=Rsl(r),i=1+(this.longestWorkspaceName!=null?Rsl(this.longestWorkspaceName):n).length,o=n.padEnd(i),s=Dsl[this.numTasks++%Dsl.length],a=Ae.hex(s)(o);return{...this.constructTaskInit(),logPrefix:a,title:Ae.hex(s).bold(r)}}constructTaskInit(){return{logImmediately:t=>this.logImmediately(t),takeOverTerminal:t=>this.ttyAwareLogger.takeOverTerminal(t),onResult:t=>{t===Uf.Failure&&(this.didSucceed=!1)},instrumentPostHogEvent:t=>{this.instrumentPostHogEvent(t)},shouldBufferLogs:!1,captureException:(t,r)=>this.sentryClient.captureException(t,r),emitAutomationTelemetryEvent:(t,r)=>this.emitAutomationTelemetryEvent(t,r)}}log(t,...r){this.logImmediately([{parts:r,level:t,time:new Date}])}logStderr(t,...r){this.logImmediately([{parts:r,level:t,time:new Date}],{stderr:!0})}logImmediately(t,{stderr:r=!1}={}){let n=t.filter(i=>kx.indexOf(i.level)>=kx.indexOf(this.logLevel));this.ttyAwareLogger.log(n,{includeDebugInfo:this.logLevel===Gn.Debug,stderr:r||this.jsonMode})}_suppressUpgradeMessage=!1;suppressUpgradeMessage(){this._suppressUpgradeMessage=!0}_isUpgradeAvailable;async isUpgradeAvailable({includePreReleases:t=!1}={}){if(this._isUpgradeAvailable==null){this.logger.debug(`Checking if ${this.environment.packageName} upgrade is available...`);let r=await $he({cliEnvironment:this.environment,includePreReleases:t}),n=qQ(r,this.environment.packageVersion);this.logger.debug(`Latest version: ${r}. `+(n?"Upgrade available.":"No upgrade available."));let i={isUpgradeAvailable:n,latestVersion:r},o=await qyi({project:this.project,cliContext:this});this._isUpgradeAvailable={cliUpgradeInfo:i,generatorUpgradeInfo:o}}return this._isUpgradeAvailable}async confirmPrompt(t,r=!1){try{return await vvs({message:t,choices:[{name:"No",value:!1},{name:"Yes",value:!0}],default:r,theme:{prefix:Ae.yellow("?"),style:{answer:i=>Ae.cyan(i),message:i=>Ae.bold(i),highlight:i=>Ae.cyan(i)}}})}catch(n){throw n?.name==="ExitPromptError"?(this.logger.info(`
|