fern-api 5.54.0 → 5.55.0
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 +10 -8
- package/package.json +1 -1
package/cli.cjs
CHANGED
|
@@ -3022,7 +3022,7 @@ ${uTu.default.cursorShow}`)}releaseCursor(){this.extraLinesUnderPrompt>0&&vFo(th
|
|
|
3022
3022
|
`+_6e.default.red(">> ")+t),this.screen.render(r,n)}getMaskedValue(t){return this.status==="answered"?this.opt.mask?_6e.default.cyan(yTu(t,this.opt.mask)):_6e.default.italic(_6e.default.dim("[hidden]")):this.opt.mask?yTu(t,this.opt.mask):_6e.default.italic(_6e.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 $8r=be(Rw(),1);var AOu=be(nko(),1),X8r=require("child_process"),Dnt=require("fs"),Y8r=be(require("path"),1),yOu=be(require("os"),1),bOu=require("crypto"),Uko=be(hOu(),1);var H8r=class extends Error{originalError;constructor(t){super(`Failed to create temporary file. ${t.message}`),this.originalError=t}};var _4t=class extends Error{originalError;constructor(t){super(`Failed to launch editor. ${t.message}`),this.originalError=t}};var K8r=class extends Error{originalError;constructor(t){super(`Failed to read temporary file. ${t.message}`),this.originalError=t}};var J8r=class extends Error{originalError;constructor(t){super(`Failed to remove temporary file. ${t.message}`),this.originalError=t}};function Z8r(e="",t,r){let n=new Vko(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 gOu(e){return e?e.replace(/[^a-zA-Z0-9_.-]/g,"_"):""}function Kcm(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 Vko=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=Kcm(t).map(i=>i.replace("\\ "," ")),n=r.shift();this.editor={args:r,bin:n}}createTemporaryFile(){try{let t=this.fileOptions.dir??yOu.default.tmpdir(),r=(0,bOu.randomUUID)(),n=gOu(this.fileOptions.prefix),i=gOu(this.fileOptions.postfix),o=`${n}${r}${i}`,s=Y8r.default.resolve(t,o),a=Y8r.default.resolve(t)+Y8r.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,Dnt.writeFileSync)(this.tempFile,this.text,c)}catch(t){throw new H8r(t)}}readTemporaryFile(){try{let t=(0,Dnt.readFileSync)(this.tempFile);if(t.length===0)this.text="";else{let r=(0,AOu.detect)(t)??"utf8";Uko.default.encodingExists(r)||(r="utf8"),this.text=Uko.default.decode(t,r)}}catch(t){throw new K8r(t)}}removeTemporaryFile(){try{(0,Dnt.unlinkSync)(this.tempFile)}catch(t){throw new J8r(t)}}launchEditor(){try{let t=(0,X8r.spawnSync)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"});this.lastExitStatus=t.status??0}catch(t){throw new _4t(t)}}launchEditorAsync(t){try{(0,X8r.spawn)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"}).on("exit",n=>{this.lastExitStatus=n,setImmediate(t)})}catch(r){throw new _4t(r)}}};var EOu=be(HL(),1);var q4t=class extends Fw{_run(t){this.done=t,this.editorResult=new EOu.Subject;let r=EB(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"?$8r.default.dim("Received"):$8r.default.dim("Press <enter> to launch your preferred editor."),t&&(r=$8r.default.red(">> ")+t),this.screen.render(n,r)}startExternalEditor(){this.rl.pause(),Z8r(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 wOu=require("stream");var xOu=be(require("readline"),1),COu=be(vOu(),1),H6e=class{constructor(t){this.rl||=xOu.default.createInterface(Ycm(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 Ycm(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 COu.default;return r.pipe(e.output||process.stdout),{terminal:!0,...e,input:t,output:r}}var G4t=class extends H6e{constructor(t={}){super(t),this.log=new wOu.Writable({write:(r,n,i)=>{this.writeLog(r),i()}}),this.bottomBar=t.bottomBar||"",this.render()}render(){return this.write(this.bottomBar),this}clean(){return O4t(this.rl,this.bottomBar.split(`
|
|
3023
3023
|
`).length),this}updateBottomBar(t){return O4t(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+`
|
|
3024
3024
|
`}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&&I8r(this.rl,t.length+this.rl.line.length),this.rl.output.write(t)}};var wd=be(HL(),1),OOu=be(o4t(),1);var e9r=be(HL(),1),SOu=be(o4t(),1),t9r=function(e,t,r){return typeof e[t]!="function"?(0,e9r.of)(e):(0,e9r.from)((0,SOu.default)(e[t])(r).then(n=>(e[t]=n,e)))};var TOu={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}},Rnt=class extends H6e{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,wd.from)(t):(0,wd.isObservable)(t)?n=t:Object.values(t).every(i=>typeof i=="object"&&!Array.isArray(i)&&i!=null)?n=(0,wd.from)(Object.entries(t).map(([i,o])=>({name:i,...o}))):n=(0,wd.from)([t]),this.process=n.pipe((0,wd.concatMap)(this.processQuestion.bind(this)),(0,wd.publish)()),this.process.connect(),this.process.pipe((0,wd.reduce)((i,o)=>(TOu.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,wd.defer)(()=>(0,wd.of)(t).pipe((0,wd.concatMap)(this.setDefaultType.bind(this)),(0,wd.concatMap)(this.filterIfRunnable.bind(this)),(0,wd.concatMap)(()=>t9r(t,"message",this.answers)),(0,wd.concatMap)(()=>t9r(t,"default",this.answers)),(0,wd.concatMap)(()=>t9r(t,"choices",this.answers)),(0,wd.concatMap)(this.fetchAnswer.bind(this))))}fetchAnswer(t){let r=this.prompts[t.type];return this.activePrompt=new r(t,this.rl,this.answers),(0,wd.defer)(()=>(0,wd.from)(this.activePrompt.run().then(n=>({name:t.name,answer:n}))))}setDefaultType(t){return this.prompts[t.type]||(t.type="input"),(0,wd.defer)(()=>(0,wd.of)(t))}filterIfRunnable(t){if(t.askAnswered!==!0&&TOu.get(this.answers,t.name)!==void 0)return wd.EMPTY;if(t.when===!1)return wd.EMPTY;if(typeof t.when!="function")return(0,wd.of)(t);let{answers:r}=this;return(0,wd.defer)(()=>(0,wd.from)((0,OOu.default)(t.when)(r).then(n=>{if(n)return t})).pipe((0,wd.filter)(n=>n!=null)))}};function BOu(e){let t=function(r,n){let i;try{i=new Rnt(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",P4t),this.registerPrompt("input",V6e),this.registerPrompt("number",D4t),this.registerPrompt("confirm",R4t),this.registerPrompt("rawlist",F4t),this.registerPrompt("expand",k4t),this.registerPrompt("checkbox",N4t),this.registerPrompt("password",j4t),this.registerPrompt("editor",q4t)},t.restoreDefaultPrompts(),t}var qko=BOu();function Zcm(e,t){qko.registerPrompt(e,t)}function $cm(){qko.restoreDefaultPrompts()}var eum={prompt:qko,ui:{BottomBar:G4t,Prompt:Rnt},createPromptModule:BOu,registerPrompt:Zcm,restoreDefaultPrompts:$cm,Separator:NQ},cu=eum;var Fnt=require("path");function DOu(){let e=tum();return async t=>{for(let r of t)r.module=e(r.filename);return t}}function tum(e=process.argv[1]?(0,Fnt.dirname)(process.argv[1]):process.cwd(),t=Fnt.sep==="\\"){let r=t?POu(e):e;return n=>{if(!n)return;let i=t?POu(n):n,{dir:o,base:s,ext:a}=Fnt.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 POu(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var Gko=e=>{if("flags"in e){let t=ROu(e.flags),r=FOu(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([i,o])=>[i,Wko(o)])),n=Object.fromEntries(Object.entries(t).map(([i,o])=>[i,rum(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function rum(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 ROu=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,W4t(r)]).filter(([,t])=>t!==void 0)),FOu=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?Wko(n):void 0]}))};var W4t=e=>e===void 0?void 0:e.variant??e.enabled,Wko=e=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};var Wk=(function(e){return e.AnonymousId="anonymous_id",e.DistinctId="distinct_id",e.Props="props",e.EnablePersonProcessing="enable_person_processing",e.PersonMode="person_mode",e.FeatureFlagDetails="feature_flag_details",e.FeatureFlags="feature_flags",e.FeatureFlagPayloads="feature_flag_payloads",e.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",e.BootstrapFeatureFlags="bootstrap_feature_flags",e.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",e.OverrideFeatureFlags="override_feature_flags",e.Queue="queue",e.LogsQueue="logs_queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionStartTimestamp="session_start_timestamp",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version",e.SessionReplay="session_replay",e.SurveyLastSeenDate="survey_last_seen_date",e.SurveysSeen="surveys_seen",e.Surveys="surveys",e.RemoteConfig="remote_config",e.FlagsEndpointWasHit="flags_endpoint_was_hit",e.DeviceId="device_id",e})({});function Hko(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}var ium="NativeGzipValidationError",oum=31,sum=139,aum=8,cum=e=>e.length>=2&&e[0]===oum&&e[1]===sum;var H4t,uum=()=>{if(H4t)return H4t;H4t=[];for(let e=0;e<256;e++){let t=e;for(let r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;H4t[e]=t>>>0}return H4t},lum=e=>{let t=uum(),r=4294967295;for(let n=0;n<e.length;n++)r=t[(r^e[n])&255]^r>>>8;return(4294967295^r)>>>0},r9r=e=>{let t=new Error(`Native gzip produced invalid output: ${e}`);throw t.name=ium,t},pum=async(e,t)=>{e.size<18&&r9r("too-short");let r=new Uint8Array(await e.slice(0,10).arrayBuffer());(!cum(r)||r[2]!==aum)&&r9r("invalid-header");let n=new DataView(await e.slice(e.size-8).arrayBuffer());n.getUint32(0,!0)!==lum(t)&&r9r("invalid-crc");let i=t.length>>>0;n.getUint32(4,!0)!==i&&r9r("invalid-size")};async function K4t(e,t=!0,r){try{let n=new TextEncoder().encode(e),i=new CompressionStream("gzip"),o=i.writable.getWriter(),s=o.write(n).then(()=>o.close()).catch(async u=>{try{await o.abort(u)}catch{}throw u}),a=new Response(i.readable).blob(),[c]=await Promise.all([a,s]);return await pum(c,n),c}catch(n){if(r?.rethrow)throw n;return t&&console.error("Failed to gzip compress data",n),null}}var fum=["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"],kOu=function(e,t=[]){if(!e)return!1;let r=e.toLowerCase();return fum.concat(t).some(n=>{let i=n.toLowerCase();return r.indexOf(i)!==-1})};var mum=Array.isArray,NOu=Object.prototype,HpI=NOu.hasOwnProperty,Kko=NOu.toString,knt=mum||function(e){return Kko.call(e)==="[object Array]"};var J4t=e=>e===Object(e)&&!knt(e);var Nnt=e=>e===void 0,Ave=e=>Kko.call(e)=="[object String]",jOu=e=>Ave(e)&&e.trim().length===0;var Y4t=e=>Kko.call(e)=="[object Number]"&&e===e;var Jko=e=>e instanceof Error;function n9r(e){return e===null||typeof e!="object"}function K6e(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function QOu(e){return K6e(e,"ErrorEvent")}function jnt(e){return typeof Event<"u"&&hum(e,Event)}function zOu(e){return K6e(e,"Object")}function hum(e,t){try{return e instanceof t}catch{return!1}}function X4t(e,t,r,n,i){return t>r&&(n.warn("min cannot be greater than max."),t=r),Y4t(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),X4t(i||r,t,r,n))}var gum=864e5,i9r=class{constructor(t){this._buckets={},this._onBucketRateLimited=t._onBucketRateLimited,this._bucketSize=X4t(t.bucketSize,0,100,t._logger),this._refillRate=X4t(t.refillRate,0,this._bucketSize,t._logger),this._refillInterval=X4t(t.refillInterval,0,gum,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 o9r="0123456789abcdef",s9r=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+=o9r.charAt(this.bytes[r]>>>4),t+=o9r.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+=o9r.charAt(this.bytes[r]>>>4),t+=o9r.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}},Yko=class{constructor(t){this.timestamp=0,this.counter=0,this.random=t??Aum()}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 s9r.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,s9r.ofInner(t)}},Aum=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),MOu,uee=()=>yum().toString(),yum=()=>(MOu||(MOu=new Yko)).generate();var a9r=class{add(t){let r=uee();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 bum(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var LOu=(e,t,r)=>{function n(o,...s){t(()=>{let a=r[o];a(e,...s)})}return{debug:(...o)=>{n("debug",...o)},info:(...o)=>{n("log",...o)},warn:(...o)=>{n("warn",...o)},error:(...o)=>{n("error",...o)},critical:(...o)=>{r.error(e,...o)},createLogger:o=>LOu(`${e} ${o}`,t,r)}},Eum=e=>e();function UOu(e,t=Eum){return LOu(e,t,bum())}var znt="Mobile",u9r="iOS",Qnt="Android",VOu="Tablet",ofI=Qnt+" "+VOu;var vum="Apple",sfI=vum+" Watch",_Ou="Safari",l9r="BlackBerry",qOu="Samsung",xum=qOu+"Browser",Cum=qOu+" Internet",p9r="Chrome",wum=p9r+" OS",Sum=p9r+" "+u9r,GOu="Internet Explorer",Tum=GOu+" "+znt,Zko="Opera",afI=Zko+" Mini",WOu="Edge",Oum="Microsoft "+WOu,$ko="Firefox",Bum=$ko+" "+u9r,e2o="Nintendo",t2o="PlayStation",c9r="Xbox",Pum=Qnt+" "+znt,Dum=znt+" "+_Ou,Z4t="Windows",Rum=Z4t+" Phone";var HOu="Generic",cfI=HOu+" "+znt.toLowerCase(),ufI=HOu+" "+VOu.toLowerCase(),Fum="Konqueror",kum="Oculus Browser",SD="(\\d+(\\.\\d+)?)",Xko=new RegExp("Version/"+SD),lfI=new RegExp(c9r,"i"),pfI=new RegExp(t2o+" \\w+","i"),ffI=new RegExp(e2o+" \\w+","i"),Num=new RegExp(l9r+"|PlayBook|BB10","i"),jum={"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 dfI={[Tum]:[new RegExp("rv:"+SD)],[Oum]:[new RegExp(WOu+"?\\/"+SD)],[p9r]:[new RegExp("("+p9r+"|CrMo)\\/"+SD)],[Sum]:[new RegExp("CriOS\\/"+SD)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+SD)],[_Ou]:[Xko],[Dum]:[Xko],[Zko]:[new RegExp("("+Zko+"|OPR)\\/"+SD)],[$ko]:[new RegExp($ko+"\\/"+SD)],[Bum]:[new RegExp("FxiOS\\/"+SD)],[Fum]:[new RegExp("Konqueror[:/]?"+SD,"i")],[l9r]:[new RegExp(l9r+" "+SD),Xko],[Pum]:[new RegExp("android\\s"+SD,"i")],[Cum]:[new RegExp(xum+"\\/"+SD)],[kum]:[new RegExp("OculusBrowser\\/"+SD)],[GOu]:[new RegExp("(rv:|MSIE )"+SD)],Mozilla:[new RegExp("rv:"+SD)]};var mfI=[[new RegExp(c9r+"; "+c9r+" (.*?)[);]","i"),e=>[c9r,e&&e[1]||""]],[new RegExp(e2o,"i"),[e2o,""]],[new RegExp(t2o,"i"),[t2o,""]],[Num,[l9r,""]],[new RegExp(Z4t,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[Rum,""];if(new RegExp(znt).test(t)&&!/IEMobile\b/.test(t))return[Z4t+" "+znt,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let n=r[1],i=jum[n]||"";return/arm/i.test(t)&&(i="RT"),[Z4t,i]}return[Z4t,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,e=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[u9r,t.join(".")]}return[u9r,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,e=>{let t="";return e&&e.length>=3&&(t=Nnt(e[2])?e[3]:e[2]),["watchOS",t]}],[new RegExp("("+Qnt+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Qnt+")","i"),e=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[Qnt,t.join(".")]}return[Qnt,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,e=>{let t=["Mac OS X",""];if(e&&e[1]){let r=[e[1],e[2],e[3]||"0"];t[1]=r.join(".")}return t}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[wum,""]],[/Linux|debian/i,["Linux",""]]];var KOu="utf8";function JOu(e){return e?.replace(/\/+$/,"")}async function YOu(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 f9r(){return new Date().toISOString()}function lee(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}var XOu=e=>e instanceof Error;function r2o(e){return Promise.all(e.map(t=>(t??Promise.resolve()).then(r=>({status:"fulfilled",value:r}),r=>({status:"rejected",reason:r}))))}var Qum={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},OfI=Qum.info;var d9r=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 Y6e=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()}},J6e=class extends Error{constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};async function ZOu(e){if(e instanceof Y6e){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 m9r(e){return typeof e=="object"&&(e instanceof Y6e||e instanceof J6e)}function h9r(e){return typeof e=="object"&&e instanceof Y6e&&e.status===413}var $4t=class{constructor(t,r={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new a9r,this._events=new d9r,this._isInitialized=!1;let n=typeof t=="string"?t.trim():"",i=typeof r.host=="string"?r.host.trim():"",o=!n;this._logger=UOu("[PostHog]",this.logMsgIfDebug.bind(this)),o&&this._logger.error("You must pass your PostHog project's api key. The client will be disabled."),this.apiKey=n,this.host=JOu(i||"https://us.i.posthog.com"),this.flushAt=r.flushAt?Math.max(r.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,r.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,r.maxQueueSize??1e3),this.flushInterval=r.flushInterval??1e4,this.preloadFeatureFlags=r.preloadFeatureFlags??!0,this.defaultOptIn=r.defaultOptIn??!0,this.disableSurveys=r.disableSurveys??!1,this._retryOptions={retryCount:r.fetchRetryCount??3,retryDelay:r.fetchRetryDelay??3e3,retryCheck:m9r},this.requestTimeout=r.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=r.featureFlagsRequestTimeoutMs??3e3,this.remoteConfigRequestTimeoutMs=r.remoteConfigRequestTimeoutMs??3e3,this.disableGeoip=r.disableGeoip??!0,this.disabled=(r.disabled??!1)||o,this.historicalMigration=r?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=r?.evaluationContexts??r?.evaluationEnvironments,r?.evaluationEnvironments&&!r?.evaluationContexts&&this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version."),this.disableCompression=!Hko()||(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(Wk.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Wk.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Wk.OptedOut,!0)})}on(t,r){return this._events.on(t,r)}debug(t=!0){if(this.removeDebugCallback?.(),t){let r=this.on("*",(n,i)=>this._logger.info(n,i));this.removeDebugCallback=()=>{r(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(t){return{distinct_id:t.distinct_id,event:t.event,properties:{...t.properties||{},...this.getCommonEventProperties()}}}addPendingPromise(t){return this.promiseQueue.add(t)}identifyStateless(t,r,n){this.wrap(()=>{let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};this.enqueue("identify",i,n)})}async identifyStatelessImmediate(t,r,n){let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};await this.sendImmediate("identify",i,n)}captureStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({distinct_id:t,event:r,properties:n});this.enqueue("capture",o,i)})}async captureStatelessImmediate(t,r,n,i){let o=this.buildPayload({distinct_id:t,event:r,properties:n});await this.sendImmediate("capture",o,i)}aliasStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});this.enqueue("alias",o,i)})}async aliasStatelessImmediate(t,r,n,i){let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});await this.sendImmediate("alias",o,i)}groupIdentifyStateless(t,r,n,i,o,s){this.wrap(()=>{let a=this.buildPayload({distinct_id:o||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{},...s||{}}});this.enqueue("capture",a,i)})}async getRemoteConfig(){await this._initPromise;let t=this.host;t==="https://us.i.posthog.com"?t="https://us-assets.i.posthog.com":t==="https://eu.i.posthog.com"&&(t="https://eu-assets.i.posthog.com");let r=`${t}/array/${this.apiKey}/config`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(r,n,{retryCount:0},this.remoteConfigRequestTimeoutMs).then(i=>i.json()).catch(i=>{this._logger.error("Remote config could not be loaded",i),this._events.emit("error",i)})}async getFlags(t,r={},n={},i={},o={},s=!1){await this._initPromise;let a=s?"&config=true":"",c=`${this.host}/flags/?v=2${a}`,u={token:this.apiKey,distinct_id:t,groups:r,person_properties:n,group_properties:i,...o};n.$device_id&&(u.$device_id=n.$device_id),this.evaluationContexts&&this.evaluationContexts.length>0&&(u.evaluation_contexts=this.evaluationContexts);let l={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(u)};return this._logger.info("Flags URL",c),this.fetchWithRetry(c,l,{retryCount:0},this.featureFlagsRequestTimeoutMs).then(p=>p.json()).then(p=>({success:!0,response:Gko(p)})).catch(p=>(this._events.emit("error",p),{success:!1,error:this.categorizeRequestError(p)}))}categorizeRequestError(t){if(t instanceof Y6e)return{type:"api_error",statusCode:t.status};if(t instanceof J6e){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=W4t(a.response);return c===void 0&&(c=!1),{response:c,requestId:a.requestId}}async getFeatureFlagDetailStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagDetailsStateless(r,n,i,o,s,[t]);return a===void 0?void 0:{response:a.flags[t],requestId:a.requestId,evaluatedAt:a.evaluatedAt}}async getFeatureFlagPayloadStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagPayloadsStateless(r,n,i,o,s,[t]);if(!a)return;let c=a[t];return c===void 0?null:c}async getFeatureFlagPayloadsStateless(t,r={},n={},i={},o,s){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o,s)).payloads}async getFeatureFlagsStateless(t,r={},n={},i={},o,s){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o,s)}async getFeatureFlagsAndPayloadsStateless(t,r={},n={},i={},o,s){await this._initPromise;let a=await this.getFeatureFlagDetailsStateless(t,r,n,i,o,s);return a?{flags:a.featureFlags,payloads:a.featureFlagPayloads,requestId:a.requestId}:{flags:void 0,payloads:void 0,requestId:void 0}}async getFeatureFlagDetailsStateless(t,r={},n={},i={},o,s){await this._initPromise;let a={};(o??this.disableGeoip)&&(a.geoip_disable=!0),s&&(a.flag_keys_to_evaluate=s);let c=await this.getFlags(t,r,n,i,a);if(!c.success)return;let u=c.response;return u.errorsWhileComputingFlags&&console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices"),u.quotaLimited?.includes("feature_flags")?(console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:u?.requestId,quotaLimited:u.quotaLimited}):u}async getSurveysStateless(){if(await this._initPromise,this.disabled)return[];if(this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let t=`${this.host}/api/surveys/?token=${this.apiKey}`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},i=(await this.fetchWithRetry(t,r).then(o=>{if(o.status!==200||!o.json){let s=`Surveys API could not be loaded: ${o.status}`,a=new Error(s);this._logger.error(a),this._events.emit("error",new Error(s));return}return o.json()}).catch(o=>{this._logger.error("Surveys API could not be loaded",o),this._events.emit("error",o)}))?.surveys;return i&&this._logger.info("Surveys fetched from API: ",JSON.stringify(i)),i??[]}get props(){return this._props||(this._props=this.getPersistedProperty(Wk.Props)),this._props||{}}set props(t){this._props=t}async register(t){this.wrap(()=>{this.props={...this.props,...t},this.setPersistedProperty(Wk.Props,this.props)})}async unregister(t){this.wrap(()=>{delete this.props[t],this.setPersistedProperty(Wk.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(Wk.Queue)||[];o.length>=this.maxQueueSize&&(o.shift(),this._logger.info("Queue is full, the oldest event is dropped.")),o.push({message:i}),this.setPersistedProperty(Wk.Queue,o),this._events.emit(t,i),o.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=lee(()=>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:f9r()};this.historicalMigration&&(o.historical_migration=!0);let s=JSON.stringify(o),a=`${this.host}/batch/`,c=this.disableCompression?null:await K4t(s,this.isDebug),u={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...c!==null&&{"Content-Encoding":"gzip"}},body:c||s};try{await(await this.fetchWithRetry(a,u)).body?.cancel()?.catch(()=>{})}catch(l){this._events.emit("error",l)}}prepareMessage(t,r,n){let i={...r,type:t,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:n?.timestamp?n?.timestamp:f9r(),uuid:n?.uuid?n.uuid:uee()};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 ZOu(t)})}async flush(){if(this.disabled)return;let t=r2o([this.flushPromise]).then(()=>this._flush());return this.flushPromise=t,this.addPendingPromise(t),r2o([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(Wk.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(Wk.Queue)||[]).slice(i.length);this.setPersistedProperty(Wk.Queue,m),t=m,await this.flushStorage()},a={api_key:this.apiKey,batch:o,sent_at:f9r()};this.historicalMigration&&(a.historical_migration=!0);let c=JSON.stringify(a),u=`${this.host}/batch/`,l=this.disableCompression?null:await K4t(c,this.isDebug),p={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...l!==null&&{"Content-Encoding":"gzip"}},body:l||c},d={retryCheck:f=>h9r(f)?!1:m9r(f)};try{await(await this.fetchWithRetry(u,p,d)).body?.cancel()?.catch(()=>{})}catch(f){if(h9r(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 J6e||await s(),this._events.emit("error",f),f}await s(),r.push(...o)}this._events.emit("flush",r)}async _sendLogsBatch(t){if(this.disabled)return{kind:"fatal",error:new Error("The client is disabled")};let r=JSON.stringify(t),n=`${this.host}/i/v1/logs?token=${encodeURIComponent(this.apiKey)}`,i=this.disableCompression?null:await K4t(r,this.isDebug),o={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...i!==null&&{"Content-Encoding":"gzip"}},body:i||r};try{return await this.fetchWithRetry(n,o,{retryCheck:s=>h9r(s)?!1:m9r(s)}),{kind:"ok"}}catch(s){return h9r(s)?{kind:"too-large"}:s instanceof J6e?{kind:"retry-later",error:s}:{kind:"fatal",error:s}}}async fetchWithRetry(t,r,n,i){let o=r.body?r.body:"",s=-1;try{s=o instanceof Blob?o.size:Buffer.byteLength(o,KOu)}catch{o instanceof Blob?s=o.size:s=new TextEncoder().encode(o).length}return await YOu(async()=>{let a=new AbortController,c=i??this.requestTimeout,u=lee(()=>a.abort(),c),l=null;try{l=await this.fetch(t,{signal:a.signal,...r})}catch(d){throw new J6e(d)}finally{clearTimeout(u)}if(!(r.mode==="no-cors")&&(l.status<200||l.status>=400))throw new Y6e(l,s);return l},{...this._retryOptions,...n})}async _shutdown(t=3e4){await this._initPromise;let r=!1;if(this.clearFlushTimer(),this.disabled)return;let n=async()=>{try{for(await this.promiseQueue.join();!((this.getPersistedProperty(Wk.Queue)||[]).length===0||(await this.flush(),r)););}catch(o){if(!m9r(o))throw o;await ZOu(o)}},i;try{return await Promise.race([new Promise((o,s)=>{i=lee(()=>{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 QQ={};X(QQ,{DEFAULT_EXCEPTION_STEPS_CONFIG:()=>E9r,DOMExceptionCoercer:()=>s2o,EXCEPTION_STEP_INTERNAL_FIELDS:()=>eUt,ErrorCoercer:()=>a2o,ErrorEventCoercer:()=>c2o,ErrorPropertiesBuilder:()=>n2o,EventCoercer:()=>p2o,ExceptionStepsBuffer:()=>g2o,ObjectCoercer:()=>l2o,PrimitiveCoercer:()=>f2o,PromiseRejectionEventCoercer:()=>d2o,ReduceableCache:()=>m2o,StringCoercer:()=>u2o,chromeStackLineParser:()=>i2o,createDefaultStackParser:()=>elm,createStackParser:()=>uBu,geckoStackLineParser:()=>o2o,getUtf8ByteLength:()=>pBu,nodeStackLineParser:()=>oBu,opera10StackLineParser:()=>rBu,opera11StackLineParser:()=>nBu,resolveExceptionStepsConfig:()=>h2o,reverseAndStripFrames:()=>cBu,stripReservedExceptionStepFields:()=>nlm,winjsStackLineParser:()=>tBu});var g9r,$Ou,A9r;function eBu(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);return A9r&&r.length===$Ou||($Ou=r.length,A9r=r.reduce((n,i)=>{g9r||(g9r={});let o=g9r[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,g9r[i]=[u,l];break}}}return n},{})),A9r}var Uum=4,n2o=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&&knt(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:eBu(this.stackParser),skipFirstLines:t.skipFirstLines??1}}buildCoercingContext(t,r,n=0){let i=(s,a)=>{if(a<=Uum){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 vB="?";function pee(e,t,r,n,i){let o={platform:e,filename:t,function:r==="<anonymous>"?vB:r,in_app:!0};return Nnt(n)||(o.lineno=n),Nnt(i)||(o.colno=i),o}var y9r=(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]:vB,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var Vum=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,_um=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,qum=/\((\S*)(?::(\d+))(?::(\d+))\)/,i2o=(e,t)=>{let r=Vum.exec(e);if(r){let[,i,o,s]=r;return pee(t,i,vB,+o,+s)}let n=_um.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let a=qum.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}let[o,s]=y9r(n[1]||vB,n[2]);return pee(t,s,o,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var Gum=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,Wum=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,o2o=(e,t)=>{let r=Gum.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let s=Wum.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]||vB;return[o,i]=y9r(o,i),pee(t,i,o,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var Hum=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,tBu=(e,t)=>{let r=Hum.exec(e);return r?pee(t,r[2],r[1]||vB,+r[3],r[4]?+r[4]:void 0):void 0};var Kum=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,rBu=(e,t)=>{let r=Kum.exec(e);return r?pee(t,r[2],r[3]||vB,+r[1]):void 0},Jum=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,nBu=(e,t)=>{let r=Jum.exec(e);return r?pee(t,r[5],r[3]||r[4]||vB,+r[1],+r[2]):void 0};var Yum=/^\s*[-]{4,}$/,Xum=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,oBu=(e,t)=>{let r=e.match(Xum);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||vB,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:iBu(r[3]),colno:iBu(r[4]),in_app:Zum(c||"",u),platform:t}}if(e.match(Yum))return{filename:e,platform:t}};function Zum(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 iBu(e){return parseInt(e||"",10)||void 0}var sBu=/\(error: (.*)\)/,aBu=50;function cBu(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,aBu).map(r=>({...r,filename:r.filename||$um(t).filename,function:r.function||vB}))}function $um(e){return e[e.length-1]||{}}function elm(){return uBu("web:javascript",i2o,o2o)}function uBu(e,...t){return(r,n=0)=>{let i=[],o=r.split(`
|
|
3025
|
-
`);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=sBu.test(a)?a.replace(sBu,"$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>=aBu)break}}return cBu(i)}}var s2o=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=Ave(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 K6e(t,"DOMException")}isDOMError(t){return K6e(t,"DOMError")}};var a2o=class{match(t){return Jko(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 c2o=class{constructor(){}match(t){return QOu(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 tlm=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,u2o=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(tlm);return i&&(r=i[1],n=i[2]),[r,n]}};var lBu=["fatal","error","warning","log","info","debug"];function b9r(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 l2o=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 jnt(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=b9r(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return Ave(t)&&!jOu(t)&&lBu.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(XOu(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var p2o=class{match(t){return jnt(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${b9r(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var f2o=class{match(t){return n9r(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var d2o=class{match(t){return K6e(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!jnt(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 n9r(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 m2o=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 eUt={MESSAGE:"$message",TIMESTAMP:"$timestamp"},rlm=new Set([eUt.MESSAGE,eUt.TIMESTAMP]),E9r={enabled:!0,max_bytes:32768};function h2o(e){return e?{enabled:e.enabled??E9r.enabled,max_bytes:ilm(e.max_bytes,E9r.max_bytes)}:{...E9r}}function nlm(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,i)=>rlm.has(i)?(t.push(i),n):(n[i]=e[i],n),{}),droppedKeys:t}}var g2o=class{constructor(t){this._entries=[],this._totalBytes=0,this._config=h2o(t)}setConfig(t){this._config=h2o(t),this._trimToMaxBytes()}add(t){let r=olm(t);if(!r)return;let n=pBu(r.json);n>this._config.max_bytes||(this._entries.push({step:r.step,bytes:n}),this._totalBytes+=n,this._trimToMaxBytes())}getAttachable(){return this._entries.map(t=>t.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){for(;this._totalBytes>this._config.max_bytes&&this._entries.length>0;){let t=this._entries.shift();t&&(this._totalBytes-=t.bytes)}}};function ilm(e,t){if(!Y4t(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);return r<0?t:r}function olm(e){let t=slm(e);if(t)try{let r=JSON.parse(t);if(!J4t(r))return;let n=r,i=n[eUt.MESSAGE],o=n[eUt.TIMESTAMP];return!Ave(i)||i.trim().length===0||!Ave(o)&&!Y4t(o)?void 0:{step:n,json:t}}catch{return}}function slm(e){let t=new WeakSet;try{return JSON.stringify(e,(r,n)=>{if(typeof n=="bigint")return n.toString();if(!(typeof n=="function"||typeof n=="symbol")){if(n instanceof Date)return n.toISOString();if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(n&&typeof n=="object"){if(t.has(n))return"[Circular]";t.add(n)}return n}})}catch{return}}function pBu(e){if(typeof TextEncoder<"u")return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),r=0;for(let n=0;n<t.length;n++)t[n]==="%"?(r+=1,n+=2):r+=1;return r}var mBu=require("fs"),hBu=require("readline"),I9r=new QQ.ReduceableCache(25),gBu=new QQ.ReduceableCache(20),A2o=7,alm=1e3,clm=1e4;async function ABu(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"||flm(s)||dlm(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(gBu.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=hlm(o);if(s.every(c=>mlm(i,c)))continue;let a=glm(I9r,i,{});n.push(ulm(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&llm(e,I9r),I9r.reduce(),e}function ulm(e,t,r){return new Promise(n=>{let i=(0,mBu.createReadStream)(e),o=(0,hBu.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(){gBu.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]=Alm(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 llm(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;plm(r.lineno,r,n)}}function plm(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=yBu(e);i<e;i++){let o=r[i];if(o===void 0)return void fBu(t);t.pre_context.push(o)}if(r[e]===void 0)return void fBu(t);t.context_line=r[e];let n=bBu(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 fBu(e){delete e.pre_context,delete e.context_line,delete e.post_context}function flm(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function dlm(e){return e.lineno!==void 0&&e.lineno>clm||e.colno!==void 0&&e.colno>alm}function mlm(e,t){let r=I9r.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 hlm(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=dBu(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+A2o:(i.push(n),n=dBu(o)),t++}return i}function dBu(e){return[yBu(e),bBu(e)]}function yBu(e){return Math.max(1,e-A2o)}function bBu(e){return e+A2o}function glm(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function Alm(e,t){let r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);let i=Math.max(t-60,0);i<5&&(i=0);let o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r=`...${r}`),o<n&&(r+="..."),r}var Mnt=require("path");function EBu(e=process.cwd()){let t=Mnt.sep==="\\",r=i=>t?i.replace(/\\/g,"/"):i,n=r(e);return async i=>{for(let o of i)!o.filename||o.filename.startsWith("node:")||o.filename.startsWith("data:")||(0,Mnt.isAbsolute)(o.filename)&&(o.filename=r((0,Mnt.relative)(n,r(o.filename))));return i}}function ylm(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 IBu(e,t){globalThis.process?.on("uncaughtException",ylm(e,t))}function vBu(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var blm=2e3,tH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new i9r({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return J4t(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()&&(IBu(this.onException.bind(this),this.onFatalError.bind(this)),vBu(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(blm),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var xBu="5.35.1";var ofe={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};var Lnt=class e{constructor(t){this._host=t.host,this._distinctId=t.distinctId,this._groups=t.groups,this._disableGeoip=t.disableGeoip,this._flags=t.flags,this._requestId=t.requestId,this._evaluatedAt=t.evaluatedAt,this._flagDefinitionsLoadedAt=t.flagDefinitionsLoadedAt,this._errorsWhileComputing=t.errorsWhileComputing??!1,this._quotaLimited=t.quotaLimited??!1,this._accessed=t.accessed??new Set,this._isSlice=t.isSlice??!1}isEnabled(t){let r=this._flags[t];return this._recordAccess(t),r?.enabled??!1}getFlag(t){let r=this._flags[t];if(this._recordAccess(t),!!r)return r.enabled?r.variant??!0:!1}getFlagPayload(t){return this._flags[t]?.payload}onlyAccessed(){let t={};for(let r of this._accessed){let n=this._flags[r];n&&(t[r]=n)}return this._cloneWith(t)}only(t){let r={},n=[];for(let i of t){let o=this._flags[i];o?r[i]=o:n.push(i)}return n.length>0&&this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${n.join(", ")}`),this._cloneWith(r)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let t={},r=[];for(let[n,i]of Object.entries(this._flags)){let o=i.enabled===!1?!1:i.variant??!0;t[`$feature/${n}`]=o,i.enabled&&r.push(n)}return r.length>0&&(r.sort(),t.$active_feature_flags=r),t}_cloneWith(t){return new e({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:t,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(t){if(this._accessed.add(t),this._distinctId===""||this._isSlice&&!(t in this._flags))return;let r=this._flags[t],n=r===void 0?void 0:r.enabled===!1?!1:r.variant??!0,i={$feature_flag:t,$feature_flag_response:n,$feature_flag_id:r?.id,$feature_flag_version:r?.version,$feature_flag_reason:r?.reason,locally_evaluated:r?.locallyEvaluated??!1,[`$feature/${t}`]:n,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:r?.locallyEvaluated?Date.now():this._evaluatedAt};r?.locallyEvaluated&&this._flagDefinitionsLoadedAt!==void 0&&(i.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt);let o=[];this._errorsWhileComputing&&o.push(ofe.ERRORS_WHILE_COMPUTING),this._quotaLimited&&o.push(ofe.QUOTA_LIMITED),r===void 0&&o.push(ofe.FLAG_MISSING),o.length>0&&(i.$feature_flag_error=o.join(",")),this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:t,response:n,groups:this._groups,disableGeoip:this._disableGeoip,properties:i})}};async function CBu(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 Elm=6e4,Ilm=1152921504606847e3,vlm=["is_not","is_set"],Unt=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},Sd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},fee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},v9r=class{constructor({pollingInterval:t,personalApiKey:r,projectApiKey:n,timeout:i,host:o,customHeaders:s,...a}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=t,this.personalApiKey=r,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=i,this.projectApiKey=n,this.host=o,this.poller=void 0,this.fetch=a.fetch||fetch,this.onError=a.onError,this.customHeaders=s,this.onLoad=a.onLoad,this.cacheProvider=a.cacheProvider,this.strictLocalEvaluation=a.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(t=!0){this.debugMode=t}logMsgIfDebug(t){this.debugMode&&t()}createEvaluationContext(t,r={},n={},i={},o={}){return{distinctId:t,groups:r,personProperties:n,groupProperties:i,evaluationCache:o}}async getFeatureFlag(t,r,n={},i={},o={}){await this.loadFeatureFlags();let s,a;if(!this.loadedSuccessfullyOnce)return s;if(a=this.featureFlagsByKey[t],a!==void 0){let c=this.createEvaluationContext(r,n,i,o);try{s=(await this.computeFlagAndPayloadLocally(a,c)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${t} -> ${s}`))}catch(u){u instanceof fee||u instanceof Sd?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${t}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${t}: ${u}`))}}return s}async getAllFlagsAndPayloads(t,r){await this.loadFeatureFlags();let n={},i={},o=this.featureFlags.length==0,s=r?r.map(c=>this.featureFlagsByKey[c]).filter(Boolean):this.featureFlags,a={...t,evaluationCache:t.evaluationCache??{}};return await Promise.all(s.map(async c=>{try{let{value:u,payload:l}=await this.computeFlagAndPayloadLocally(c,a);n[c.key]=u,l&&(i[c.key]=l)}catch(u){u instanceof fee||u instanceof Sd?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${c.key}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${c.key}: ${u}`)),o=!0}})),{response:n,payloads:i,fallbackToFlags:o}}async computeFlagAndPayloadLocally(t,r,n={}){let{matchValue:i,skipLoadCheck:o=!1}=n;if(o||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=i!==void 0?i:await this.computeFlagValueLocally(t,r);let a=this.getFeatureFlagPayload(t.key,s);return{value:s,payload:a}}async computeFlagValueLocally(t,r){let{distinctId:n,groups:i,personProperties:o,groupProperties:s}=r;if(!t.active)return!1;if(t.ensure_experience_continuity)throw new Sd("Flag has experience continuity enabled");let c=(t.filters||{}).aggregation_group_type_index;if(c!=null){let u=this.groupTypeMapping[String(c)];if(!u)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${c} for feature flag ${t.key}`)),new Sd("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 Sd(`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 Sd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Sd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Sd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Sd(`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 Sd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new Sd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Sd(`Dependency '${c}' could not be evaluated`)}let a=i[o];return this.flagEvaluatesToExpectedValue(t.value,a)}flagEvaluatesToExpectedValue(t,r){return typeof t=="boolean"?t===r||typeof r=="string"&&r!==""&&t===!0:typeof t=="string"?r===t:!1}async matchFeatureFlagProperties(t,r,n,i){let o=t.filters||{},s=o.groups||[],a=o.aggregation_group_type_index,{groups:c,groupProperties:u}=i,l=!1,p;for(let d of s)try{let f=d.aggregation_group_type_index!==void 0?d.aggregation_group_type_index:a,m=n,g=r;if(f!==a&&f!=null){let A=this.groupTypeMapping[String(f)];if(!A||!(A in c)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${t.key}': group type index ${f} not available`));continue}if(!(A in u)){l=!0;continue}m=u[A],g=c[A]}if(await this.isConditionMatch(t,g,d,m,i)){let A=d.variant,y=o.multivariate?.variants||[];p=A&&y.some(E=>E.key===A)?A:await this.getMatchingVariant(t,g)||!0;break}}catch(f){if(f instanceof fee)throw f;if(f instanceof Sd)l=!0;else throw f}if(p!==void 0)return p;if(l)throw new Sd("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(t,r,n,i,o){let s=n.rollout_percentage,a=c=>{this.logMsgIfDebug(()=>console.warn(c))};if((n.properties||[]).length>0){for(let c of n.properties){let u=c.type,l=!1;if(l=u==="cohort"?await BBu(c,i,this.cohorts,this.debugMode,p=>this.evaluateFlagDependency(p,i,o)):u==="flag"?await this.evaluateFlagDependency(c,i,o):OBu(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await wBu(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await wBu(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(Elm,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 Unt(`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 Unt(`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 Unt(`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 Unt&&this.onError?.(t)}}getPersonalApiKeyRequestOptions(t="GET",r){let n={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};return r&&(n["If-None-Match"]=r),{method:t,headers:n}}_requestFeatureFlagDefinitions(){let t=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,r=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;n=lee(()=>{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 wBu(e,t,r=""){let n=await CBu(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/Ilm}function OBu(e,t,r){let n=e.key,i=e.value,o=e.operator||"exact";if(n in t){if(o==="is_not_set")return!1}else{if(o==="is_not_set")return!0;throw new Sd(`Property ${n} not found in propertyValues`)}let s=t[n];if(s==null&&!vlm.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 SBu(String(i))&&String(s).match(String(i))!==null;case"not_regex":return SBu(String(i))&&String(s).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof i=="number"?i:parseFloat(String(i)),l;return l=typeof s=="number"?s:s!=null?parseFloat(String(s)):NaN,Number.isFinite(u)&&Number.isFinite(l)?c(l,u,o):c(String(s),String(i),o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new Sd("Date operations cannot be performed on boolean values");let u=Tlm(String(i));if(u==null&&(u=TBu(i)),u==null)throw new Sd(`Invalid date: ${i}`);let l=TBu(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return I_(xB(String(s)),xB(String(i)))===0;case"semver_neq":return I_(xB(String(s)),xB(String(i)))!==0;case"semver_gt":return I_(xB(String(s)),xB(String(i)))>0;case"semver_gte":return I_(xB(String(s)),xB(String(i)))>=0;case"semver_lt":return I_(xB(String(s)),xB(String(i)))<0;case"semver_lte":return I_(xB(String(s)),xB(String(i)))<=0;case"semver_tilde":{let u=xB(String(s)),{lower:l,upper:p}=Clm(String(i));return I_(u,l)>=0&&I_(u,p)<0}case"semver_caret":{let u=xB(String(s)),{lower:l,upper:p}=wlm(String(i));return I_(u,l)>=0&&I_(u,p)<0}case"semver_wildcard":{let u=xB(String(s)),{lower:l,upper:p}=Slm(String(i));return I_(u,l)>=0&&I_(u,p)<0}default:throw new Sd(`Unknown operator: ${o}`)}}function xlm(e,t){if(!(e in t))throw new fee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}async function BBu(e,t,r,n=!1,i){let o=String(e.value);xlm(o,r);let s=r[o];return PBu(s,t,r,n,i)}async function PBu(e,t,r,n=!1,i){if(!e)return!0;let o=e.type,s=e.values;if(!s||s.length===0)return!0;let a=!1;if("values"in s[0]){for(let c of s)try{let u=await PBu(c,t,r,n,i);if(o==="AND"){if(!u)return!1}else if(u)return!0}catch(u){if(u instanceof fee)throw u;if(u instanceof Sd)n&&console.debug(`Failed to compute property ${c} locally: ${u}`),a=!0;else throw u}if(a)throw new Sd("Can't match cohort without a given cohort property value");return o==="AND"}for(let c of s)try{let u;if(c.type==="cohort")u=await BBu(c,t,r,n,i);else if(c.type==="flag"){if(!i)throw new Sd(`Flag dependency '${c.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);u=await i(c)}else u=OBu(c,t);let l=c.negation||!1;if(o==="AND"){if(!u&&!l||u&&l)return!1}else if(u&&!l||!u&&l)return!0}catch(u){if(u instanceof fee)throw u;if(u instanceof Sd)n&&console.debug(`Failed to compute property ${c} locally: ${u}`),a=!0;else throw u}if(a)throw new Sd("can't match cohort without a given cohort property value");return o==="AND"}function SBu(e){try{return new RegExp(e),!0}catch{return!1}}function DBu(e,t){if(!/^\d+$/.test(e))throw new Sd(`Invalid semver: ${t}`);if(e.length>1&&e[0]==="0")throw new Sd(`Invalid semver: ${t}`);return parseInt(e,10)}function xB(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new Sd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>c===void 0||c===""?0:DBu(c,e),o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function I_(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 Clm(e){let t=xB(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function wlm(e){let t=xB(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 Slm(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new Sd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=c=>{try{return DBu(c,e)}catch{throw new Sd(`Invalid wildcard semver: ${e}`)}},o=i(n[0]),s,a;if(n.length===1)s=[o,0,0],a=[o+1,0,0];else{let c=i(n[1]);s=[o,c,0],a=[o,c+1,0]}return{lower:s,upper:a}}function TBu(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 Sd(`${e} is in an invalid date format`)}throw new Sd(`The date provided ${e} must be a string, number, or date object`)}function Tlm(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 x9r=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var Olm=100,RBu=3e4,Blm=5e4,Plm=50,Dlm=500,Rlm="https://us.i.posthog.com",FBu=new Set;function C9r(e,t){FBu.has(e)||(FBu.add(e),console.warn(`[PostHog] ${t}`))}function Flm(e){return typeof e=="string"?e.trim():""}function klm(e){return(typeof e=="string"?e.trim():"")||void 0}function Nlm(e){return(typeof e=="string"?e.trim():"")||Rlm}function jlm(e){if(!e)return{};let t={};for(let[n,i]of Object.entries(e))t[`$feature/${n}`]=i;let r=Object.keys(e).filter(n=>e[n]!==!1).sort();return r.length>0&&(t.$active_feature_flags=r),t}var w9r=class extends $4t{constructor(t,r={}){let n=Flm(t),i={...r,host:Nlm(r.host),personalApiKey:klm(r.personalApiKey)};if(super(n,i),this._memoryStorage=new x9r,this.options=i,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof i.featureFlagsPollingInterval=="number"?Math.max(i.featureFlagsPollingInterval,Olm):RBu,typeof i.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(i.waitUntilDebounceMs,0)),typeof i.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(i.waitUntilMaxWaitMs,0)),i.personalApiKey){if(i.personalApiKey.includes("phc_"))throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');i.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new v9r({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:i.personalApiKey,projectApiKey:n,timeout:i.requestTimeout??1e4,host:this.host,fetch:i.fetch,onError:s=>{this._events.emit("error",s)},onLoad:s=>{this._events.emit("localEvaluationFlagsLoaded",s)},customHeaders:this.getCustomHeaders(),cacheProvider:i.flagDefinitionCacheProvider,strictLocalEvaluation:i.strictLocalEvaluation}))}this.errorTracking=new tH(this,i,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=i.maxCacheSize||Blm}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??Dlm,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??Plm;this._waitUntilCycle.timer=lee(()=>{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 xBu}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}capture(t){typeof t=="string"&&this._logger.warn("Called capture() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStateless(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}async captureImmediate(t){return typeof t=="string"&&this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStatelessImmediate(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}identify({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};super.identifyStateless(t,l,{disableGeoip:n})}async identifyImmediate({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};await super.identifyStatelessImmediate(t,l,{disableGeoip:n})}alias(t){super.aliasStateless(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}async aliasImmediate(t){await super.aliasStatelessImmediate(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(t=RBu){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 w=this._flagOverrides[t];if(w===void 0)return;let T=this._payloadOverrides?.[t];return{key:t,enabled:w!==!1,variant:typeof w=="string"?w:void 0,payload:T}}let{groups:s,disableGeoip:a}=n,{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=n,p=this.addLocalPersonAndGroupProperties(r,s,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(r,s,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f,m=!1,g,A,y,E,v,I;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let w=this.featureFlagsPoller?.featureFlagsByKey[t];if(w)try{let T=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(w,d,{matchValue:i});if(T){m=!0;let P=T.value;E=w.id,I="Evaluated locally",f={key:t,enabled:P!==!1,variant:typeof P=="string"?P:void 0,payload:T.payload??void 0}}}catch(T){if(T instanceof fee||T instanceof Sd)this._logger?.info(`${T.name} when computing flag locally: ${t}: ${T.message}`);else throw T}}if(!m&&!c){let w=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(w===void 0)y=ofe.UNKNOWN_ERROR;else{g=w.requestId,A=w.evaluatedAt;let T=[];w.errorsWhileComputingFlags&&T.push(ofe.ERRORS_WHILE_COMPUTING),w.quotaLimited?.includes("feature_flags")&&T.push(ofe.QUOTA_LIMITED);let P=w.flags[t];if(P===void 0)T.push(ofe.FLAG_MISSING);else{E=P.metadata?.id,v=P.metadata?.version,I=P.reason?.description??P.reason?.code;let O;if(P.metadata?.payload!==void 0)try{O=JSON.parse(P.metadata.payload)}catch{O=P.metadata.payload}f={key:t,enabled:P.enabled,variant:P.variant,payload:O}}T.length>0&&(y=T.join(","))}}if(o){let w=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,T={$feature_flag:t,$feature_flag_response:w,$feature_flag_id:E,$feature_flag_version:v,$feature_flag_reason:I,locally_evaluated:m,[`$feature/${t}`]:w,$feature_flag_request_id:g,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let P=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();P!==void 0&&(T.$feature_flag_definitions_loaded_at=P)}y&&(T.$feature_flag_error=y),this._captureFlagCalledEventIfNeeded({distinctId:r,key:t,response:w,groups:s,disableGeoip:a,properties:T})}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){C9r("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(C9r("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request."),this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(!this.options.personalApiKey)throw new Error("Personal API key is required for remote config payload decryption");let r=await this._requestRemoteConfigPayload(t);if(!r)return;let n=await r.json();if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(t,r,n){C9r("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});return i===void 0?void 0:i.enabled===!1?!1:!!(i.variant??!0)||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},g={},A=!0;if(f&&(m=f.response,g=f.payloads,A=f.fallbackToFlags),A&&!c){let y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...y.flags||{}},g={...g,...y.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(g={...g,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:g}}async evaluateFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags \u2014 pass it explicitly or use withContext()"),new Lnt({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f={},m,g,A=!1,y=!1,E=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),v=new Set;if(E)for(let[C,w]of Object.entries(E.response)){let T=this.featureFlagsPoller?.featureFlagsByKey[C];f[C]={key:C,enabled:w!==!1,variant:typeof w=="string"?w:void 0,payload:E.payloads[C],id:T?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0},v.add(C)}if((E?E.fallbackToFlags:!0)&&!c){let C=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);if(C){m=C.requestId,g=C.evaluatedAt,A=!!C.errorsWhileComputingFlags,y=Array.isArray(C.quotaLimited)&&C.quotaLimited.includes("feature_flags");for(let[w,T]of Object.entries(C.flags)){if(v.has(w))continue;let P;if(T.metadata?.payload!==void 0)try{P=JSON.parse(T.metadata.payload)}catch{P=T.metadata.payload}f[w]={key:w,enabled:T.enabled,variant:T.variant,payload:P,id:T.metadata?.id,version:T.metadata?.version,reason:T.reason?.description??T.reason?.code,locallyEvaluated:!1}}}}if(this._flagOverrides!==void 0)for(let[C,w]of Object.entries(this._flagOverrides)){if(w===void 0){delete f[C];continue}let T=f[C];f[C]={key:C,enabled:w!==!1,variant:typeof w=="string"?w:void 0,payload:T?.payload,id:T?.id,version:T?.version,reason:T?.reason,locallyEvaluated:T?.locallyEvaluated??!1}}if(this._payloadOverrides!==void 0)for(let[C,w]of Object.entries(this._payloadOverrides)){let T=f[C];T&&(f[C]={...T,payload:w})}return new Lnt({host:this._getFeatureFlagEvaluationsHost(),distinctId:n,groups:o,disableGeoip:s,flags:f,requestId:m,evaluatedAt:g,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:A,quotaLimited:y})}_captureFlagCalledEventIfNeeded(t){let{distinctId:r,key:n,response:i,groups:o,disableGeoip:s,properties:a}=t,c=`${n}_${i}`;r in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[r].includes(c)||(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(c):this.distinctIdHasSentFlagCalls[r]=[c],this.capture({distinctId:r,event:"$feature_flag_called",properties:a,groups:o,disableGeoip:s}))}_getFeatureFlagEvaluationsHost(){return this._featureFlagEvaluationsHost||(this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:t=>this._captureFlagCalledEventIfNeeded(t),logWarning:t=>{this.options.featureFlagsLogWarnings!==!1&&console.warn(`[PostHog] ${t}`)}}),this._featureFlagEvaluationsHost}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){super.groupIdentifyStateless(t,r,n,{disableGeoip:o},i)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(t){let r=n=>Object.fromEntries(n.map(i=>[i,!0]));if(t===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(t)){this._flagOverrides=r(t);return}if(this._isFeatureFlagOverrideOptions(t)){"flags"in t&&(t.flags===!1?this._flagOverrides=void 0:Array.isArray(t.flags)?this._flagOverrides=r(t.flags):t.flags!==void 0&&(this._flagOverrides={...t.flags})),"payloads"in t&&(t.payloads===!1?this._payloadOverrides=void 0:t.payloads!==void 0&&(this._payloadOverrides={...t.payloads}));return}this._flagOverrides={...t}}_isFeatureFlagOverrideOptions(t){if(typeof t!="object"||t===null||Array.isArray(t))return!1;let r=t;if("flags"in r){let n=r.flags;if(n===!1||Array.isArray(n)||typeof n=="object"&&n!==null)return!0}if("payloads"in r){let n=r.payloads;if(n===!1||typeof n=="object"&&n!==null)return!0}return!1}withContext(t,r,n){return this.context?this.context.run(t,r,n):r()}getContext(){return this.context?.get()}enterContext(t,r){this.context?.enter(t,r)}async _shutdown(t){let r=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(t),this.errorTracking.shutdown();try{return await super._shutdown(t)}finally{r?.()}}async _requestRemoteConfigPayload(t){if(!this.options.personalApiKey)return;let r=`${this.host}/api/projects/@current/feature_flags/${t}/remote_config?token=${encodeURIComponent(this.apiKey)}`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},i=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let o=new AbortController;i=lee(()=>{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(zOu(s)&&r&&o in r){let a={};for(let[c,u]of Object.entries(s))a[String(c)]=String(u);i[String(o)]=a}else n[String(o)]=String(s);return{personProperties:n,groupProperties:i}}async getFeatureFlagsForEvent(t,r,n,i){let o=i?.personProperties||{},s=i?.groupProperties||{},a=i?.flagKeys;if(i?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}else return{};if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}return(await super.getFeatureFlagsStateless(t,r,o,s,n)).flags}addLocalPersonAndGroupProperties(t,r,n,i){let o={distinct_id:t,...n||{}},s={};if(r)for(let a of Object.keys(r))s[a]={$group_key:r[a],...i?.[a]||{}};return{allPersonProperties:o,allGroupProperties:s}}createFeatureFlagEvaluationContext(t,r,n,i){return{distinctId:t,groups:r||{},personProperties:n||{},groupProperties:i||{},evaluationCache:{}}}captureException(t,r,n,i,o){if(!tH.isPreviouslyCapturedError(t)){let s=new Error("PostHog syntheticException");this.addPendingPromise(tH.buildEventMessage(t,{syntheticException:s},r,n).then(a=>this.capture({...a,uuid:i,flags:o})))}}async captureExceptionImmediate(t,r,n,i){if(!tH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");return this.addPendingPromise(tH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.captureImmediate({...s,flags:i})))}}async prepareEventMessage(t){let{distinctId:r,event:n,properties:i,groups:o,flags:s,sendFeatureFlags:a,timestamp:c,disableGeoip:u,uuid:l}=t,p=this.context?.get(),d=r||p?.distinctId,f={...this.props,...p?.properties||{},...i||{}};d||(d=uee(),f.$process_person_profile=!1),p?.sessionId&&!f.$session_id&&(f.$session_id=p.sessionId);let m=this._runBeforeSend({distinctId:d,event:n,properties:f,groups:o,flags:s,sendFeatureFlags:a,timestamp:c,disableGeoip:u,uuid:l});if(!m)return Promise.reject(null);let g=await Promise.resolve().then(async()=>{if(s)return a&&console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`."),s._getEventProperties();if(a){C9r("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead \u2014 it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");let A=typeof a=="object"?a:void 0,y=await this.getFeatureFlagsForEvent(m.distinctId,o,u,A);return jlm(y)}return{}}).catch(()=>({})).then(A=>({...A,...m.properties||{},$groups:m.groups||o}));return m.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof g.$raw_user_agent=="string"&&kOu(g.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(m.event="$bot_pageview",g.$browser_type="bot"),{distinctId:m.distinctId,event:m.event,properties:g,options:{timestamp:m.timestamp,disableGeoip:m.disableGeoip,uuid:m.uuid}}}_runBeforeSend(t){let r=this.options.before_send;if(!r)return t;let n=Array.isArray(r)?r:[r],i=t;for(let o of n){if(i=o(i),!i)return this._logger.info(`Event '${t.event}' was rejected in beforeSend function`),null;if(!i.properties||Object.keys(i.properties).length===0){let s=`Event '${i.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}return i}};var kBu=require("async_hooks"),S9r=class{constructor(){this.storage=new kBu.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 NBu="posthog-node";function Qlm(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[y2o.POSTHOG_ID_TAG];if(c===void 0)return s;let u=e.options.host??"https://us.i.posthog.com",l=new URL(`/project/${e.apiKey}/person/${c}`,u).toString();s.tags["PostHog Person URL"]=l;let p=s.exception?.values||[],d=p.map(m=>({...m,stacktrace:m.stacktrace?{...m.stacktrace,type:"raw",frames:(m.stacktrace.frames||[]).map(g=>({...g,platform:"node:javascript"}))}:void 0})),f={$exception_message:p[0]?.value||s.message,$exception_type:p[0]?.type,$exception_level:s.level,$exception_list:d,$sentry_event_id:s.event_id,$sentry_exception:s.exception,$sentry_exception_message:p[0]?.value||s.message,$sentry_exception_type:p[0]?.type,$sentry_tags:s.tags};return t&&r&&(f.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+s.event_id),o&&e.capture({event:"$exception",distinctId:c,properties:f}),s}}var y2o=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=NBu,this.name=NBu,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(Qlm(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};tH.errorPropertiesBuilder=new QQ.ErrorPropertiesBuilder([new QQ.EventCoercer,new QQ.ErrorCoercer,new QQ.ObjectCoercer,new QQ.StringCoercer,new QQ.PrimitiveCoercer],QQ.createStackParser("node:javascript",QQ.nodeStackLineParser),[DOu(),ABu,EBu()]);var yve=class extends w9r{getLibraryId(){return"posthog-node"}initializeContext(){return new S9r}};var T9r=class{posthog;constructor({posthogApiKey:t}){this.posthog=new yve(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.54.0",usingAccessToken:!0,...Jae()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var tUt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};nm();Zt();var Vnt=require("fs/promises"),jBu=require("os"),QBu=require("path");Ttt();var zlm="id",Mlm=".fern",rUt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new yve(r),this.userId=t==null?void 0:UOo(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.54.0",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...Jae()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}userEmail;async getUserEmail(){if(this.userEmail!==null){if(this.userEmail!=null)return this.userEmail;if(this.token==null){this.userEmail=null;return}try{let t=await vf({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=ID(),r=Ge(Vt.of((0,jBu.homedir)()),Se.of(Mlm),Se.of(zlm));try{await $t(r)?this.persistedDistinctId=(await(0,Vnt.readFile)(r)).toString():(await(0,Vnt.mkdir)((0,QBu.dirname)(r),{recursive:!0}),await(0,Vnt.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var b2o;async function nUt(){return b2o==null&&(b2o=await Llm()),b2o}async function Llm(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new tUt;let r=await nrt();return r!=null?new rUt({token:r,posthogApiKey:e}):await o_()!=null?new T9r({posthogApiKey:e}):new rUt({token:void 0,posthogApiKey:e})}catch{return new tUt}}bn();Dt();jt();xW();var iUt=be(require("process"),1);Jqe();var LBu=be(mEo(),1),UBu=be(MBu(),1);function k1(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=FG(e),e.length===0))return 0;e=e.replace((0,UBu.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(LBu.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}bn();function O9r(e){let t=0;for(let r of e.split(`
|
|
3025
|
+
`);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=sBu.test(a)?a.replace(sBu,"$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>=aBu)break}}return cBu(i)}}var s2o=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=Ave(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 K6e(t,"DOMException")}isDOMError(t){return K6e(t,"DOMError")}};var a2o=class{match(t){return Jko(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 c2o=class{constructor(){}match(t){return QOu(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 tlm=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,u2o=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(tlm);return i&&(r=i[1],n=i[2]),[r,n]}};var lBu=["fatal","error","warning","log","info","debug"];function b9r(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 l2o=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 jnt(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=b9r(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return Ave(t)&&!jOu(t)&&lBu.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(XOu(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var p2o=class{match(t){return jnt(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${b9r(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var f2o=class{match(t){return n9r(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var d2o=class{match(t){return K6e(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!jnt(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 n9r(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 m2o=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 eUt={MESSAGE:"$message",TIMESTAMP:"$timestamp"},rlm=new Set([eUt.MESSAGE,eUt.TIMESTAMP]),E9r={enabled:!0,max_bytes:32768};function h2o(e){return e?{enabled:e.enabled??E9r.enabled,max_bytes:ilm(e.max_bytes,E9r.max_bytes)}:{...E9r}}function nlm(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,i)=>rlm.has(i)?(t.push(i),n):(n[i]=e[i],n),{}),droppedKeys:t}}var g2o=class{constructor(t){this._entries=[],this._totalBytes=0,this._config=h2o(t)}setConfig(t){this._config=h2o(t),this._trimToMaxBytes()}add(t){let r=olm(t);if(!r)return;let n=pBu(r.json);n>this._config.max_bytes||(this._entries.push({step:r.step,bytes:n}),this._totalBytes+=n,this._trimToMaxBytes())}getAttachable(){return this._entries.map(t=>t.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){for(;this._totalBytes>this._config.max_bytes&&this._entries.length>0;){let t=this._entries.shift();t&&(this._totalBytes-=t.bytes)}}};function ilm(e,t){if(!Y4t(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);return r<0?t:r}function olm(e){let t=slm(e);if(t)try{let r=JSON.parse(t);if(!J4t(r))return;let n=r,i=n[eUt.MESSAGE],o=n[eUt.TIMESTAMP];return!Ave(i)||i.trim().length===0||!Ave(o)&&!Y4t(o)?void 0:{step:n,json:t}}catch{return}}function slm(e){let t=new WeakSet;try{return JSON.stringify(e,(r,n)=>{if(typeof n=="bigint")return n.toString();if(!(typeof n=="function"||typeof n=="symbol")){if(n instanceof Date)return n.toISOString();if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(n&&typeof n=="object"){if(t.has(n))return"[Circular]";t.add(n)}return n}})}catch{return}}function pBu(e){if(typeof TextEncoder<"u")return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),r=0;for(let n=0;n<t.length;n++)t[n]==="%"?(r+=1,n+=2):r+=1;return r}var mBu=require("fs"),hBu=require("readline"),I9r=new QQ.ReduceableCache(25),gBu=new QQ.ReduceableCache(20),A2o=7,alm=1e3,clm=1e4;async function ABu(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"||flm(s)||dlm(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(gBu.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=hlm(o);if(s.every(c=>mlm(i,c)))continue;let a=glm(I9r,i,{});n.push(ulm(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&llm(e,I9r),I9r.reduce(),e}function ulm(e,t,r){return new Promise(n=>{let i=(0,mBu.createReadStream)(e),o=(0,hBu.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(){gBu.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]=Alm(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 llm(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;plm(r.lineno,r,n)}}function plm(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=yBu(e);i<e;i++){let o=r[i];if(o===void 0)return void fBu(t);t.pre_context.push(o)}if(r[e]===void 0)return void fBu(t);t.context_line=r[e];let n=bBu(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 fBu(e){delete e.pre_context,delete e.context_line,delete e.post_context}function flm(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function dlm(e){return e.lineno!==void 0&&e.lineno>clm||e.colno!==void 0&&e.colno>alm}function mlm(e,t){let r=I9r.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 hlm(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=dBu(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+A2o:(i.push(n),n=dBu(o)),t++}return i}function dBu(e){return[yBu(e),bBu(e)]}function yBu(e){return Math.max(1,e-A2o)}function bBu(e){return e+A2o}function glm(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function Alm(e,t){let r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);let i=Math.max(t-60,0);i<5&&(i=0);let o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r=`...${r}`),o<n&&(r+="..."),r}var Mnt=require("path");function EBu(e=process.cwd()){let t=Mnt.sep==="\\",r=i=>t?i.replace(/\\/g,"/"):i,n=r(e);return async i=>{for(let o of i)!o.filename||o.filename.startsWith("node:")||o.filename.startsWith("data:")||(0,Mnt.isAbsolute)(o.filename)&&(o.filename=r((0,Mnt.relative)(n,r(o.filename))));return i}}function ylm(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 IBu(e,t){globalThis.process?.on("uncaughtException",ylm(e,t))}function vBu(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var blm=2e3,tH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new i9r({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return J4t(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()&&(IBu(this.onException.bind(this),this.onFatalError.bind(this)),vBu(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(blm),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var xBu="5.35.1";var ofe={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};var Lnt=class e{constructor(t){this._host=t.host,this._distinctId=t.distinctId,this._groups=t.groups,this._disableGeoip=t.disableGeoip,this._flags=t.flags,this._requestId=t.requestId,this._evaluatedAt=t.evaluatedAt,this._flagDefinitionsLoadedAt=t.flagDefinitionsLoadedAt,this._errorsWhileComputing=t.errorsWhileComputing??!1,this._quotaLimited=t.quotaLimited??!1,this._accessed=t.accessed??new Set,this._isSlice=t.isSlice??!1}isEnabled(t){let r=this._flags[t];return this._recordAccess(t),r?.enabled??!1}getFlag(t){let r=this._flags[t];if(this._recordAccess(t),!!r)return r.enabled?r.variant??!0:!1}getFlagPayload(t){return this._flags[t]?.payload}onlyAccessed(){let t={};for(let r of this._accessed){let n=this._flags[r];n&&(t[r]=n)}return this._cloneWith(t)}only(t){let r={},n=[];for(let i of t){let o=this._flags[i];o?r[i]=o:n.push(i)}return n.length>0&&this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${n.join(", ")}`),this._cloneWith(r)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let t={},r=[];for(let[n,i]of Object.entries(this._flags)){let o=i.enabled===!1?!1:i.variant??!0;t[`$feature/${n}`]=o,i.enabled&&r.push(n)}return r.length>0&&(r.sort(),t.$active_feature_flags=r),t}_cloneWith(t){return new e({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:t,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(t){if(this._accessed.add(t),this._distinctId===""||this._isSlice&&!(t in this._flags))return;let r=this._flags[t],n=r===void 0?void 0:r.enabled===!1?!1:r.variant??!0,i={$feature_flag:t,$feature_flag_response:n,$feature_flag_id:r?.id,$feature_flag_version:r?.version,$feature_flag_reason:r?.reason,locally_evaluated:r?.locallyEvaluated??!1,[`$feature/${t}`]:n,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:r?.locallyEvaluated?Date.now():this._evaluatedAt};r?.locallyEvaluated&&this._flagDefinitionsLoadedAt!==void 0&&(i.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt);let o=[];this._errorsWhileComputing&&o.push(ofe.ERRORS_WHILE_COMPUTING),this._quotaLimited&&o.push(ofe.QUOTA_LIMITED),r===void 0&&o.push(ofe.FLAG_MISSING),o.length>0&&(i.$feature_flag_error=o.join(",")),this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:t,response:n,groups:this._groups,disableGeoip:this._disableGeoip,properties:i})}};async function CBu(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 Elm=6e4,Ilm=1152921504606847e3,vlm=["is_not","is_set"],Unt=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},Sd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},fee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},v9r=class{constructor({pollingInterval:t,personalApiKey:r,projectApiKey:n,timeout:i,host:o,customHeaders:s,...a}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=t,this.personalApiKey=r,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=i,this.projectApiKey=n,this.host=o,this.poller=void 0,this.fetch=a.fetch||fetch,this.onError=a.onError,this.customHeaders=s,this.onLoad=a.onLoad,this.cacheProvider=a.cacheProvider,this.strictLocalEvaluation=a.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(t=!0){this.debugMode=t}logMsgIfDebug(t){this.debugMode&&t()}createEvaluationContext(t,r={},n={},i={},o={}){return{distinctId:t,groups:r,personProperties:n,groupProperties:i,evaluationCache:o}}async getFeatureFlag(t,r,n={},i={},o={}){await this.loadFeatureFlags();let s,a;if(!this.loadedSuccessfullyOnce)return s;if(a=this.featureFlagsByKey[t],a!==void 0){let c=this.createEvaluationContext(r,n,i,o);try{s=(await this.computeFlagAndPayloadLocally(a,c)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${t} -> ${s}`))}catch(u){u instanceof fee||u instanceof Sd?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${t}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${t}: ${u}`))}}return s}async getAllFlagsAndPayloads(t,r){await this.loadFeatureFlags();let n={},i={},o=this.featureFlags.length==0,s=r?r.map(c=>this.featureFlagsByKey[c]).filter(Boolean):this.featureFlags,a={...t,evaluationCache:t.evaluationCache??{}};return await Promise.all(s.map(async c=>{try{let{value:u,payload:l}=await this.computeFlagAndPayloadLocally(c,a);n[c.key]=u,l&&(i[c.key]=l)}catch(u){u instanceof fee||u instanceof Sd?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${c.key}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${c.key}: ${u}`)),o=!0}})),{response:n,payloads:i,fallbackToFlags:o}}async computeFlagAndPayloadLocally(t,r,n={}){let{matchValue:i,skipLoadCheck:o=!1}=n;if(o||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=i!==void 0?i:await this.computeFlagValueLocally(t,r);let a=this.getFeatureFlagPayload(t.key,s);return{value:s,payload:a}}async computeFlagValueLocally(t,r){let{distinctId:n,groups:i,personProperties:o,groupProperties:s}=r;if(!t.active)return!1;if(t.ensure_experience_continuity)throw new Sd("Flag has experience continuity enabled");let c=(t.filters||{}).aggregation_group_type_index;if(c!=null){let u=this.groupTypeMapping[String(c)];if(!u)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${c} for feature flag ${t.key}`)),new Sd("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 Sd(`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 Sd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Sd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Sd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Sd(`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 Sd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new Sd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Sd(`Dependency '${c}' could not be evaluated`)}let a=i[o];return this.flagEvaluatesToExpectedValue(t.value,a)}flagEvaluatesToExpectedValue(t,r){return typeof t=="boolean"?t===r||typeof r=="string"&&r!==""&&t===!0:typeof t=="string"?r===t:!1}async matchFeatureFlagProperties(t,r,n,i){let o=t.filters||{},s=o.groups||[],a=o.aggregation_group_type_index,{groups:c,groupProperties:u}=i,l=!1,p;for(let d of s)try{let f=d.aggregation_group_type_index!==void 0?d.aggregation_group_type_index:a,m=n,g=r;if(f!==a&&f!=null){let A=this.groupTypeMapping[String(f)];if(!A||!(A in c)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${t.key}': group type index ${f} not available`));continue}if(!(A in u)){l=!0;continue}m=u[A],g=c[A]}if(await this.isConditionMatch(t,g,d,m,i)){let A=d.variant,y=o.multivariate?.variants||[];p=A&&y.some(E=>E.key===A)?A:await this.getMatchingVariant(t,g)||!0;break}}catch(f){if(f instanceof fee)throw f;if(f instanceof Sd)l=!0;else throw f}if(p!==void 0)return p;if(l)throw new Sd("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(t,r,n,i,o){let s=n.rollout_percentage,a=c=>{this.logMsgIfDebug(()=>console.warn(c))};if((n.properties||[]).length>0){for(let c of n.properties){let u=c.type,l=!1;if(l=u==="cohort"?await BBu(c,i,this.cohorts,this.debugMode,p=>this.evaluateFlagDependency(p,i,o)):u==="flag"?await this.evaluateFlagDependency(c,i,o):OBu(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await wBu(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await wBu(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(Elm,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 Unt(`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 Unt(`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 Unt(`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 Unt&&this.onError?.(t)}}getPersonalApiKeyRequestOptions(t="GET",r){let n={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};return r&&(n["If-None-Match"]=r),{method:t,headers:n}}_requestFeatureFlagDefinitions(){let t=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,r=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;n=lee(()=>{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 wBu(e,t,r=""){let n=await CBu(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/Ilm}function OBu(e,t,r){let n=e.key,i=e.value,o=e.operator||"exact";if(n in t){if(o==="is_not_set")return!1}else{if(o==="is_not_set")return!0;throw new Sd(`Property ${n} not found in propertyValues`)}let s=t[n];if(s==null&&!vlm.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 SBu(String(i))&&String(s).match(String(i))!==null;case"not_regex":return SBu(String(i))&&String(s).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof i=="number"?i:parseFloat(String(i)),l;return l=typeof s=="number"?s:s!=null?parseFloat(String(s)):NaN,Number.isFinite(u)&&Number.isFinite(l)?c(l,u,o):c(String(s),String(i),o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new Sd("Date operations cannot be performed on boolean values");let u=Tlm(String(i));if(u==null&&(u=TBu(i)),u==null)throw new Sd(`Invalid date: ${i}`);let l=TBu(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return I_(xB(String(s)),xB(String(i)))===0;case"semver_neq":return I_(xB(String(s)),xB(String(i)))!==0;case"semver_gt":return I_(xB(String(s)),xB(String(i)))>0;case"semver_gte":return I_(xB(String(s)),xB(String(i)))>=0;case"semver_lt":return I_(xB(String(s)),xB(String(i)))<0;case"semver_lte":return I_(xB(String(s)),xB(String(i)))<=0;case"semver_tilde":{let u=xB(String(s)),{lower:l,upper:p}=Clm(String(i));return I_(u,l)>=0&&I_(u,p)<0}case"semver_caret":{let u=xB(String(s)),{lower:l,upper:p}=wlm(String(i));return I_(u,l)>=0&&I_(u,p)<0}case"semver_wildcard":{let u=xB(String(s)),{lower:l,upper:p}=Slm(String(i));return I_(u,l)>=0&&I_(u,p)<0}default:throw new Sd(`Unknown operator: ${o}`)}}function xlm(e,t){if(!(e in t))throw new fee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}async function BBu(e,t,r,n=!1,i){let o=String(e.value);xlm(o,r);let s=r[o];return PBu(s,t,r,n,i)}async function PBu(e,t,r,n=!1,i){if(!e)return!0;let o=e.type,s=e.values;if(!s||s.length===0)return!0;let a=!1;if("values"in s[0]){for(let c of s)try{let u=await PBu(c,t,r,n,i);if(o==="AND"){if(!u)return!1}else if(u)return!0}catch(u){if(u instanceof fee)throw u;if(u instanceof Sd)n&&console.debug(`Failed to compute property ${c} locally: ${u}`),a=!0;else throw u}if(a)throw new Sd("Can't match cohort without a given cohort property value");return o==="AND"}for(let c of s)try{let u;if(c.type==="cohort")u=await BBu(c,t,r,n,i);else if(c.type==="flag"){if(!i)throw new Sd(`Flag dependency '${c.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);u=await i(c)}else u=OBu(c,t);let l=c.negation||!1;if(o==="AND"){if(!u&&!l||u&&l)return!1}else if(u&&!l||!u&&l)return!0}catch(u){if(u instanceof fee)throw u;if(u instanceof Sd)n&&console.debug(`Failed to compute property ${c} locally: ${u}`),a=!0;else throw u}if(a)throw new Sd("can't match cohort without a given cohort property value");return o==="AND"}function SBu(e){try{return new RegExp(e),!0}catch{return!1}}function DBu(e,t){if(!/^\d+$/.test(e))throw new Sd(`Invalid semver: ${t}`);if(e.length>1&&e[0]==="0")throw new Sd(`Invalid semver: ${t}`);return parseInt(e,10)}function xB(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new Sd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>c===void 0||c===""?0:DBu(c,e),o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function I_(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 Clm(e){let t=xB(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function wlm(e){let t=xB(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 Slm(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new Sd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=c=>{try{return DBu(c,e)}catch{throw new Sd(`Invalid wildcard semver: ${e}`)}},o=i(n[0]),s,a;if(n.length===1)s=[o,0,0],a=[o+1,0,0];else{let c=i(n[1]);s=[o,c,0],a=[o,c+1,0]}return{lower:s,upper:a}}function TBu(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 Sd(`${e} is in an invalid date format`)}throw new Sd(`The date provided ${e} must be a string, number, or date object`)}function Tlm(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 x9r=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var Olm=100,RBu=3e4,Blm=5e4,Plm=50,Dlm=500,Rlm="https://us.i.posthog.com",FBu=new Set;function C9r(e,t){FBu.has(e)||(FBu.add(e),console.warn(`[PostHog] ${t}`))}function Flm(e){return typeof e=="string"?e.trim():""}function klm(e){return(typeof e=="string"?e.trim():"")||void 0}function Nlm(e){return(typeof e=="string"?e.trim():"")||Rlm}function jlm(e){if(!e)return{};let t={};for(let[n,i]of Object.entries(e))t[`$feature/${n}`]=i;let r=Object.keys(e).filter(n=>e[n]!==!1).sort();return r.length>0&&(t.$active_feature_flags=r),t}var w9r=class extends $4t{constructor(t,r={}){let n=Flm(t),i={...r,host:Nlm(r.host),personalApiKey:klm(r.personalApiKey)};if(super(n,i),this._memoryStorage=new x9r,this.options=i,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof i.featureFlagsPollingInterval=="number"?Math.max(i.featureFlagsPollingInterval,Olm):RBu,typeof i.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(i.waitUntilDebounceMs,0)),typeof i.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(i.waitUntilMaxWaitMs,0)),i.personalApiKey){if(i.personalApiKey.includes("phc_"))throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');i.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new v9r({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:i.personalApiKey,projectApiKey:n,timeout:i.requestTimeout??1e4,host:this.host,fetch:i.fetch,onError:s=>{this._events.emit("error",s)},onLoad:s=>{this._events.emit("localEvaluationFlagsLoaded",s)},customHeaders:this.getCustomHeaders(),cacheProvider:i.flagDefinitionCacheProvider,strictLocalEvaluation:i.strictLocalEvaluation}))}this.errorTracking=new tH(this,i,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=i.maxCacheSize||Blm}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??Dlm,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??Plm;this._waitUntilCycle.timer=lee(()=>{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 xBu}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}capture(t){typeof t=="string"&&this._logger.warn("Called capture() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStateless(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}async captureImmediate(t){return typeof t=="string"&&this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStatelessImmediate(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}identify({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};super.identifyStateless(t,l,{disableGeoip:n})}async identifyImmediate({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};await super.identifyStatelessImmediate(t,l,{disableGeoip:n})}alias(t){super.aliasStateless(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}async aliasImmediate(t){await super.aliasStatelessImmediate(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(t=RBu){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 w=this._flagOverrides[t];if(w===void 0)return;let T=this._payloadOverrides?.[t];return{key:t,enabled:w!==!1,variant:typeof w=="string"?w:void 0,payload:T}}let{groups:s,disableGeoip:a}=n,{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=n,p=this.addLocalPersonAndGroupProperties(r,s,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(r,s,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f,m=!1,g,A,y,E,v,I;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let w=this.featureFlagsPoller?.featureFlagsByKey[t];if(w)try{let T=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(w,d,{matchValue:i});if(T){m=!0;let P=T.value;E=w.id,I="Evaluated locally",f={key:t,enabled:P!==!1,variant:typeof P=="string"?P:void 0,payload:T.payload??void 0}}}catch(T){if(T instanceof fee||T instanceof Sd)this._logger?.info(`${T.name} when computing flag locally: ${t}: ${T.message}`);else throw T}}if(!m&&!c){let w=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(w===void 0)y=ofe.UNKNOWN_ERROR;else{g=w.requestId,A=w.evaluatedAt;let T=[];w.errorsWhileComputingFlags&&T.push(ofe.ERRORS_WHILE_COMPUTING),w.quotaLimited?.includes("feature_flags")&&T.push(ofe.QUOTA_LIMITED);let P=w.flags[t];if(P===void 0)T.push(ofe.FLAG_MISSING);else{E=P.metadata?.id,v=P.metadata?.version,I=P.reason?.description??P.reason?.code;let O;if(P.metadata?.payload!==void 0)try{O=JSON.parse(P.metadata.payload)}catch{O=P.metadata.payload}f={key:t,enabled:P.enabled,variant:P.variant,payload:O}}T.length>0&&(y=T.join(","))}}if(o){let w=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,T={$feature_flag:t,$feature_flag_response:w,$feature_flag_id:E,$feature_flag_version:v,$feature_flag_reason:I,locally_evaluated:m,[`$feature/${t}`]:w,$feature_flag_request_id:g,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let P=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();P!==void 0&&(T.$feature_flag_definitions_loaded_at=P)}y&&(T.$feature_flag_error=y),this._captureFlagCalledEventIfNeeded({distinctId:r,key:t,response:w,groups:s,disableGeoip:a,properties:T})}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){C9r("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(C9r("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request."),this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(!this.options.personalApiKey)throw new Error("Personal API key is required for remote config payload decryption");let r=await this._requestRemoteConfigPayload(t);if(!r)return;let n=await r.json();if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(t,r,n){C9r("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});return i===void 0?void 0:i.enabled===!1?!1:!!(i.variant??!0)||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},g={},A=!0;if(f&&(m=f.response,g=f.payloads,A=f.fallbackToFlags),A&&!c){let y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...y.flags||{}},g={...g,...y.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(g={...g,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:g}}async evaluateFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags \u2014 pass it explicitly or use withContext()"),new Lnt({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f={},m,g,A=!1,y=!1,E=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),v=new Set;if(E)for(let[C,w]of Object.entries(E.response)){let T=this.featureFlagsPoller?.featureFlagsByKey[C];f[C]={key:C,enabled:w!==!1,variant:typeof w=="string"?w:void 0,payload:E.payloads[C],id:T?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0},v.add(C)}if((E?E.fallbackToFlags:!0)&&!c){let C=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);if(C){m=C.requestId,g=C.evaluatedAt,A=!!C.errorsWhileComputingFlags,y=Array.isArray(C.quotaLimited)&&C.quotaLimited.includes("feature_flags");for(let[w,T]of Object.entries(C.flags)){if(v.has(w))continue;let P;if(T.metadata?.payload!==void 0)try{P=JSON.parse(T.metadata.payload)}catch{P=T.metadata.payload}f[w]={key:w,enabled:T.enabled,variant:T.variant,payload:P,id:T.metadata?.id,version:T.metadata?.version,reason:T.reason?.description??T.reason?.code,locallyEvaluated:!1}}}}if(this._flagOverrides!==void 0)for(let[C,w]of Object.entries(this._flagOverrides)){if(w===void 0){delete f[C];continue}let T=f[C];f[C]={key:C,enabled:w!==!1,variant:typeof w=="string"?w:void 0,payload:T?.payload,id:T?.id,version:T?.version,reason:T?.reason,locallyEvaluated:T?.locallyEvaluated??!1}}if(this._payloadOverrides!==void 0)for(let[C,w]of Object.entries(this._payloadOverrides)){let T=f[C];T&&(f[C]={...T,payload:w})}return new Lnt({host:this._getFeatureFlagEvaluationsHost(),distinctId:n,groups:o,disableGeoip:s,flags:f,requestId:m,evaluatedAt:g,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:A,quotaLimited:y})}_captureFlagCalledEventIfNeeded(t){let{distinctId:r,key:n,response:i,groups:o,disableGeoip:s,properties:a}=t,c=`${n}_${i}`;r in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[r].includes(c)||(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(c):this.distinctIdHasSentFlagCalls[r]=[c],this.capture({distinctId:r,event:"$feature_flag_called",properties:a,groups:o,disableGeoip:s}))}_getFeatureFlagEvaluationsHost(){return this._featureFlagEvaluationsHost||(this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:t=>this._captureFlagCalledEventIfNeeded(t),logWarning:t=>{this.options.featureFlagsLogWarnings!==!1&&console.warn(`[PostHog] ${t}`)}}),this._featureFlagEvaluationsHost}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){super.groupIdentifyStateless(t,r,n,{disableGeoip:o},i)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(t){let r=n=>Object.fromEntries(n.map(i=>[i,!0]));if(t===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(t)){this._flagOverrides=r(t);return}if(this._isFeatureFlagOverrideOptions(t)){"flags"in t&&(t.flags===!1?this._flagOverrides=void 0:Array.isArray(t.flags)?this._flagOverrides=r(t.flags):t.flags!==void 0&&(this._flagOverrides={...t.flags})),"payloads"in t&&(t.payloads===!1?this._payloadOverrides=void 0:t.payloads!==void 0&&(this._payloadOverrides={...t.payloads}));return}this._flagOverrides={...t}}_isFeatureFlagOverrideOptions(t){if(typeof t!="object"||t===null||Array.isArray(t))return!1;let r=t;if("flags"in r){let n=r.flags;if(n===!1||Array.isArray(n)||typeof n=="object"&&n!==null)return!0}if("payloads"in r){let n=r.payloads;if(n===!1||typeof n=="object"&&n!==null)return!0}return!1}withContext(t,r,n){return this.context?this.context.run(t,r,n):r()}getContext(){return this.context?.get()}enterContext(t,r){this.context?.enter(t,r)}async _shutdown(t){let r=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(t),this.errorTracking.shutdown();try{return await super._shutdown(t)}finally{r?.()}}async _requestRemoteConfigPayload(t){if(!this.options.personalApiKey)return;let r=`${this.host}/api/projects/@current/feature_flags/${t}/remote_config?token=${encodeURIComponent(this.apiKey)}`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},i=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let o=new AbortController;i=lee(()=>{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(zOu(s)&&r&&o in r){let a={};for(let[c,u]of Object.entries(s))a[String(c)]=String(u);i[String(o)]=a}else n[String(o)]=String(s);return{personProperties:n,groupProperties:i}}async getFeatureFlagsForEvent(t,r,n,i){let o=i?.personProperties||{},s=i?.groupProperties||{},a=i?.flagKeys;if(i?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}else return{};if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}return(await super.getFeatureFlagsStateless(t,r,o,s,n)).flags}addLocalPersonAndGroupProperties(t,r,n,i){let o={distinct_id:t,...n||{}},s={};if(r)for(let a of Object.keys(r))s[a]={$group_key:r[a],...i?.[a]||{}};return{allPersonProperties:o,allGroupProperties:s}}createFeatureFlagEvaluationContext(t,r,n,i){return{distinctId:t,groups:r||{},personProperties:n||{},groupProperties:i||{},evaluationCache:{}}}captureException(t,r,n,i,o){if(!tH.isPreviouslyCapturedError(t)){let s=new Error("PostHog syntheticException");this.addPendingPromise(tH.buildEventMessage(t,{syntheticException:s},r,n).then(a=>this.capture({...a,uuid:i,flags:o})))}}async captureExceptionImmediate(t,r,n,i){if(!tH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");return this.addPendingPromise(tH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.captureImmediate({...s,flags:i})))}}async prepareEventMessage(t){let{distinctId:r,event:n,properties:i,groups:o,flags:s,sendFeatureFlags:a,timestamp:c,disableGeoip:u,uuid:l}=t,p=this.context?.get(),d=r||p?.distinctId,f={...this.props,...p?.properties||{},...i||{}};d||(d=uee(),f.$process_person_profile=!1),p?.sessionId&&!f.$session_id&&(f.$session_id=p.sessionId);let m=this._runBeforeSend({distinctId:d,event:n,properties:f,groups:o,flags:s,sendFeatureFlags:a,timestamp:c,disableGeoip:u,uuid:l});if(!m)return Promise.reject(null);let g=await Promise.resolve().then(async()=>{if(s)return a&&console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`."),s._getEventProperties();if(a){C9r("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead \u2014 it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");let A=typeof a=="object"?a:void 0,y=await this.getFeatureFlagsForEvent(m.distinctId,o,u,A);return jlm(y)}return{}}).catch(()=>({})).then(A=>({...A,...m.properties||{},$groups:m.groups||o}));return m.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof g.$raw_user_agent=="string"&&kOu(g.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(m.event="$bot_pageview",g.$browser_type="bot"),{distinctId:m.distinctId,event:m.event,properties:g,options:{timestamp:m.timestamp,disableGeoip:m.disableGeoip,uuid:m.uuid}}}_runBeforeSend(t){let r=this.options.before_send;if(!r)return t;let n=Array.isArray(r)?r:[r],i=t;for(let o of n){if(i=o(i),!i)return this._logger.info(`Event '${t.event}' was rejected in beforeSend function`),null;if(!i.properties||Object.keys(i.properties).length===0){let s=`Event '${i.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}return i}};var kBu=require("async_hooks"),S9r=class{constructor(){this.storage=new kBu.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 NBu="posthog-node";function Qlm(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[y2o.POSTHOG_ID_TAG];if(c===void 0)return s;let u=e.options.host??"https://us.i.posthog.com",l=new URL(`/project/${e.apiKey}/person/${c}`,u).toString();s.tags["PostHog Person URL"]=l;let p=s.exception?.values||[],d=p.map(m=>({...m,stacktrace:m.stacktrace?{...m.stacktrace,type:"raw",frames:(m.stacktrace.frames||[]).map(g=>({...g,platform:"node:javascript"}))}:void 0})),f={$exception_message:p[0]?.value||s.message,$exception_type:p[0]?.type,$exception_level:s.level,$exception_list:d,$sentry_event_id:s.event_id,$sentry_exception:s.exception,$sentry_exception_message:p[0]?.value||s.message,$sentry_exception_type:p[0]?.type,$sentry_tags:s.tags};return t&&r&&(f.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+s.event_id),o&&e.capture({event:"$exception",distinctId:c,properties:f}),s}}var y2o=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=NBu,this.name=NBu,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(Qlm(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};tH.errorPropertiesBuilder=new QQ.ErrorPropertiesBuilder([new QQ.EventCoercer,new QQ.ErrorCoercer,new QQ.ObjectCoercer,new QQ.StringCoercer,new QQ.PrimitiveCoercer],QQ.createStackParser("node:javascript",QQ.nodeStackLineParser),[DOu(),ABu,EBu()]);var yve=class extends w9r{getLibraryId(){return"posthog-node"}initializeContext(){return new S9r}};var T9r=class{posthog;constructor({posthogApiKey:t}){this.posthog=new yve(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.55.0",usingAccessToken:!0,...Jae()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var tUt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};nm();Zt();var Vnt=require("fs/promises"),jBu=require("os"),QBu=require("path");Ttt();var zlm="id",Mlm=".fern",rUt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new yve(r),this.userId=t==null?void 0:UOo(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.55.0",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...Jae()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:t.properties})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}userEmail;async getUserEmail(){if(this.userEmail!==null){if(this.userEmail!=null)return this.userEmail;if(this.token==null){this.userEmail=null;return}try{let t=await vf({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=ID(),r=Ge(Vt.of((0,jBu.homedir)()),Se.of(Mlm),Se.of(zlm));try{await $t(r)?this.persistedDistinctId=(await(0,Vnt.readFile)(r)).toString():(await(0,Vnt.mkdir)((0,QBu.dirname)(r),{recursive:!0}),await(0,Vnt.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var b2o;async function nUt(){return b2o==null&&(b2o=await Llm()),b2o}async function Llm(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new tUt;let r=await nrt();return r!=null?new rUt({token:r,posthogApiKey:e}):await o_()!=null?new T9r({posthogApiKey:e}):new rUt({token:void 0,posthogApiKey:e})}catch{return new tUt}}bn();Dt();jt();xW();var iUt=be(require("process"),1);Jqe();var LBu=be(mEo(),1),UBu=be(MBu(),1);function k1(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=FG(e),e.length===0))return 0;e=e.replace((0,UBu.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(LBu.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}bn();function O9r(e){let t=0;for(let r of e.split(`
|
|
3026
3026
|
`))t=Math.max(t,k1(r));return t}var aPu=be(I2o(),1);var Vlm=/[\p{Lu}]/u,_lm=/[\p{Ll}]/u,qBu=/^[\p{Lu}](?![\p{Lu}])/gu,HBu=/([\p{Alpha}\p{N}_]|$)/u,v2o=/[_.\- ]+/,qlm=new RegExp("^"+v2o.source),GBu=new RegExp(v2o.source+HBu.source,"gu"),WBu=new RegExp("\\d+"+HBu.source,"gu"),Glm=(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&&Vlm.test(u)?(e=e.slice(0,c)+"-"+e.slice(c),i=!1,s=o,o=!0,c++):o&&s&&_lm.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},Wlm=(e,t)=>(qBu.lastIndex=0,e.replace(qBu,r=>t(r))),Hlm=(e,t)=>(GBu.lastIndex=0,WBu.lastIndex=0,e.replace(GBu,(r,n)=>t(n)).replace(WBu,r=>t(r)));function x2o(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?v2o.test(e)?"":t.pascalCase?n(e):r(e):(e!==r(e)&&(e=Glm(e,r,n,t.preserveConsecutiveUppercase)),e=e.replace(qlm,""),e=t.preserveConsecutiveUppercase?Wlm(e,r):r(e),t.pascalCase&&(e=n(e.charAt(0))+e.slice(1)),Hlm(e,n))}var T2o=be(JBu(),1);Jqe();var YBu=(e=0)=>t=>`\x1B[${t+e}m`,XBu=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,ZBu=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,B0={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]}},EgI=Object.keys(B0.modifier),Xlm=Object.keys(B0.color),Zlm=Object.keys(B0.bgColor),IgI=[...Xlm,...Zlm];function $lm(){let e=new Map;for(let[t,r]of Object.entries(B0)){for(let[n,i]of Object.entries(r))B0[n]={open:`\x1B[${i[0]}m`,close:`\x1B[${i[1]}m`},r[n]=B0[n],e.set(i[0],i[1]);Object.defineProperty(B0,t,{value:r,enumerable:!1})}return Object.defineProperty(B0,"codes",{value:e,enumerable:!1}),B0.color.close="\x1B[39m",B0.bgColor.close="\x1B[49m",B0.color.ansi=YBu(),B0.color.ansi256=XBu(),B0.color.ansi16m=ZBu(),B0.bgColor.ansi=YBu(10),B0.bgColor.ansi256=XBu(10),B0.bgColor.ansi16m=ZBu(10),Object.defineProperties(B0,{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=>B0.rgbToAnsi256(...B0.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)=>B0.ansi256ToAnsi(B0.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>B0.ansi256ToAnsi(B0.hexToAnsi256(t)),enumerable:!1}}),B0}var epm=$lm(),$Bu=epm;var B9r=new Set(["\x1B","\x9B"]),tpm=39,w2o="\x07",rPu="[",rpm="]",nPu="m",S2o=`${rpm}8;;`,ePu=e=>`${B9r.values().next().value}${rPu}${e}${nPu}`,tPu=e=>`${B9r.values().next().value}${S2o}${e}${w2o}`,npm=e=>e.split(" ").map(t=>k1(t)),C2o=(e,t,r)=>{let n=[...t],i=!1,o=!1,s=k1(FG(e[e.length-1]));for(let[a,c]of n.entries()){let u=k1(c);if(s+u<=r?e[e.length-1]+=c:(e.push(c),s=0),B9r.has(c)&&(i=!0,o=n.slice(a+1).join("").startsWith(S2o)),i){o?c===w2o&&(i=!1,o=!1):c===nPu&&(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())},ipm=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(k1(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},opm=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i,o,s=npm(e),a=[""];for(let[u,l]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let p=k1(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(""),C2o(a,l,t);continue}if(p+s[u]>t&&p>0&&s[u]>0){if(r.wordWrap===!1&&p<t){C2o(a,l,t);continue}a.push("")}if(p+s[u]>t&&r.wordWrap===!1){C2o(a,l,t);continue}a[a.length-1]+=l}r.trim!==!1&&(a=a.map(u=>ipm(u)));let c=[...a.join(`
|
|
3027
3027
|
`)];for(let[u,l]of c.entries()){if(n+=l,B9r.has(l)){let{groups:d}=new RegExp(`(?:\\${rPu}(?<code>\\d+)m|\\${S2o}(?<uri>.*)${w2o})`).exec(c.slice(u).join(""))||{groups:{}};if(d.code!==void 0){let f=Number.parseFloat(d.code);i=f===tpm?void 0:f}else d.uri!==void 0&&(o=d.uri.length===0?void 0:d.uri)}let p=$Bu.codes.get(Number(i));c[u+1]===`
|
|
3028
3028
|
`?(o&&(n+=tPu("")),i&&p&&(n+=ePu(p))):l===`
|
|
@@ -3594,7 +3594,7 @@ Hint: Values starting with "@" (such as scoped npm packages) must be wrapped in
|
|
|
3594
3594
|
Add a 'docs:' section to your fern.yml to get started.`,code:B.Code.ConfigError});let o=await new _Be({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&&vJm(p,s,a))),u=o.hasErrors||r.strict&&o.hasWarnings;if(r.json){let p=this.buildJsonResponse({result:o,filteredViolations:c,hasErrors:u});if(t.stdout.info(JSON.stringify(p,null,2)),u)throw new B({code:B.Code.ValidationError});return}if(c.length>0)for(let p of c){let d=p.severity==="warning"?fe.yellow:fe.red;process.stderr.write(`${d(`${p.displayRelativeFilepath}:${p.line}:${p.column}: ${p.message}`)}
|
|
3595
3595
|
`)}let l=0;if(o.mdxParseErrors.length>0){for(let p of o.mdxParseErrors)t.stderr.info(`
|
|
3596
3596
|
${p.toString()}
|
|
3597
|
-
`);r.fix?l+=await L$n(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!bYn()&&await U$n(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new Wyt({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new B({code:B.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${Pr.warning} ${fe.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(fe.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${Pr.success} ${fe.green("All checks passed")}`)}buildJsonResponse({result:t,filteredViolations:r,hasErrors:n}){let i={};return(r.length>0||t.mdxParseErrors.length>0)&&(i.docs=[...r.map(o=>Aee(o)),...t.mdxParseErrors.map(o=>({severity:"error",rule:o.code.code,filepath:o.displayRelativeFilepath,...o.line!=null?{line:o.line}:{},...o.column!=null?{column:o.column}:{},message:`[${o.code.code}] ${o.code.title}: ${o.rawMessage}`}))]),{success:!n,results:i}}};function vJm(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 DKo(e){let t=new PKo;Xn(e,"check","Validate docs configuration",(r,n)=>t.handle(r,n),r=>r.option("strict",{type:"boolean",description:"Treat warnings as errors",default:!1}).option("json",{type:"boolean",description:"Output results as JSON to stdout",default:!1}).option("fix",{type:"boolean",description:"Automatically fix issues that have a known resolution",default:!1}))}mb();jt();var Vtl=be(require("net"),1),_tl=be(require("os"),1),q$n=class extends Error{constructor(t){super(`${t} is locked`)}},Yyt={old:new Set,young:new Set},xJm=1e3*15,qtl=new Set;var H8t,CJm=()=>{let e=_tl.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},Ltl=e=>new Promise((t,r)=>{let n=Vtl.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),Utl=async(e,t)=>{if(e.host||e.port===0)return Ltl(e);for(let r of t)try{await Ltl({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},wJm=e=>Yyt.old.has(e)||Yyt.young.has(e)||qtl.has(e),SJm=function*(e){e&&(yield*e),yield 0};async function GBe(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??{};H8t===void 0&&(H8t=setTimeout(()=>{H8t=void 0,Yyt.old=Yyt.young,Yyt.young=new Set},xJm),H8t.unref&&H8t.unref());let o=CJm();for(let s of SJm(t))try{if(r.has(s))continue;let a=await Utl({...i,port:s},o);for(;wJm(a);){if(s!==0)throw new q$n(s);a=await Utl({...i,port:s},o)}return n?qtl.add(a):Yyt.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof q$n))throw a}throw new Error("No available ports found")}jt();var Htl=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,Gtl="docs.buildwithfern.com",Wtl=62;function t4e(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)),Htl.test(t)}function Ktl(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function K8t({orgId:e,previewId:t}){let r=Ktl(t),n=`${e}-preview-${r}.${Gtl}`;if(n.length<=Wtl)return n;let i=`${e}-preview-`,o=Wtl-i.length;if(o<8)throw new B({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:B.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${Gtl}`}Dt();CC();zm();Zt();Ow();jt();bn();var AZo=require("child_process"),gml=be(kKo(),1),yZo=be(Pei(),1),bZo=be(require("fs"),1),T4e=require("fs/promises"),Aml=be(require("http"),1),vZo=be(require("path"),1);Gei();Zt();var T9=require("fs/promises"),Ral=require("os"),IYo=be(require("path"),1),dih=".fern",mih="logs",EYo=100*1024*1024;function hih(){return"cli@5.
|
|
3597
|
+
`);r.fix?l+=await L$n(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!bYn()&&await U$n(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new Wyt({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new B({code:B.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${Pr.warning} ${fe.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(fe.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${Pr.success} ${fe.green("All checks passed")}`)}buildJsonResponse({result:t,filteredViolations:r,hasErrors:n}){let i={};return(r.length>0||t.mdxParseErrors.length>0)&&(i.docs=[...r.map(o=>Aee(o)),...t.mdxParseErrors.map(o=>({severity:"error",rule:o.code.code,filepath:o.displayRelativeFilepath,...o.line!=null?{line:o.line}:{},...o.column!=null?{column:o.column}:{},message:`[${o.code.code}] ${o.code.title}: ${o.rawMessage}`}))]),{success:!n,results:i}}};function vJm(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 DKo(e){let t=new PKo;Xn(e,"check","Validate docs configuration",(r,n)=>t.handle(r,n),r=>r.option("strict",{type:"boolean",description:"Treat warnings as errors",default:!1}).option("json",{type:"boolean",description:"Output results as JSON to stdout",default:!1}).option("fix",{type:"boolean",description:"Automatically fix issues that have a known resolution",default:!1}))}mb();jt();var Vtl=be(require("net"),1),_tl=be(require("os"),1),q$n=class extends Error{constructor(t){super(`${t} is locked`)}},Yyt={old:new Set,young:new Set},xJm=1e3*15,qtl=new Set;var H8t,CJm=()=>{let e=_tl.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},Ltl=e=>new Promise((t,r)=>{let n=Vtl.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),Utl=async(e,t)=>{if(e.host||e.port===0)return Ltl(e);for(let r of t)try{await Ltl({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},wJm=e=>Yyt.old.has(e)||Yyt.young.has(e)||qtl.has(e),SJm=function*(e){e&&(yield*e),yield 0};async function GBe(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??{};H8t===void 0&&(H8t=setTimeout(()=>{H8t=void 0,Yyt.old=Yyt.young,Yyt.young=new Set},xJm),H8t.unref&&H8t.unref());let o=CJm();for(let s of SJm(t))try{if(r.has(s))continue;let a=await Utl({...i,port:s},o);for(;wJm(a);){if(s!==0)throw new q$n(s);a=await Utl({...i,port:s},o)}return n?qtl.add(a):Yyt.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof q$n))throw a}throw new Error("No available ports found")}jt();var Htl=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,Gtl="docs.buildwithfern.com",Wtl=62;function t4e(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)),Htl.test(t)}function Ktl(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function K8t({orgId:e,previewId:t}){let r=Ktl(t),n=`${e}-preview-${r}.${Gtl}`;if(n.length<=Wtl)return n;let i=`${e}-preview-`,o=Wtl-i.length;if(o<8)throw new B({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:B.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${Gtl}`}Dt();CC();zm();Zt();Ow();jt();bn();var AZo=require("child_process"),gml=be(kKo(),1),yZo=be(Pei(),1),bZo=be(require("fs"),1),T4e=require("fs/promises"),Aml=be(require("http"),1),vZo=be(require("path"),1);Gei();Zt();var T9=require("fs/promises"),Ral=require("os"),IYo=be(require("path"),1),dih=".fern",mih="logs",EYo=100*1024*1024;function hih(){return"cli@5.55.0"}var h4e=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??Ge(Ge(Vt.of((0,Ral.homedir)()),Se.of(dih)),Se.of(mih));await $t(n)||await(0,T9.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=Ge(n,Se.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${IYo.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
|
|
3598
3598
|
`);await(0,T9.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)+`
|
|
3599
3599
|
`;try{await(0,T9.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:hih(),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,T9.readdir)(t)).filter(c=>c.endsWith(".log")),i=[];for(let c of n){let u=IYo.default.join(t,c);try{let l=await(0,T9.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=EYo/1024/1024;if(o<=EYo){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<=EYo)break;if(!(this.logFilePath!=null&&c.fullPath===this.logFilePath))try{await(0,T9.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 Wei={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function Fal(e){let t=gih();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:Wei});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",...Wei}})}catch{return new Response(JSON.stringify(i()),{headers:{"Content-Type":"application/json",...Wei}})}let d=/^\/_local\/(.*)/.exec(p.pathname);return u.method==="GET"&&d!=null?new Response(t.file(`/${d[1]}`),{headers:Wei}):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 h4e.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 gih(){return globalThis.Bun}jt();var Zal=require("events"),Xei=be(require("fs"),1),A4e=be(require("path"),1);var kal=be(require("os"),1),Nal=300,ePe=20,T9t=1e7,jal=kal.default.platform();var Aih=jal==="darwin",vYo=jal==="win32",tPe=Aih||vYo,Qal=3e3,zal=2e4,xYo=1250;var Eie;(function(e){e[e.DIR=1]="DIR",e[e.FILE=2]="FILE"})(Eie||(Eie={}));var g4e;(function(e){e.CHANGE="change",e.RENAME="rename"})(g4e||(g4e={}));var O9t;(function(e){e.CHANGE="change",e.ERROR="error"})(O9t||(O9t={}));var Cc;(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"})(Cc||(Cc={}));var eN;(function(e){e.ALL="all",e.CLOSE="close",e.ERROR="error",e.READY="ready"})(eN||(eN={}));var yih=(e,t=1,r)=>{t=Math.max(1,t);let n=r?.leading??!1,i=r?.trailing??!0,o=Math.max(r?.maxWait??1/0,t),s,a,c=0,u=0,l=()=>{let I=Date.now(),C=I-c,w=I-u,T=C>=t||w>=o;return[I,T]},p=I=>{if(u=I,!s)return;let C=s;s=void 0,e.apply(void 0,C)},d=()=>{E(0)},f=()=>{a&&(d(),p(Date.now()))},m=I=>{if(u=I,n)return p(I)},g=I=>{if(i&&s)return p(I);s=void 0},A=()=>{a=void 0;let[I,C]=l();return C?g(I):y(I)},y=I=>{let C=I-c,w=I-u,T=t-C,P=o-w,O=Math.min(T,P);return E(O)},E=I=>{a&&clearTimeout(a),!(I<=0)&&(a=setTimeout(A,I))},v=(...I)=>{let[C,w]=l(),T=!!a;if(s=I,c=C,(w||!a)&&E(t),w)return T?p(C):m(C)};return v.cancel=d,v.flush=f,v},Hei=yih;var TYo=be(require("fs"),1),Jei=be(require("path"),1);var Bd=be(require("fs"),1),MB=require("util");var zde=(e,t)=>function(...n){return e.apply(void 0,n).catch(t)},Iie=(e,t)=>function(...n){try{return e.apply(void 0,n)}catch(i){return t(i)}};var CYo=be(require("process"),1),Mal=CYo.default.getuid?!CYo.default.getuid():!1,Lal=1e4,rM=()=>{};var B9t={isChangeErrorOk:e=>{if(!B9t.isNodeError(e))return!1;let{code:t}=e;return t==="ENOSYS"||!Mal&&(t==="EINVAL"||t==="EPERM")},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!B9t.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(!B9t.isNodeError(e))throw e;if(!B9t.isChangeErrorOk(e))throw e}},Zv=B9t;var wYo=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=Lal,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()}}}}},Ual=new wYo;var Mde=(e,t)=>function(n){return function i(...o){return Ual.schedule().then(s=>{let a=u=>(s(),u),c=u=>{if(s(),Date.now()>=n)throw u;if(t(u)){let l=Math.round(100*Math.random());return new Promise(d=>setTimeout(d,l)).then(()=>i.apply(void 0,o))}throw u};return e.apply(void 0,o).then(a,c)})}},Lde=(e,t)=>function(n){return function i(...o){try{return e.apply(void 0,o)}catch(s){if(Date.now()>n)throw s;if(t(s))return i.apply(void 0,o);throw s}}};var bih={attempt:{chmod:zde((0,MB.promisify)(Bd.default.chmod),Zv.onChangeError),chown:zde((0,MB.promisify)(Bd.default.chown),Zv.onChangeError),close:zde((0,MB.promisify)(Bd.default.close),rM),fsync:zde((0,MB.promisify)(Bd.default.fsync),rM),mkdir:zde((0,MB.promisify)(Bd.default.mkdir),rM),realpath:zde((0,MB.promisify)(Bd.default.realpath),rM),stat:zde((0,MB.promisify)(Bd.default.stat),rM),unlink:zde((0,MB.promisify)(Bd.default.unlink),rM),chmodSync:Iie(Bd.default.chmodSync,Zv.onChangeError),chownSync:Iie(Bd.default.chownSync,Zv.onChangeError),closeSync:Iie(Bd.default.closeSync,rM),existsSync:Iie(Bd.default.existsSync,rM),fsyncSync:Iie(Bd.default.fsync,rM),mkdirSync:Iie(Bd.default.mkdirSync,rM),realpathSync:Iie(Bd.default.realpathSync,rM),statSync:Iie(Bd.default.statSync,rM),unlinkSync:Iie(Bd.default.unlinkSync,rM)},retry:{close:Mde((0,MB.promisify)(Bd.default.close),Zv.isRetriableError),fsync:Mde((0,MB.promisify)(Bd.default.fsync),Zv.isRetriableError),open:Mde((0,MB.promisify)(Bd.default.open),Zv.isRetriableError),readFile:Mde((0,MB.promisify)(Bd.default.readFile),Zv.isRetriableError),rename:Mde((0,MB.promisify)(Bd.default.rename),Zv.isRetriableError),stat:Mde((0,MB.promisify)(Bd.default.stat),Zv.isRetriableError),write:Mde((0,MB.promisify)(Bd.default.write),Zv.isRetriableError),writeFile:Mde((0,MB.promisify)(Bd.default.writeFile),Zv.isRetriableError),closeSync:Lde(Bd.default.closeSync,Zv.isRetriableError),fsyncSync:Lde(Bd.default.fsyncSync,Zv.isRetriableError),openSync:Lde(Bd.default.openSync,Zv.isRetriableError),readFileSync:Lde(Bd.default.readFileSync,Zv.isRetriableError),renameSync:Lde(Bd.default.renameSync,Zv.isRetriableError),statSync:Lde(Bd.default.statSync,Zv.isRetriableError),writeSync:Lde(Bd.default.writeSync,Zv.isRetriableError),writeFileSync:Lde(Bd.default.writeFileSync,Zv.isRetriableError)}},Val=bih;var Kei=be(require("fs"),1),P9t=be(require("path"),1);var SYo=()=>{};var Eih=()=>{let e=SYo,t=SYo,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}},_al=Eih;var Iih=()=>{let{promise:e,resolve:t,isPending:r}=_al(),n=0,i=()=>{n+=1},o=()=>{n-=1,!n&&t()};return i(),queueMicrotask(o),{promise:e,isPending:r,increment:i,decrement:o}},qal=Iih;var Gal={then:e=>{e()}};var Wal=e=>Array.isArray(e)?e:[e],Hal=e=>typeof e=="function";var vih=(e,t)=>{let r=t?.followSymlinks??!1,n=t?.depth??1/0,i=t?.limit??1/0,o=t?.ignore??[],s=Wal(o).map(se=>Hal(se)?se:pe=>se.test(pe)),a=se=>s.some(pe=>pe(se)),c=t?.signal??{aborted:!1},u=t?.onDirents||(()=>{}),l=[],p=new Set,d={},f=[],m=new Set,g={},A=[],y=new Set,E={},v={},I=new Set,C={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{},map:{}},w={directories:l,directoriesNames:p,directoriesNamesToPaths:d,files:f,filesNames:m,filesNamesToPaths:g,symlinks:A,symlinksNames:y,symlinksNamesToPaths:E,map:v},{promise:T,increment:P,decrement:O}=qal(),M=0,K=(se,pe,xe,Ee)=>{I.has(pe)||M>=i||(M+=1,se.directories.push(pe),se.directoriesNames.add(xe),l.push(pe),p.add(xe),d.propertyIsEnumerable(xe)||(d[xe]=[]),d[xe].push(pe),I.add(pe),!(Ee>=n)&&(M>=i||ce(pe,Ee+1)))},J=(se,pe,xe)=>{I.has(pe)||M>=i||(M+=1,se.files.push(pe),se.filesNames.add(xe),f.push(pe),m.add(xe),g.propertyIsEnumerable(xe)||(g[xe]=[]),g[xe].push(pe),I.add(pe))},Z=(se,pe,xe,Ee)=>{I.has(pe)||M>=i||(M+=1,se.symlinks.push(pe),se.symlinksNames.add(xe),A.push(pe),y.add(xe),E.propertyIsEnumerable(xe)||(E[xe]=[]),E[xe].push(pe),I.add(pe),r&&(Ee>=n||M>=i||Te(pe,Ee+1)))},ae=(se,pe,xe,Ee,De)=>{c.aborted||a(pe)||(Ee.isDirectory()?K(se,pe,xe,De):Ee.isFile()?J(se,pe,xe):Ee.isSymbolicLink()&&Z(se,pe,xe,De))},le=(se,pe,xe,Ee)=>{if(c.aborted)return;let De=pe===P9t.default.sep?"":P9t.default.sep,Ke=xe.name,ct=`${pe}${De}${Ke}`;a(ct)||(xe.isDirectory()?K(se,ct,Ke,Ee):xe.isFile()?J(se,ct,Ke):xe.isSymbolicLink()&&Z(se,ct,Ke,Ee))},oe=(se,pe,xe,Ee)=>{for(let De=0,Ke=xe.length;De<Ke;De++)le(se,pe,xe[De],Ee)},ce=(se,pe)=>{c.aborted||pe>n||M>=i||(P(),Kei.default.readdir(se,{withFileTypes:!0},(xe,Ee)=>{if(xe||c.aborted||!Ee.length)return O();(u(Ee)||Gal).then(()=>{let Ke=v[se]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};oe(Ke,se,Ee,pe),O()})}))},Te=(se,pe)=>{P(),Kei.default.realpath(se,(xe,Ee)=>{if(xe||c.aborted)return O();Kei.default.stat(Ee,(De,Ke)=>{if(De||c.aborted)return O();let ct=P9t.default.basename(Ee),Ct=v[se]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};ae(Ct,Ee,ct,Ke,pe),O()})})};return(async(se,pe=1)=>(se=P9t.default.normalize(se),I.add(se),ce(se,pe),await T,c.aborted?C:w))(e)},Kal=vih;var vie={lang:{debounce:Hei,attempt:e=>{try{return e()}catch(t){return vie.lang.castError(t)}},castArray:e=>vie.lang.isArray(e)?e:[e],castError:e=>vie.lang.isError(e)?e:vie.lang.isString(e)?new Error(e):new Error("Unknown error"),defer:e=>setTimeout(e,0),isArray:e=>Array.isArray(e),isError:e=>e instanceof Error,isFunction:e=>typeof e=="function",isNaN:e=>Number.isNaN(e),isNumber:e=>typeof e=="number",isPrimitive:e=>{if(e===null)return!0;let t=typeof e;return t!=="object"&&t!=="function"},isShallowEqual:(e,t)=>{if(e===t)return!0;if(vie.lang.isNaN(e))return vie.lang.isNaN(t);if(vie.lang.isPrimitive(e)||vie.lang.isPrimitive(t))return e===t;for(let r in e)if(!(r in t))return!1;for(let r in t)if(e[r]!==t[r])return!1;return!0},isSet:e=>e instanceof Set,isString:e=>typeof e=="string",isUndefined:e=>e===void 0,noop:()=>{},uniq:e=>e.length<2?e:Array.from(new Set(e))},fs:{getDepth:e=>Math.max(0,e.split(Jei.default.sep).length-1),getRealPath:(e,t)=>{try{return t?TYo.default.realpathSync.native(e):TYo.default.realpathSync(e)}catch{return}},isSubPath:(e,t)=>t.startsWith(e)&&t[e.length]===Jei.default.sep&&t.length-e.length>Jei.default.sep.length,poll:(e,t=zal)=>Val.retry.stat(t)(e,{bigint:!0}).catch(vie.lang.noop),readdir:async(e,t,r=1/0,n=1/0,i,o)=>{if(o&&r===1&&e in o){let s=o[e];return[s.directories,s.files]}else{let s=await Kal(e,{depth:r,limit:n,ignore:t,signal:i});return[s.directories,s.files]}}}},Yl=vie;var Yei=be(require("path"),1);var OYo=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||Yl.fs.isSubPath(this.folderPath,t)}_makeHandlerBatched(t=Nal){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=Yl.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===Cc.CHANGE&&a===Cc.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===Cc.ADD_DIR?await this.eventsPopulateAddDir(t,i,r,n):s===Cc.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??ePe:Math.min(1,this.options.depth??ePe),s=this.options.limit??T9t,[a,c]=await Yl.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())Yl.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(Cc.ADD,t))}onTargetAddDir(t){t!==this.folderPath&&this.options.recursive&&!tPe&&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(Cc.ADD_DIR,t))}onTargetChange(t){this._isSubRoot(t)&&this.watcher.event(Cc.CHANGE,t)}onTargetUnlink(t){this.watcher.watchersClose(Yei.default.dirname(t),t,!1),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlink(t,this.options.renameTimeout):this.watcher.event(Cc.UNLINK,t))}onTargetUnlinkDir(t){this.watcher.watchersClose(Yei.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(Cc.UNLINK_DIR,t))}onTargetEvent(t){let[r,n]=t;r===Cc.ADD?this.onTargetAdd(n):r===Cc.ADD_DIR?this.onTargetAddDir(n):r===Cc.CHANGE?this.onTargetChange(n):r===Cc.UNLINK?this.onTargetUnlink(n):r===Cc.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=g4e.CHANGE,r){if(this.watcher.isClosed())return;let n=Yei.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){vYo&&t.code==="EPERM"?this.onWatcherChange(g4e.CHANGE,""):this.watcher.error(t)}async init(){await this.initWatcherEvents(),await this.initInitialEvents()}async initWatcherEvents(){let t=this.onWatcherChange.bind(this);this.fswatcher.on(O9t.CHANGE,t);let r=this.onWatcherError.bind(this);this.fswatcher.on(O9t.ERROR,r)}async initInitialEvents(){let t=!this.watcher.isReady();if(this.filePath){if(this.watcher._poller.stats.has(this.filePath))return;await this.onWatcherEvent(g4e.CHANGE,this.filePath,t)}else{let r=this.options.recursive&&tPe&&this.options.native!==!1?this.options.depth??ePe:Math.min(1,this.options.depth??ePe),n=this.options.limit??T9t,[i,o]=await Yl.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(g4e.CHANGE,a,t)}))}}},Jal=OYo;var tN={interval:100,intervalId:void 0,fns:new Map,init:()=>{tN.intervalId||(tN.intervalId=setInterval(tN.resolve,tN.interval))},reset:()=>{tN.intervalId&&(clearInterval(tN.intervalId),delete tN.intervalId)},add:(e,t)=>{tN.fns.set(e,Date.now()+t),tN.init()},remove:e=>{tN.fns.delete(e)},resolve:()=>{if(!tN.fns.size)return tN.reset();let e=Date.now();for(let[t,r]of tN.fns)r>=e||(tN.remove(t),t())}},D9t=tN;var R9t=class e{constructor(t){this._watcher=t,this.reset()}getLockAdd(t,r=xYo){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(Yl.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),D9t.remove(u)},u=()=>{c(),a()};D9t.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=xYo){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),D9t.remove(u)},u=()=>{c(),a()};D9t.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,Cc.ADD,Eie.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,Cc.ADD_DIR,Eie.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,Cc.UNLINK,Eie.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,Cc.UNLINK_DIR,Eie.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}}};R9t.DIR_EVENTS={add:Cc.ADD_DIR,rename:Cc.RENAME_DIR,unlink:Cc.UNLINK_DIR};R9t.FILE_EVENTS={add:Cc.ADD,change:Cc.CHANGE,rename:Cc.RENAME,unlink:Cc.UNLINK};var Yal=R9t;var BYo=class{constructor(){this.map=new Map}clear(){this.map.clear()}delete(t,r){if(Yl.lang.isUndefined(r))return this.map.delete(t);if(this.map.has(t)){let n=this.map.get(t);if(Yl.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(Yl.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(Yl.lang.isUndefined(r))return this.map.has(t);if(this.map.has(t)){let n=this.map.get(t);return Yl.lang.isSet(n)?n.has(r):n===r}return!1}set(t,r){if(this.map.has(t)){let n=this.map.get(t);Yl.lang.isSet(n)?n.add(r):n!==r&&this.map.set(t,new Set([n,r]))}else this.map.set(t,r);return this}},PYo=BYo;var DYo=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}},Xal=DYo;var RYo=class{constructor(){this.inos={},this.paths=new PYo,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 Yl.fs.poll(t,r);if(!(!n||!(n.isFile()||n.isDirectory())))return new Xal(n)}reset(){this.inos={},this.paths=new PYo,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,Cc.ADD,i),[Cc.ADD];if(i.isDirectory())return this.updateIno(t,Cc.ADD_DIR,i),[Cc.ADD_DIR]}else if(n&&!i){if(n.isFile())return this.updateIno(t,Cc.UNLINK,n),[Cc.UNLINK];if(n.isDirectory())return this.updateIno(t,Cc.UNLINK_DIR,n),[Cc.UNLINK_DIR]}else if(n&&i){if(n.isFile()){if(i.isFile())return n.ino===i.ino&&!n.size&&!i.size?[]:(this.updateIno(t,Cc.CHANGE,i),[Cc.CHANGE]);if(i.isDirectory())return this.updateIno(t,Cc.UNLINK,n),this.updateIno(t,Cc.ADD_DIR,i),[Cc.UNLINK,Cc.ADD_DIR]}else if(n.isDirectory()){if(i.isFile())return this.updateIno(t,Cc.UNLINK_DIR,n),this.updateIno(t,Cc.ADD,i),[Cc.UNLINK_DIR,Cc.ADD];if(i.isDirectory())return n.ino===i.ino?[]:(this.updateIno(t,Cc.UNLINK_DIR,n),this.updateIno(t,Cc.ADD_DIR,i),[Cc.UNLINK_DIR,Cc.ADD_DIR])}}return[]}updateIno(t,r,n){let i=this.inos[r]=this.inos[r]||(this.inos[r]={}),o=n.isFile()?Eie.FILE:Eie.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)}}},FYo=RYo;var kYo=class e extends Zal.EventEmitter{constructor(t,r,n){super(),this._closed=!1,this._ready=!1,this._closeAborter=new AbortController,this._closeSignal=this._closeAborter.signal,this.on(eN.CLOSE,()=>this._closeAborter.abort()),this._closeWait=new Promise(i=>this.on(eN.CLOSE,i)),this._readyWait=new Promise(i=>this.on(eN.READY,i)),this._locker=new Yal(this),this._roots=new Set,this._poller=new FYo,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&&(Yl.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(eN.CLOSE))}error(t){if(this.isClosed())return!1;let r=Yl.lang.castError(t);return this.emit(eN.ERROR,r)}event(t,r,n){return this.isClosed()?!1:(this.emit(eN.ALL,t,r,n),this.emit(t,r,n))}ready(){return this.isClosed()||this.isReady()?!1:(this._ready=!0,this.emit(eN.READY))}pollerExists(t,r){for(let n of this._pollers)if(n.targetPath===t&&Yl.lang.isShallowEqual(n.options,r))return!0;return!1}subwatcherExists(t,r){for(let n of this._subwatchers)if(n.targetPath===t&&Yl.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)Yl.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 Jal(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=Yl.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=A4e.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??ePe))&&l.handler===n&&(!l.filePath||l.filePath===i)&&l.options.ignore===r.ignore&&!!l.options.native==!!r.native&&(!r.recursive||l.options.recursive&&tPe&&l.options.native!==!1)))return!0;if(!tPe)break;let u=A4e.default.dirname(t);if(s===u)break;s=u}return!1}async watchDirectories(t,r,n,i,o){if(this.isClosed())return;t=Yl.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||tPe&&r.native!==!1?r:{...r,recursive:!1},l={watcher:Xei.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=A4e.default.dirname(a),g=a;await this.watchDirectories([m],f,n,g,p)}}catch(c){this.error(c)}return s}async watchDirectory(t,r,n,i,o){if(!this.isClosed()&&!this.isIgnored(t,r.ignore)){if(!r.recursive||tPe&&r.native!==!1)return this.watchersLock(()=>this.watchDirectories([t],r,n,i,o));{r={...r,recursive:!0};let s=r.depth??ePe,a=r.limit??T9t,[c]=await Yl.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=Yl.fs.getDepth(t);for(let p of c){let d=Yl.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(eN.CLOSE,c),s.watchFile(t,r,o)},c=()=>{this._subwatchers.delete(i),this.removeListener(eN.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=A4e.default.dirname(t);return this.watchDirectory(i,r,n,t)}async watchPollingOnce(t,r,n){if(this.isClosed())return;let i=!1,o=new FYo,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 Yl.lang.noop;if(this.pollerExists(t,r))return Yl.lang.noop;let i={...r,interval:r.pollingInterval??Qal},o={targetPath:t,options:r},s=()=>{this._pollers.add(o),this.on(eN.CLOSE,a),Xei.default.watchFile(t,i,n)},a=()=>{this._pollers.delete(o),this.removeListener(eN.CLOSE,a),Xei.default.unwatchFile(t,n)};return Yl.lang.attempt(s),()=>Yl.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=Yl.lang.uniq(t).sort(),t.every((o,s)=>t.every((a,c)=>c===s||!Yl.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=A4e.default.resolve(t),this.isIgnored(t,r.ignore)))return;let i=await Yl.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=A4e.default.dirname(t);return(await Yl.fs.poll(o,r.pollingTimeout))?.isDirectory()?this.watchUnknownChild(t,r,n):this.watchUnknownTarget(t,r,n)}}async watch(t,r,n=Yl.lang.noop){if(Yl.lang.isFunction(t))return this.watch([],{},t);if(Yl.lang.isUndefined(t))return this.watch([],r,n);if(Yl.lang.isFunction(r))return this.watch(t,{},r);if(Yl.lang.isUndefined(r))return this.watch(t,{},n);if(this.isClosed())return;this.isReady()&&(r.readdirMap=void 0);let i=Yl.lang.castArray(t);i.forEach(o=>this._roots.add(o)),await this.watchPaths(i,r,n),!this.isClosed()&&(n!==Yl.lang.noop&&this.on(eN.ALL,n),r.readdirMap=void 0,this.ready())}},$al=kYo;function xih(e){return"code"in e&&typeof e.code=="string"}function ecl(e){return e instanceof Error?e:new Error(String(e))}function tcl(e){return xih(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 Zei({absoluteFilePathToFern:e,additionalFilepaths:t,context:r}){let n=new $al([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(ecl(c))};n.once("ready",s),n.once("error",a)});return i!=null&&(n.close(),r.failAndThrow(tcl(i),i,{code:B.Code.EnvironmentError})),n.on("error",o=>{let s=ecl(o);r.failWithoutThrowing(tcl(s),s,{code:B.Code.EnvironmentError}),n.close()}),n}Zt();Ow();jt();bn();var nml=require("child_process"),pri=be(_Yo(),1),iml=be(rZo(),1),qE=require("fs"),iN=require("fs/promises"),oml=require("os"),nN=be(require("path"),1),sml=be(dI(),1),aml=be(rml(),1),S4e=process.platform==="win32",lri=fe.cyan("[docs]:"),$ch="etag",euh=23,dZo=e=>e.padEnd(euh," "),tuh="preview",ruh="app-preview",nuh="bundle",iuh=".next",ouh="standalone",suh=".fern",auh="packages/fern-docs/bundle/.next/server/instrumentation.js",cuh='Cannot find matching keyid: {"signatures":',uuh="ERR_PNPM_IGNORED_BUILDS";function luh(e){try{let r=(0,nml.execSync)('reg query "HKLM\\SYSTEM\\CurrentControlSet\\Control\\FileSystem" /v LongPathsEnabled',{encoding:"utf-8",timeout:5e3}).match(/LongPathsEnabled\s+REG_DWORD\s+0x(\d+)/i);if(r!=null&&r[1]==="1")return}catch(t){e.debug(`Registry query for LongPathsEnabled failed: ${t}`)}throw new B({message:`Windows long path support is not enabled. The docs bundle contains deeply nested .pnpm paths that exceed the 260-character MAX_PATH limit.
|
|
3600
3600
|
|
|
@@ -4155,7 +4155,7 @@ js:
|
|
|
4155
4155
|
${i.error?.message??"Unknown error"}`,code:B.Code.ParseError})}iW();Zt();xW();bn();var gTl=require("fs"),jci=require("fs/promises"),ATl=require("stream/promises");async function yTl({snippetsS3PreSignedReadUrl:e,absolutePathToLocalSnippetJSON:t,context:r}){try{await vBh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}),r.logger.info(fe.green(`Downloaded to ${t}`))}catch{r.logger.debug(fe.yellow("Failed to download snippet.json from output."))}}async function vBh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}){let r=await fy.get(e,{responseType:"stream"});await $t(t)&&await(0,jci.rm)(t,{recursive:!0}),await(0,jci.mkdir)(yn(t),{recursive:!0}),await(0,ATl.pipeline)(r.data,(0,gTl.createWriteStream)(t))}Va();Zt();async function bTl({generatorInvocation:e,context:t}){if(e.absolutePathToLocalOutput==null)return;let r=Ge(e.absolutePathToLocalOutput,Se.of(MP));if(await $t(r))return t.logger.debug(`Auto-discovered ${MP} at ${r}`),r}Gp();Kk();Va();nm();Dt();zm();var ZFl=be(LUe(),1);Kl();Mn();tc();om();Tde();jt();nm();Zt();jt();iW();xW();var OTl=be(PMt(),1),Lci=require("fs/promises");ps();var BTl=be(Nm(),1),PTl=require("util"),DTl=require("zlib");jt();var LBh=2e3,STl=12e4,Qas=5,UBh=.5,UUe=class e extends Error{retryAfterSeconds;constructor(t){super("Received 429 Too Many Requests"),Object.setPrototypeOf(this,e.prototype),this.retryAfterSeconds=t}};async function TTl({fn:e,retryRateLimited:t,logger:r,onRateLimitedWithoutRetry:n,delayFn:i=o=>new Promise(s=>setTimeout(s,o))}){if(!t)try{return await e()}catch(o){if(o instanceof UUe)return n();throw o}for(let o=0;o<=Qas;o++)try{return await e()}catch(s){if(s instanceof UUe&&o<Qas){let a=Math.min(LBh*2**o,STl),c=s.retryAfterSeconds!=null?s.retryAfterSeconds*1e3:void 0,u=c!=null?Math.max(a,c):a,l=1+(Math.random()-.5)*UBh,p=Math.round(Math.min(Math.max(u*l,c??0),STl));r.warn(`Received 429 Too Many Requests. Retrying in ${(p/1e3).toFixed(1)}s (attempt ${o+1}/${Qas})...`),await i(p)}else throw s}throw new B({message:"Exceeded maximum retries for 429 Too Many Requests.",code:B.Code.NetworkError})}var VBh=(0,PTl.promisify)(DTl.gzip);async function RTl({projectConfig:e,workspace:t,organization:r,intermediateRepresentation:n,generatorInvocation:i,version:o,context:s,shouldLogS3Url:a,token:c,whitelabel:u,replay:l,irVersionOverride:p,absolutePathToPreview:d,fiddlePreview:f,pushPreviewBranch:m,fernignorePath:g,skipFernignore:A,retryRateLimited:y,automationMode:E,autoMerge:v,skipIfNoDiff:I,verify:C,loginCommand:w="fern login",specsTarGzBuffer:T}){let P;if(A)P="";else if(g!=null)try{P=await(0,Lci.readFile)(g,"utf-8")}catch(M){s.failAndThrow(`Failed to read fernignore file at ${g}: ${M}`,void 0,{code:B.Code.ConfigError})}let O=await TTl({fn:()=>_Bh({projectConfig:e,workspace:t,organization:r,generatorInvocation:i,version:o,context:s,shouldLogS3Url:a,token:c,whitelabel:u,replay:l,absolutePathToPreview:d,fiddlePreview:f,pushPreviewBranch:m,fernignoreContents:P,automationMode:E,autoMerge:v,skipIfNoDiff:I,verify:C,loginCommand:w}),retryRateLimited:y,logger:s.logger,onRateLimitedWithoutRetry:()=>s.failAndThrow("Received 429 Too Many Requests. Re-run with --retry-rate-limited to automatically retry.",void 0,{code:B.Code.NetworkError})});return await qBh({intermediateRepresentation:n,job:O,context:s,generatorInvocation:i,irVersionOverride:p,specsTarGzBuffer:T}),O}async function _Bh({projectConfig:e,workspace:t,organization:r,generatorInvocation:n,version:i,context:o,shouldLogS3Url:s,token:a,whitelabel:c,replay:u,absolutePathToPreview:l,fiddlePreview:p,pushPreviewBranch:d,fernignoreContents:f,skipIfNoDiff:m,verify:g,loginCommand:A}){let y=hpe({token:a.value}),E={id:n.name,version:n.version,outputMode:n.outputMode,customConfig:n.config,publishMetadata:n.publishMetadata},v={apiName:t.definition.rootApiFile.contents.name,version:i,organizationName:r,generators:[E],uploadToS3:JBh({outputMode:n.outputMode,generatorInvocation:n,absolutePathToPreview:l,shouldLogS3Url:s}),whitelabel:c,replay:u!=null?{enabled:u.enabled}:void 0,preview:p??l!=null,pushPreviewBranch:d,fernignoreContents:f,skipIfNoDiff:m,verify:g},I=await y.remoteGen.createJobV3(v);if(!I.ok){let C=I.error;if(C?.content?.reason==="status-code"&&C.content.statusCode===429){let T=HBh(C);throw new UUe(T)}let w=WBh(C);return w!=null?o.failAndThrow(w,void 0,{code:B.Code.ConfigError}):KBh(C)._visit({illegalApiNameError:()=>o.failAndThrow("API name is invalid: "+t.definition.rootApiFile.contents.name,void 0,{code:B.Code.ConfigError}),illegalApiVersionError:()=>o.failAndThrow("API version is invalid: "+i,void 0,{code:B.Code.ConfigError}),cannotPublishToNpmScope:({validScope:T,invalidScope:P})=>o.failAndThrow(`You do not have permission to publish to ${P} (expected ${T})`,void 0,{code:B.Code.AuthError}),cannotPublishToMavenGroup:({validGroup:T,invalidGroup:P})=>o.failAndThrow(`You do not have permission to publish to ${P} (expected ${T})`,void 0,{code:B.Code.AuthError}),cannotPublishPypiPackage:({validPrefix:T,invalidPackageName:P})=>o.failAndThrow(`You do not have permission to publish to ${P} (expected ${T})`,void 0,{code:B.Code.AuthError}),generatorsDoNotExistError:T=>o.failAndThrow("Generators do not exist: "+T.nonExistentGenerators.map(P=>`${P.id}@${P.version}`).join(", "),void 0,{code:B.Code.ConfigError}),insufficientPermissions:()=>o.failAndThrow(`You do not have permission to run this generator for organization '${r}'. Please run '${A}' to ensure you are logged in with the correct account.
|
|
4156
4156
|
|
|
4157
4157
|
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`,void 0,{code:B.Code.AuthError}),orgNotConfiguredForWhitelabel:()=>o.failAndThrow("Your org is not configured for white-labeling. Please reach out to support@buildwithfern.com.",void 0,{code:B.Code.AuthError}),branchDoesNotExist:T=>o.failAndThrow(`Branch ${T.branch} does not exist in repository ${T.repositoryOwner}/${T.repositoryName}`,void 0,{code:B.Code.ConfigError}),rateLimitExceeded:()=>{throw new UUe},_other:T=>{o.logger.debug(`Failed to create job: ${JSON.stringify(T)}`);let P=GBh(T);return P!=null?o.failAndThrow(P,void 0,{code:B.Code.NetworkError}):o.failAndThrow("Failed to create job. Please try again or contact support@buildwithfern.com for assistance.",void 0,{code:B.Code.NetworkError})}})}return I.body}async function qBh({intermediateRepresentation:e,generatorInvocation:t,job:r,context:n,irVersionOverride:i,specsTarGzBuffer:o}){let s=await sMe(t).then(m=>m==null?void 0:"v"+m.toString()),a=i??s,c=a==null?await d5t({intermediateRepresentation:e,context:n,targetGenerator:{name:t.name,version:t.version}}):await P8o({intermediateRepresentation:e,context:n,irVersion:a,targetGenerator:{name:t.name,version:t.version}}),u=new OTl.default,l=await esr(c,{onWrite:m=>{n.logger.debug("Wrote IR to disk: "+m)}}),p=new TextEncoder().encode(l),d=await VBh(p);n.logger.debug(`Compressed IR from ${p.byteLength} bytes to ${d.length} bytes (${((1-d.length/p.byteLength)*100).toFixed(1)}% reduction)`),u.append("ir",d,{filename:"ir.json",contentType:"application/octet-stream"}),o!=null&&(u.append("specs",o,{filename:"specs.tar.gz",contentType:"application/gzip"}),n.logger.debug(`Appended specs tar.gz (${o.length} bytes)`));let f=(0,BTl.default)(aMe(),`/api/remote-gen/jobs/${r.jobId}/start`);try{await fy.post(f,u,{headers:u.getHeaders(),maxBodyLength:1/0})}catch(m){let g=m instanceof Osu?m.response?.data:m;n.logger.debug(`POST ${f} failed with ${JSON.stringify(m)}`),n.failAndThrow("Failed to start job",g,{code:B.Code.NetworkError})}}function GBh(e){let t;if(e?.reason==="status-code"?t=e.body:e?.content?.reason==="status-code"&&(t=e.content.body),typeof t?.content?.message=="string")return t.content.message;if(typeof t?.message=="string")return t.message}function WBh(e){let t=e?.content?.reason==="status-code"?e.content.body:void 0;return t?.error!=="GithubAppNotInstalled"?void 0:typeof t?.content?.message=="string"?t.content.message:`The Fern GitHub App is not installed on ${typeof t?.content?.repositoryName=="string"?t.content.repositoryName:"the target repository"}. Please install it (https://github.com/apps/fern-api) and try again.`}function HBh(e){let t=e?.content?.body?.content?.retryAfter;return typeof t=="number"&&t>0?t:void 0}function KBh(e){if(e?.content?.reason==="status-code"){let t=e.content.body;switch(t?.error){case"IllegalApiNameError":return Vr.remoteGen.createJobV3.Error.illegalApiNameError();case"IllegalApiVersionError":return Vr.remoteGen.createJobV3.Error.illegalApiVersionError(t.content);case"GeneratorsDoNotExistError":return Vr.remoteGen.createJobV3.Error.generatorsDoNotExistError(t.content);case"CannotPublishToNpmScope":return Vr.remoteGen.createJobV3.Error.cannotPublishToNpmScope(t.content);case"CannotPublishToMavenScope":return Vr.remoteGen.createJobV3.Error.cannotPublishToMavenGroup(t.content);case"CannotPublishPypiPackage":return Vr.remoteGen.createJobV3.Error.cannotPublishPypiPackage(t.content);case"InsufficientPermissions":return Vr.remoteGen.createJobV3.Error.insufficientPermissions(t.content);case"OrgNotConfiguredForWhitelabel":return Vr.remoteGen.createJobV3.Error.orgNotConfiguredForWhitelabel(t.content);case"BranchDoesNotExist":return Vr.remoteGen.createJobV3.Error.branchDoesNotExist(t.content)}}return e}function JBh({outputMode:e,generatorInvocation:t,absolutePathToPreview:r,shouldLogS3Url:n}){return e.type==="downloadFiles"||t.absolutePathToLocalSnippets!=null||r!=null||n}jt();nm();var FTl=hpe();var YBh=3;function kTl({job:e,taskId:t,taskHandler:r,context:n}){let i=0,o=async()=>{let s=await FTl.remoteGen.getJobStatus(e.jobId);if(s.ok)return s.body[t];n.logger.debug("Failed to get job status.",JSON.stringify(s.error.content))};return new Promise((s,a)=>{c();async function c(){try{let u=await o();if(u==null)i++,i===YBh&&n.failAndThrow(`Failed to get job status after ${i} attempts.`,void 0,{code:B.Code.NetworkError}),setTimeout(c,2e3+1e3*i);else{i=0;let l=await r.processUpdate(u);r.isFinished?s(l):setTimeout(c,2e3)}}catch(u){a(u)}}})}Va();Dt();Zt();var GFl=be(Hui(),1);mb();Ow();jt();xW();bn();var Yui=require("fs"),vM=require("fs/promises"),$Ue=be(require("path"),1),rls=require("stream/promises");SQr();var Kui=be(qFl(),1);function Dme(e,t,{target:r="stdout",...n}={}){return Kui.default[r]?fW.link(e,t):n.fallback===!1?e:typeof n.fallback=="function"?n.fallback(e,t):`${e} (\u200B${t}\u200B)`}Dme.isSupported=Kui.default.stdout;Dme.stderr=(e,t,r={})=>Dme(e,t,{target:"stderr",...r});Dme.stderr.isSupported=Kui.default.stderr;var Xui=be(dI(),1),WFl=be(Wti(),1);var jjh=/^Pipeline: raw result \(\d+ bytes\): (\{.*\})$/,Jui=class{context;generatorInvocation;absolutePathToPreview;telemetryContext;lengthOfLastLogs=0;cachedReplayResult;replayEventEmitted=!1;taskStartedAtMs=Date.now();constructor({interactiveTaskContext:t,generatorInvocation:r,absolutePathToPreview:n,telemetryContext:i}){this.context=t,this.generatorInvocation=r,this.absolutePathToPreview=n,this.telemetryContext=i}async processUpdate(t){t==null&&this.context.failAndThrow("Task is missing on job status",void 0,{code:B.Code.InternalError});let r=t.packages.map(i=>i.coordinate._visit({npm:o=>`${o.name}@${o.version}`,maven:o=>`${o.group}:${o.artifact}:${o.version}`,pypi:o=>`${o.name} ${o.version}`,ruby:o=>`${o.name}:${o.version}`,nuget:o=>`${o.name} ${o.version}`,crates:o=>`${o.name} ${o.version}`,_other:()=>"<unknown package>"}));t.packages.length>0&&this.#n==null&&(this.#n=t.packages[0]?.coordinate._visit({npm:i=>i.version,maven:i=>i.version,pypi:i=>i.version,ruby:i=>i.version,nuget:i=>i.version,crates:i=>i.version,_other:()=>{}})),this.#i==null&&(this.#i=tTl(t.packages)),this.absolutePathToPreview==null&&this.context.setSubtitle(r.length>0?r.map(i=>`\u25E6 ${i}`).join(`
|
|
4158
|
-
`):void 0);for(let i of t.logs.slice(this.lengthOfLastLogs))this.context.logger.log(qjh(i.level),i.message),this.#n==null&&(this.#n=zjh(i.message)??this.#n),this.cachedReplayResult==null&&(this.cachedReplayResult=Mjh(i.message));this.lengthOfLastLogs=t.logs.length;let n=i=>{this.context.logger.debug(`Generated files. ${Dme("View here",i,{fallback:(o,s)=>`${o}: ${s}`})}`)};return await t.status._visit({notStarted:ht,running:ht,failed:({message:i,s3PreSignedReadUrl:o})=>{o!=null&&n(o),this.context.failAndThrow(i,void 0,{code:B.Code.ContainerError})},finished:async i=>{if(i.s3PreSignedReadUrlV2!=null){n(i.s3PreSignedReadUrlV2);let o=this.getAbsolutePathToLocalOutput();o!=null&&await Vjh({s3PreSignedReadUrl:i.s3PreSignedReadUrlV2,absolutePathToLocalOutput:o,context:this.context})}if(this.absolutePathToPreview==null)for(let o of r)this.context.logger.info(`Published ${o}`);this.#e=!0,this.#t=i.createdSnippets!=null?i.createdSnippets:!1,this.#r=i.snippetsS3PreSignedReadUrl,this.#o=i.pullRequestUrl,this.#s=i.noChangesDetected,i.actualVersion!=null&&(this.#n=i.actualVersion),this.emitReplayTelemetryIfReady()},_other:()=>{this.context.logger.warn("Received unknown update type: "+t.status.type)}}),this.#e?{createdSnippets:this.#t,snippetsS3PreSignedReadUrl:this.#r,actualVersion:this.#n,pullRequestUrl:this.#o,noChangesDetected:this.#s,publishTarget:this.#i}:void 0}getAbsolutePathToLocalOutput(){return this.absolutePathToPreview!=null?Ge(this.absolutePathToPreview,Se.of($Ue.default.basename(this.generatorInvocation.name))):this.generatorInvocation.absolutePathToLocalOutput}emitReplayTelemetryIfReady(){if(!this.replayEventEmitted&&this.cachedReplayResult!=null&&!this.telemetryContext.disableTelemetry)try{let t={success:!0,steps:{replay:this.cachedReplayResult},warnings:[]},n={...(0,GFl.buildReplayTelemetryProps)({pipelineResult:t,generatorName:this.generatorInvocation.name,generatorVersion:this.generatorInvocation.version,cliVersion:this.telemetryContext.cliVersion,repoUri:Ljh(this.generatorInvocation),automationMode:this.telemetryContext.automationMode,autoMerge:this.telemetryContext.autoMerge,skipIfNoDiff:this.telemetryContext.skipIfNoDiff,hasBreakingChanges:!1,versionArg:this.telemetryContext.versionArg,versionBump:this.telemetryContext.versionBump,replayConfigEnabled:this.telemetryContext.replayConfigEnabled,noReplayFlag:this.telemetryContext.noReplayFlag,githubMode:Ujh(this.generatorInvocation),previewMode:this.absolutePathToPreview!=null,durationMs:Date.now()-this.taskStartedAtMs}),surface:"fiddle",org_id:this.telemetryContext.orgId};this.context.instrumentPostHogEvent({command:"replay",properties:n}),this.context.logger.debug(`[telemetry] replay event sent: ${JSON.stringify(n)}`),this.replayEventEmitted=!0}catch(t){this.context.logger.debug(`[telemetry] failed to send replay event: ${String(t)}`)}}#e=!1;get isFinished(){return this.#e}#t=!1;get createdSnippets(){return this.#t}#r=void 0;get snippetsS3PreSignedReadUrl(){return this.#r}#n=void 0;get actualVersion(){return this.#n}#i=void 0;get publishTarget(){return this.#i}#o=void 0;get pullRequestUrl(){return this.#o}#s=void 0;get noChangesDetected(){return this.#s}},Qjh=/Tagging release (v?\d+\.\d+\.\d+(?:-[\w.-]+)?)/;function zjh(e){let t=e.match(Qjh);if(t?.[1]!=null)return t[1].replace(/^v/,"")}function Mjh(e){let t=e.match(jjh);if(t?.[1]!=null)try{return JSON.parse(t[1])?.steps?.replay}catch{return}}function Ljh(e){let t=e.raw?.github;return t==null?"":"uri"in t&&typeof t.uri=="string"?t.uri:"repository"in t&&typeof t.repository=="string"?t.repository:""}function Ujh(e){let t=e.raw?.github;if(t!=null&&"mode"in t){if(t.mode==="pull-request")return"pull-request";if(t.mode==="commit-and-release")return"commit-and-release"}return"push"}async function Vjh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){try{let n=await Gjh(t),i=await Wjh(t);n&&i?await Hjh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}):n&&!i?await Kjh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}):await _jh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}),r.logger.info(fe.green(`Downloaded to ${t}`))}catch(n){r.failAndThrow("Failed to download files",n,{code:B.Code.NetworkError})}}async function _jh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}){let r=await fy.get(e,{responseType:"stream"}),n=await Xui.default.dir({prefix:"fern",unsafeCleanup:!0}),i=$Ue.default.join(n.path,"output.zip");await(0,rls.pipeline)(r.data,(0,Yui.createWriteStream)(i)),await tls(t),await(0,vM.mkdir)(t,{recursive:!0}),await JFl(i,t)}async function tls(e){await $t(e)&&(await HFl(e),await(0,vM.rm)(e,{recursive:!0,force:!0}))}async function HFl(e){try{let t=await(0,vM.readdir)(e,{withFileTypes:!0});for(let r of t){let n=Vt.of($Ue.default.join(e,r.name));r.isDirectory()&&await HFl(n);try{await(0,vM.chmod)(n,493)}catch{}}await(0,vM.chmod)(e,493)}catch{}}function qjh(e){switch(e){case"DEBUG":return Un.Debug;case"INFO":return Un.Info;case"WARN":return Un.Warn;case"ERROR":return Un.Error;default:return Un.Info}}async function Gjh(e){let t=Ge(e,Se.of(MP));return await $t(t)}async function Wjh(e){let t=Ge(e,Se.of(".git"));return await $t(t)}async function EK(e,t,r){return(await Wc(r.logger,"git",e,{cwd:t,doNotPipeOutput:!0})).stdout}async function Hjh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){let n=Ge(t,Se.of(MP)),i=await Dye({absolutePathToFernignore:n});await EK(["rm","-rf","."],t,r),await KFl({s3PreSignedReadUrl:e,outputPath:t}),await EK(["add","."],t,r),await EK(["reset","--",...i],t,r),await EK(["restore","."],t,r)}async function Kjh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){let n=Vt.of((await Xui.default.dir({})).path),i=Ge(t,Se.of(MP)),o=await Dye({absolutePathToFernignore:i});await(0,vM.cp)(t,n,{recursive:!0}),await EK(["init"],n,r),await EK(["add","."],n,r),await EK(["-c","user.name=fern","-c","user.email=hey@buildwithfern.com","-c","commit.gpgsign=false","commit","--allow-empty","--no-verify","-m","init"],n,r),await EK(["rm","-rf","."],n,r),await KFl({s3PreSignedReadUrl:e,outputPath:n}),await EK(["add","."],n,r),await EK(["reset","--",...o],n,r),await EK(["restore","."],n,r),await tls(Ge(n,Se.of(".git"))),await tls(t),await(0,vM.cp)(n,t,{recursive:!0})}async function KFl({s3PreSignedReadUrl:e,outputPath:t}){let r=await fy.get(e,{responseType:"stream"}),n=await Xui.default.dir({prefix:"fern",unsafeCleanup:!0}),i=$Ue.default.join(n.path,"output.zip");await(0,rls.pipeline)(r.data,(0,Yui.createWriteStream)(i)),await JFl(i,t)}async function JFl(e,t){return new Promise((r,n)=>{WFl.default.open(e,{lazyEntries:!0},(i,o)=>{if(i||!o){n(i??new Error("Failed to open zip file"));return}o.on("error",n),o.on("end",r),o.on("entry",s=>{let a=$Ue.default.join(t,s.fileName);if(s.fileName.endsWith("/")){(0,vM.mkdir)(a,{recursive:!0}).then(()=>o.readEntry()).catch(n);return}(0,vM.mkdir)($Ue.default.dirname(a),{recursive:!0}).then(()=>{o.openReadStream(s,(c,u)=>{if(c||!u){n(c??new Error("Failed to open read stream"));return}u.pipe((0,Yui.createWriteStream)(a)).on("finish",()=>o.readEntry()).on("error",n)})}).catch(n)}),o.readEntry()})})}Zt();Mn();Ow();jt();var Zui=require("fs/promises"),YFl=be(dI(),1),Jjh="proto.zip",F7t=class{sourceTypes;context;sources;constructor(t,r){this.context=t,this.sources=Object.fromEntries(r.map(n=>[n.id,n])),this.sourceTypes=new Set(Object.values(this.sources).map(n=>n.type))}async uploadSources(t){for(let[r,n]of Object.entries(t)){let i=this.getSourceOrThrow(r);await this.uploadSource(i,n.uploadUrl)}return this.convertFdrSourceUploadsToSourceConfig(t)}async uploadSource(t,r){let n=await this.getUploadCommand(t),i=await(0,Zui.readFile)(n.absoluteFilePath),o;try{o=await fetch(r,{method:"PUT",body:i,headers:{"Content-Type":"application/octet-stream"}})}catch(s){await n.cleanup(),this.context.failAndThrow(`Network error uploading source file: ${t.absoluteFilePath}`,s,{code:B.Code.NetworkError});return}await n.cleanup(),o.ok||this.context.failAndThrow(`Failed to upload source file: ${t.absoluteFilePath}. Status: ${o.status}, ${o.statusText}`,void 0,{code:B.Code.NetworkError})}async getUploadCommand(t){if(t.type==="protobuf"){let r=await this.zipSource(t.absoluteFilePath);return{absoluteFilePath:r,cleanup:async()=>{this.context.logger.debug(`Removing ${r}`),await(0,Zui.unlink)(r)}}}return{absoluteFilePath:t.absoluteFilePath,cleanup:async()=>{}}}async zipSource(t){let r=await YFl.default.dir(),n=Ge(Vt.of(r.path),Se.of(Jjh));return this.context.logger.debug(`Zipping source ${t} into ${n}`),await Wc(this.context.logger,"zip",["-r",n,"."],{cwd:t,doNotPipeOutput:!0}),n}convertFdrSourceUploadsToSourceConfig(t){let r=[];for(let[n,i]of Object.entries(t))switch(this.getSourceOrThrow(n).type){case"protobuf":r.push(mj.proto({id:n,protoRootUrl:i.downloadUrl}));continue;case"openapi":r.push(mj.openapi());continue;case"asyncapi":continue}return{sources:r}}getSourceOrThrow(t){let r=this.sources[t];return r==null&&this.context.failAndThrow(`Internal error; server responded with source id "${t}" which does not exist in the workspace.`,void 0,{code:B.Code.InternalError}),r}};async function $Fl({projectConfig:e,organization:t,workspace:r,interactiveTaskContext:n,generatorInvocation:i,version:o,audiences:s,shouldLogS3Url:a,token:c,whitelabel:u,replay:l,irVersionOverride:p,absolutePathToPreview:d,isPreview:f,fiddlePreview:m,pushPreviewBranch:g,readme:A,fernignorePath:y,skipFernignore:E,dynamicIrOnly:v,retryRateLimited:I,requireEnvVars:C,automationMode:w,autoMerge:T,skipIfNoDiff:P,verify:O,noReplay:M,disableTelemetry:K,loginCommand:J,specsTarGzBuffer:Z}){let ae=Fk({token:c.value}),oe=await PLt("https://registry.buildwithfern.com/health",n.logger),ce=jn.getPackageName({generatorInvocation:i}),Te=f??d!=null,Fe=ye=>XA(ye,{onError:Be=>{!Te&&C&&n.failAndThrow(void 0,Be,{code:B.Code.EnvironmentError})}},{substituteAsEmpty:Te}),se=Fe(i),pe=QUe({apiName:r.definition.rootApiFile.contents.name,organization:t,generatorInvocation:se}),xe=o??await _Dt({packageName:ce,generatorInvocation:i});o!=null&&(Te?n.logger.warn(`Skipping version availability check in preview mode. Version ${o} may already exist on the package registry.`):await ygr({version:o,packageName:ce,generatorInvocation:i,context:n}));let Ee=Sg({workspace:r,generationLanguage:i.language,keywords:i.keywords,smartCasing:i.smartCasing,exampleGeneration:{disabled:i.disableExamples,skipAutogenerationIfManualExamplesExist:!0,skipErrorAutogenerationIfManualErrorExamplesExist:!1},audiences:s,readme:A,packageName:ce,version:xe,context:n,sourceResolver:new xh(n,r),dynamicGeneratorConfig:pe,generationMetadata:{cliVersion:r.cliVersion,generatorName:i.name,generatorVersion:i.version,generatorConfig:i.config,originGitCommit:OY(),originGitCommitIsDirty:BY(),invokedBy:SY(),requestedVersion:o,ciProvider:TY()}}),De=vf({token:c.value});if(!oe){let ye=await De.organization.get({orgId:e.organization});ye.ok&&(ye.body.isWhitelabled&&(Ee.readmeConfig==null&&(Ee.readmeConfig=Zjh),Ee.readmeConfig.whiteLabel=!0),Ee.selfHosted=ye.body.selfHostedSdKs)}let Ke=r.getSources(),ct,Ct,at=ST({ir:Ee,snippetsConfig:{typescriptSdk:void 0,pythonSdk:void 0,javaSdk:void 0,rubySdk:void 0,goSdk:void 0,csharpSdk:void 0,phpSdk:void 0,swiftSdk:void 0,rustSdk:void 0},context:n});try{let ye=await ae.api.register.registerApiDefinition({orgId:cn.OrgId(t),apiId:cn.ApiId(Lr(Ee.apiName)),definition:at,sources:Ke.length>0?Xjh(Ke):void 0});ct=ye.apiDefinitionId,Ct=ye.sources??void 0}catch(ye){new F7t(n,Ke).sourceTypes.has("protobuf")&&n.failAndThrow(`Failed to register API definition: ${JSON.stringify(ye)}`)}let Ut=new F7t(n,Ke);if(Ct==null&&Ut.sourceTypes.has("protobuf")&&n.failAndThrow("Did not successfully upload Protobuf source files.",void 0,{code:B.Code.NetworkError}),Ct!=null){n.logger.debug("Uploading source files ...");let ye=await Ut.uploadSources(Ct);n.logger.debug("Setting IR source configuration ..."),Ee.sourceConfig=ye}if(v){if(n.logger.info("Dynamic IR only mode: skipping SDK generation and uploading dynamic IR only"),o==null){n.failAndThrow("Version is required for dynamic IR only mode",void 0,{code:B.Code.ConfigError});return}if(i.language==null){n.failAndThrow("Language is required for dynamic IR only mode",void 0,{code:B.Code.ConfigError});return}if(ce==null){n.failAndThrow("Package name is required for dynamic IR only mode",void 0,{code:B.Code.ConfigError});return}try{await XFl({fdr:ae,organization:t,version:o,language:i.language,packageName:ce,ir:Ee,smartCasing:i.smartCasing,dynamicGeneratorConfig:pe,context:n})}catch(ye){n.failAndThrow(`Failed to upload dynamic IR: ${zn(ye)}`,void 0,{code:B.Code.NetworkError})}return{createdSnippets:!1,snippetsS3PreSignedReadUrl:void 0,actualVersion:o,pullRequestUrl:void 0,noChangesDetected:void 0,publishTarget:void 0}}let tr=await RTl({projectConfig:e,workspace:r,organization:t,generatorInvocation:se,context:n,version:xe,intermediateRepresentation:{...Ee,fdrApiDefinitionId:ct,publishConfig:Yjh({generatorInvocation:se})},shouldLogS3Url:a,token:c,whitelabel:u!=null?Fe(u):void 0,replay:l,irVersionOverride:p,absolutePathToPreview:d,fiddlePreview:m,pushPreviewBranch:g,fernignorePath:y,skipFernignore:E,retryRateLimited:I,automationMode:w,autoMerge:T,skipIfNoDiff:P,verify:O,loginCommand:J,specsTarGzBuffer:Z});n.logger.debug(`Job ID: ${tr.jobId}`);let Ae=tr.taskIds[0];if(Ae==null){n.failAndThrow("Did not receive a task ID.",void 0,{code:B.Code.NetworkError});return}n.logger.debug(`Task ID: ${Ae}`);let me=new Jui({job:tr,taskId:Ae,generatorInvocation:i,interactiveTaskContext:n,absolutePathToPreview:d,telemetryContext:{cliVersion:r.cliVersion,orgId:e.organization,automationMode:w===!0,autoMerge:T===!0,skipIfNoDiff:P===!0,versionArg:o==null?"none":(0,ZFl.isAutoVersion)(o)?"auto":"explicit",versionBump:void 0,replayConfigEnabled:l?.enabled===!0,noReplayFlag:M===!0,disableTelemetry:K===!0}}),Qe=await kTl({job:tr,taskHandler:me,taskId:Ae,context:n});if(Qe!=null&&Qe.actualVersion==null){let ye=$jh(xe);ye!=null&&(Qe={...Qe,actualVersion:ye})}let it=Qe?.actualVersion??xe;if(Qe!=null&&it!=null&&i.language!=null&&ce!=null&&!Te)try{await XFl({fdr:ae,organization:t,version:it,language:i.language,packageName:ce,ir:Ee,smartCasing:i.smartCasing,dynamicGeneratorConfig:pe,context:n})}catch(ye){n.logger.warn(`Failed to upload dynamic IR for SDK generation: ${zn(ye)}`)}return Qe}function Yjh({generatorInvocation:e}){return e.outputMode._visit({downloadFiles:()=>{},github:()=>{},githubV2:()=>{},publish:()=>{},publishV2:t=>t._visit({mavenOverride:()=>{},pypiOverride:()=>{},nugetOverride:()=>{},npmOverride:()=>{},rubyGemsOverride:()=>{},cratesOverride:()=>{},postman:r=>{let n;return e.raw?.output?.location==="postman"&&(n=e.raw.output?.["collection-id"]),rr.PublishingConfig.direct({target:rr.PublishTarget.postman({apiKey:r.apiKey,workspaceId:r.workspaceId,collectionId:n})})},_other:()=>{}}),_other:()=>{}})}function Xjh(e){return Object.fromEntries(Object.values(e).map(t=>[t.id,{type:t.type==="protobuf"?"proto":t.type}]))}var Zjh={defaultEndpoint:void 0,bannerLink:void 0,introduction:void 0,apiReferenceLink:void 0,apiName:void 0,disabledFeatures:void 0,whiteLabel:void 0,customSections:void 0,features:void 0,exampleStyle:void 0};async function XFl({fdr:e,organization:t,version:r,language:n,packageName:i,ir:o,smartCasing:s,dynamicGeneratorConfig:a,context:c}){c.logger.debug(`Uploading dynamic IR for ${n} SDK...`);let u;try{u=await e.api.register.getSdkDynamicIrUploadUrls({orgId:cn.OrgId(t),version:r,snippetConfiguration:{[n]:i}})}catch(f){c.logger.warn(`Failed to get dynamic IR upload URLs (non-fatal, dynamic snippets may be stale): ${f}`);return}let l=u.uploadUrls[n]?.uploadUrl;if(l==null){c.logger.warn(`No upload URL returned for ${n}`);return}let p=qze({ir:o,disableExamples:!0,smartCasing:s,generationLanguage:n,generatorConfig:a}),d=JSON.stringify(p);try{let f=await fetch(l,{method:"PUT",body:d,headers:{"Content-Type":"application/octet-stream","Content-Length":d.length.toString()}});f.ok?c.logger.debug(`Uploaded dynamic IR for ${n}:${i} (${r})`):c.logger.warn(`Failed to upload dynamic IR for ${n}: ${f.status}`)}catch(f){c.logger.warn(`Network error uploading dynamic IR for ${n}: ${f}`)}}function $jh(e){if(e!=null&&e.toUpperCase()!=="AUTO")return e}async function IDe({projectConfig:e,organization:t,workspace:r,context:n,generatorGroup:i,version:o,shouldLogS3Url:s,token:a,whitelabel:c,replay:u,absolutePathToPreview:l,isPreview:p,fiddlePreview:d,pushPreviewBranch:f,mode:m,fernignorePath:g,skipFernignore:A,dynamicIrOnly:y,validateWorkspace:E,retryRateLimited:v,requireEnvVars:I,automationMode:C,autoMerge:w,skipIfNoDiff:T,verify:P,noReplay:O,disableTelemetry:M,automation:K,occurrenceTracker:J,loginCommand:Z,getSpecsTarGzBuffer:ae}){if(i.generators.length===0)return n.logger.warn("No generators specified."),null;let le=[],oe=J??new kUe;J==null&&oe.recordOccurrences(i.generators);let ce=r.generatorsConfiguration?.absolutePathToConfiguration,Te=await Promise.all(i.generators.map(Fe=>n.runInteractiveTask({name:Fe.name},se=>eQh({generatorInvocation:Fe,interactiveTaskContext:se,projectConfig:e,organization:t,workspace:r,context:n,generatorGroup:i,version:o,shouldLogS3Url:s,token:a,whitelabel:c,replay:u,absolutePathToPreview:l,isPreview:p,fiddlePreview:d,pushPreviewBranch:f,mode:m,fernignorePath:g,skipFernignore:A,dynamicIrOnly:y,validateWorkspace:E,retryRateLimited:v,requireEnvVars:I,automationMode:C,autoMerge:w,skipIfNoDiff:T,verify:P,noReplay:O,disableTelemetry:M,automation:K,generatorsYmlAbsolutePath:ce,occurrenceTracker:oe,loginCommand:Z,getSpecsTarGzBuffer:ae,onSnippetsProduced:pe=>le.push(pe)}))));if(K==null&&Te.some(Fe=>!Fe))throw new _c;return{snippetsProducedBy:le}}async function eQh({generatorInvocation:e,interactiveTaskContext:t,projectConfig:r,organization:n,workspace:i,context:o,generatorGroup:s,version:a,shouldLogS3Url:c,token:u,whitelabel:l,replay:p,absolutePathToPreview:d,isPreview:f,fiddlePreview:m,pushPreviewBranch:g,mode:A,fernignorePath:y,skipFernignore:E,dynamicIrOnly:v,validateWorkspace:I,retryRateLimited:C,requireEnvVars:w,automationMode:T,autoMerge:P,skipIfNoDiff:O,verify:M,noReplay:K,disableTelemetry:J,automation:Z,generatorsYmlAbsolutePath:ae,occurrenceTracker:le,loginCommand:oe,getSpecsTarGzBuffer:ce,onSnippetsProduced:Te}){let Fe=Date.now();try{let se=lXe(e),pe=await i.toFernWorkspace({context:o},se,e.apiOverride?.specs);I&&await yK({workspace:pe,context:o,logWarnings:!1,ossWorkspace:i instanceof yp?i:void 0});let xe=E?void 0:y??await bTl({generatorInvocation:e,context:t}),Ee=await $Fl({projectConfig:r,organization:n,workspace:pe,interactiveTaskContext:t,generatorInvocation:{...e,outputMode:e.outputMode._visit({downloadFiles:()=>e.outputMode,github:De=>Vr.OutputMode.github({...De,makePr:A==="pull-request"}),githubV2:De=>A==="pull-request"?Vr.OutputMode.githubV2(Vr.GithubOutputModeV2.pullRequest(De)):e.outputMode,publish:()=>e.outputMode,publishV2:()=>e.outputMode,_other:()=>e.outputMode})},version:a,audiences:s.audiences,shouldLogS3Url:c,token:u,whitelabel:l,replay:p,readme:e.readme,irVersionOverride:e.irVersionOverride,absolutePathToPreview:d,isPreview:f,fiddlePreview:m,pushPreviewBranch:g,fernignorePath:xe,skipFernignore:E,dynamicIrOnly:v,retryRateLimited:C,requireEnvVars:w,automationMode:T,autoMerge:P,skipIfNoDiff:O,verify:M,noReplay:K,disableTelemetry:J,loginCommand:oe,specsTarGzBuffer:await ce?.(e.name)});if(Ee?.createdSnippets&&(Te(e),e.absolutePathToLocalSnippets!=null&&Ee.snippetsS3PreSignedReadUrl!=null&&await yTl({snippetsS3PreSignedReadUrl:Ee.snippetsS3PreSignedReadUrl,absolutePathToLocalSnippetJSON:e.absolutePathToLocalSnippets,context:t})),Z!=null){let De=ae!=null?await jUe(ae,e.name,le.lookup(e)):void 0;Z.recorder.recordSuccess({apiName:i.workspaceName,groupName:s.groupName,generatorName:e.name,version:Ee?.actualVersion??null,durationMs:Date.now()-Fe,pullRequestUrl:Ee?.pullRequestUrl,noChangesDetected:Ee?.noChangesDetected,publishTarget:Ee?.publishTarget,outputRepoUrl:NUe(e),generatorsYmlAbsolutePath:ae,generatorsYmlLineNumber:De})}}catch(se){if(Z==null)throw se;if(se instanceof _c){let Ee=ae!=null?await jUe(ae,e.name,le.lookup(e)):void 0;throw Z.recorder.recordFailure({apiName:i.workspaceName,groupName:s.groupName,generatorName:e.name,errorMessage:t.getLastFailureMessage()??"Generator failed",durationMs:Date.now()-Fe,outputRepoUrl:NUe(e),generatorsYmlAbsolutePath:ae,generatorsYmlLineNumber:Ee}),se}let pe=zn(se),xe=ae!=null?await jUe(ae,e.name,le.lookup(e)):void 0;Z.recorder.recordFailure({apiName:i.workspaceName,groupName:s.groupName,generatorName:e.name,errorMessage:pe,durationMs:Date.now()-Fe,outputRepoUrl:NUe(e),generatorsYmlAbsolutePath:ae,generatorsYmlLineNumber:xe}),t.failWithoutThrowing(pe,se,{code:iAe(se)})}}Dt();jt();jt();var $ui="https://",nls="http://";function tkl(e){return e.startsWith($ui)?e.slice($ui.length):e.startsWith(nls)?e.slice(nls.length):e}function ekl(e){try{let t=e.startsWith($ui)||e.startsWith(nls)?e:`${$ui}${e}`;return tQh(new URL(t).pathname)}catch{return"/"}}function tQh(e){return e===""||e==="/"?"/":e.endsWith("/")?e.slice(0,-1):e}function rkl(e,t,r){let n=ekl(e);for(let i of t){let o=ekl(i);n!==o&&r.failAndThrow(`Basepath mismatch between Fern url and custom-domain. When basepath-aware mode is enabled (via 'multi-source: true' or the deprecated 'experimental.basepath-aware: true'), the instance 'url' and 'custom-domain' must share the same basepath, otherwise docs will fail to resolve after DNS cutover. Instance url '${e}' has basepath '${n}' but custom-domain '${i}' has basepath '${o}'.`,void 0,{code:B.Code.ConfigError})}}Kk();Va();nm();Dt();CC();zm();CC();Zt();Kl();tc();om();Tde();jt();xW();bn();var dLl=require("crypto"),oWt=require("fs/promises");Vi();var iWt=be(jEe(),1),nds=require("path");var rQh=new Set(["legacy","ledger"]);function nkl(){if(process.env.FERN_SELF_HOSTED==="true")return"legacy";let e=process.env.FERN_DOCS_DEPLOY_MODE?.toLowerCase().trim();return e==null||e===""?"legacy":nQh(e)?e:(console.warn(`[fern] Unrecognized FERN_DOCS_DEPLOY_MODE="${e}" \u2014 falling back to "legacy". Valid values: legacy, ledger.`),"legacy")}function nQh(e){return rQh.has(e)}Dt();var _kl=be(Vkl(),1);Vi();var qkl=require("util"),qzh=(0,qkl.promisify)(_kl.default);async function Gkl(e,t,r){let n=uBt(e,t),i=[];for(let o of n){let s=await Promise.all(o.map(async a=>{try{let c=await qzh(a);return c==null||c.height==null||c.width==null?void 0:{filePath:a,width:c.width,height:c.height,blurDataUrl:void 0}}catch(c){r.logger.error(`Failed to measure image size for ${a}. ${c?.message}`);return}}));i.push(...s.filter(Oa))}return new Map(i.map(o=>[o.filePath,o]))}Dt();function Wkl(e,t){if(e.startsWith("https://")||e.startsWith("http://"))return e;switch(t){case"github":return`https://github.com/${e}`;case"gitlab":return`https://gitlab.com/${e}`;case"bitbucket":return`https://bitbucket.org/${e}`;default:Ie(t)}}CC();zm();Tde();var Z6l=require("crypto"),$6l=require("fs/promises"),eLl=be(jEe(),1);Dt();function JIt(e,t){if(e==null)return;let r=t?.get(e);return r??e}function Gzh(e,t,r){let n=JIt(e,r);if(n==null)return;let i=t?.[n];if(!(i?.width==null||i?.height==null))return{path:n,width:i.width,height:i.height}}function j7t(e,t){if(e==null)return;if(e.type==="url")return{type:"url",value:e.value};let r=JIt(e.value,t);if(r!=null)return{type:"path",value:r}}function Cls(e,t,r){let n=e.background!=null?{type:"solid",...e.background}:void 0,i=JIt(e.backgroundImage,r);return{logo:Gzh(e.logo,t,r),backgroundImage:i,accentPrimary:e.accentPrimary,background:n,border:e.border,sidebarBackground:e.sidebarBackground,headerBackground:e.headerBackground,cardBackground:e.cardBackground}}function Wzh(e,t,r){if(e!=null)switch(e.type){case"dark":case"light":return{type:e.type,...Cls(e,t,r)};case"darkAndLight":return{type:"darkAndLight",dark:Cls(e.dark,t,r),light:Cls(e.light,t,r)};default:Ie(e)}}function Hzh(e,t){if(e==null)return;let{"og:image":r,"og:logo":n,"twitter:image":i,"og:background-image":o,"og:dynamic:background-image":s,...a}=e;return{...a,"og:image":j7t(r,t)??void 0,"og:logo":j7t(n,t)??void 0,"twitter:image":j7t(i,t)??void 0,"og:background-image":j7t(o,t)??void 0,"og:dynamic:background-image":j7t(s,t)??void 0}}function Kzh(e,t){if(e==null)return;let r=[];for(let n of e.files){let i=JIt(n.fileId,t);i!=null&&r.push({path:i,strategy:n.strategy})}return{remote:e.remote?.map(n=>({url:n.url,strategy:n.strategy})),files:r,inline:e.inline}}function Jzh(e,t){if(e==null)return;let r=n=>{if(n!=null)return{type:"custom",name:n.name,variants:n.variants.map(i=>({fontFile:JIt(i.fontFile,t)??i.fontFile,weight:i.weight,style:i.style})),display:n.display,fallback:n.fallback,fontVariationSettings:n.fontVariationSettings}};return{headingsFont:r(e.headingsFont),bodyFont:r(e.bodyFont),codeFont:r(e.codeFont)}}function Yzh(e){if(e!=null)return{pageDirective:e.pageDirective,pageDescriptionSource:e.pageDescriptionSource,siteDescription:e.siteDescription}}function Xzh(e){if(e!=null)return{intercom:e.intercom}}function Hkl({docsConfig:e,fileManifest:t,fileIdToPath:r,editThisPage:n}){return{title:e.title,defaultLanguage:e.defaultLanguage,translations:e.translations,announcement:e.announcement,navbarLinks:e.navbarLinks,footerLinks:e.footerLinks,logoHeight:e.logoHeight,logoHref:e.logoHref,logoRightText:e.logoRightText,favicon:JIt(e.favicon,r),agents:Yzh(e.agents),metadata:Hzh(e.metadata,r),redirects:e.redirects,colorsV3:Wzh(e.colorsV3,t,r),layout:e.layout,theme:e.theme,settings:e.settings,typographyV2:Jzh(e.typographyV2,r),analyticsConfig:e.analyticsConfig,css:e.css,js:Kzh(e.js,r),aiChatConfig:e.aiChatConfig,pageActions:e.pageActions,editThisPageLaunch:e.editThisPageLaunch,editThisPageGithub:n?.github!=null?{owner:n.github.owner,repo:n.github.repo,branch:n.github.branch??"main",host:n.github.host??"https://github.com"}:void 0,integrations:Xzh(e.integrations),header:e.header,footer:e.footer}}async function YIt(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 S4h=10,T4h=4,eds=3,O4h=1e3;function tLl(e){return(0,Z6l.createHash)("sha256").update(e).digest("hex")}var rLl=/file:([^\s"'<>)}\]]+)/g;function B4h(e){let t=new Set;for(let r of e.matchAll(rLl)){let n=r[1];n!=null&&t.add(n)}return[...t]}function P4h(e,t){return t==null||t.size===0?e:e.replace(rLl,(r,n)=>`file:${t.get(n)??n}`)}function D4h(e){return JSON.stringify(e,(t,r)=>r!=null&&typeof r=="object"&&!Array.isArray(r)?Object.fromEntries(Object.entries(r).sort(([n],[i])=>n<i?-1:n>i?1:0)):r)}function Y6l(e){let t=Buffer.from(D4h(e),"utf-8"),r=tLl(t);return{ref:{hash:r,contentType:"application/json",contentLength:t.length},hash:r,buf:t}}function cpi({docsDefinition:e,git:t,apiDefinitions:r,fileManifest:n,fileIdToPath:i,editThisPage:o,locale:s="en"}){let a=new Map,c={};for(let[f,m]of Object.entries(e.pages)){if(m==null)continue;let g=P4h(m.markdown,i),A=Buffer.from(g,"utf-8"),y=tLl(A),E=B4h(g);c[f]={hash:y,contentType:"text/markdown",contentLength:A.length,...E.length>0?{referencedFiles:E}:{}},a.set(y,A)}let u=Hkl({docsConfig:e.config,fileManifest:n,fileIdToPath:i,editThisPage:o}),l=null;if(r.size>0){let f=Object.fromEntries(r),m=Y6l(f);a.set(m.hash,m.buf),l=m.ref}let p=null;if(e.jsFiles!=null&&Object.keys(e.jsFiles).length>0){let f=Y6l(e.jsFiles);a.set(f.hash,f.buf),p=f.ref}return{localeEntry:{root:e.config.root??e.config.navigation,pages:c,config:u,apiManifest:l,jsFiles:p,fileManifest:n,redirects:null,locale:s,git:t},blobs:a}}async function nLl({docsDefinition:e,organization:t,domain:r,basepath:n,previewId:i,customDomains:o,git:s,token:a,fdrOrigin:c,headers:u,context:l,apiDefinitions:p,fileManifest:d,filePaths:f,fileIdToPath:m,editThisPage:g,resolver:A}){let{localeEntry:y,blobs:E}=cpi({docsDefinition:e,git:s,apiDefinitions:p,fileManifest:d,fileIdToPath:m,editThisPage:g}),v=await rds({docsDefinition:e,git:s,apiDefinitions:p,fileManifest:d,fileIdToPath:m,editThisPage:g,resolver:A,context:l});for(let ae of v)for(let[le,oe]of ae.blobs)E.set(le,oe);let{createDocsLedgerClient:I}=await Promise.resolve().then(()=>(Zfs(),H6l)),C=I({baseUrl:c,token:a,headers:u}),w=[y,...v.map(ae=>ae.localeEntry)],T={orgId:t,domain:r,basepath:n??"",customDomains:o??[],previewId:i??null,defaultLocale:y.locale,locales:w};l.logger.debug("[ledger] Registering deployment...");let P=performance.now(),O=await C.register(T),M=performance.now()-P;l.logger.debug(`[ledger] Registered in ${M.toFixed(0)}ms \u2014 hash=${O.deploymentHash}, missing=${O.missingContent.length} blobs`),await tds(O.missingContent,E,l,f),l.logger.debug("[ledger] Finishing deployment...");let K=performance.now(),J=await C.finish(T),Z=performance.now()-K;if(l.logger.debug(`[ledger] Finished in ${Z.toFixed(0)}ms \u2014 deploymentId=${J.deploymentId}, reused=${J.reusedDeployment}`),J.translationsProcessed!=null)for(let ae of J.translationsProcessed)l.logger.info(`[ledger] Locale "${ae.locale}": ${ae.segmentsAdded} segment(s) added`);return J}async function tds(e,t,r,n){if(e.length>0){r.logger.debug(`[ledger] Uploading ${e.length} missing blobs...`);let i=performance.now(),o=await YIt(S4h,[...e],async({hash:u,uploadUrl:l})=>{let p=t.get(u),d="application/octet-stream";if(p==null&&n!=null){let f=n.get(u);if(f!=null){p=await(0,$6l.readFile)(f);let m=eLl.lookup(f);m!==!1&&(d=m)}}return p==null?(r.logger.warn(`[ledger] Server requested blob ${u} but we don't have it \u2014 skipping`),"skipped"):R4h(p,l,u,d,r)}),s=o.filter(u=>u==="uploaded").length,a=o.filter(u=>u==="already_exists").length,c=performance.now()-i;r.logger.debug(`[ledger] Upload complete in ${c.toFixed(0)}ms \u2014 ${s} uploaded, ${a} already in store`)}else r.logger.debug("[ledger] All content already in CAS \u2014 no uploads needed")}async function R4h(e,t,r,n,i){let o=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);for(let s=0;s<=eds;s++){let a=await fetch(t,{method:"PUT",headers:{"Content-Type":n},body:o});if(a.ok)return"uploaded";if(a.status===412)return i.logger.debug(`[ledger] Blob ${r} already exists in store \u2014 skipping`),"already_exists";if(a.status===403){let l=await a.text();throw new Error(`[ledger] Presigned URL rejected for ${r} (expired or signature mismatch): ${l}`)}if(a.status===400){let l=await a.text();throw new Error(`[ledger] Content integrity check failed for ${r}: ${l}`)}if((a.status===429||a.status>=500)&&s<eds){let l=O4h*2**s;i.logger.debug(`[ledger] Upload ${r} got ${a.status}, retrying in ${l}ms (attempt ${s+1}/${eds})`),await new Promise(p=>setTimeout(p,l));continue}let u=await a.text();throw new Error(`[ledger] S3 upload failed for ${r}: ${a.status} ${u}`)}throw new Error(`[ledger] Upload exhausted retries for ${r}`)}function X6l(e,t,r){try{let n=Vle(e,cn.ApiDefinitionId(t),new _le({snippetsConfigWithSdkId:{},snippetsBySdkId:{},snippetTemplatesByEndpoint:{},snippetTemplatesByEndpointId:{},snippetsBySdkIdAndEndpointId:{}}));return qle(n)}catch(n){r.logger.debug(`[ledger] Failed to convert API definition "${t}" to read form: ${String(n)}`);return}}function F4h({baseApiDefinitions:e,translatedSpecs:t,context:r}){let n=new Map(e);for(let[i,o]of t)try{let s=ST({ir:o.ir,snippetsConfig:o.snippetsConfig,playgroundConfig:o.playgroundConfig,graphqlOperations:o.graphqlOperations,graphqlTypes:o.graphqlTypes,context:r,apiNameOverride:o.apiName});n.set(i,s)}catch(s){r.logger.warn(`[ledger] Failed to convert translated API definition for API "${i}": ${String(s)}. Falling back to base (untranslated) API.`)}return n}async function rds({docsDefinition:e,git:t,apiDefinitions:r,fileManifest:n,fileIdToPath:i,editThisPage:o,resolver:s,context:a}){if(s==null)return[];let c=s.getTranslationPages(),u=s.getTranslationNavigationOverlays();if(c==null||Object.keys(c).length===0)return[];let l=s.getTranslatedApiSpecs(),p={};if(l.size>0)for(let[m,g]of r){let A=X6l(g,m,a);A!=null&&(p[m]=A)}let d=Object.entries(c);a.logger.info(`[ledger] Building ${d.length} translation locale(s)...`);let{buildTranslatedDocsDefinition:f}=await Promise.resolve().then(()=>(J6l(),K6l));return YIt(T4h,d,async([m,g])=>{let A=await f({docsDefinition:e,locale:m,localePages:g,translationNavigationOverlays:u,resolver:s,context:a}),y=l.get(m),E=r;if(y!=null&&y.size>0&&(E=F4h({baseApiDefinitions:r,translatedSpecs:y,context:a}),A.config.root!=null)){let C={};for(let[w]of y){let T=E.get(w);if(T!=null){let P=X6l(T,w,a);P!=null&&(C[w]=P)}}Object.keys(C).length>0&&(A.config.root=F3e(A.config.root,p,C))}let{localeEntry:v,blobs:I}=cpi({docsDefinition:A,git:t,apiDefinitions:E,fileManifest:n,fileIdToPath:i,editThisPage:o,locale:m});return{locale:m,localePages:g,translatedDefinition:A,localeEntry:v,blobs:I}})}Zfs();async function iLl({docsDefinition:e,organization:t,basePath:r,previewId:n,git:i,token:o,fdrOrigin:s,headers:a,context:c,apiDefinitions:u,fileManifest:l,filePaths:p,fileIdToPath:d,editThisPage:f,resolver:m}){let{localeEntry:g,blobs:A}=cpi({docsDefinition:e,git:i,apiDefinitions:u,fileManifest:l,fileIdToPath:d,editThisPage:f}),y=await rds({docsDefinition:e,git:i,apiDefinitions:u,fileManifest:l,fileIdToPath:d,editThisPage:f,resolver:m,context:c});for(let K of y)for(let[J,Z]of K.blobs)A.set(J,Z);let E=[g,...y.map(K=>K.localeEntry)],v=api({baseUrl:s,token:o,headers:a});c.logger.debug("[ledger-preview] Registering preview deployment...");let I=performance.now(),C={orgId:t,previewId:n??null,basePath:r??"",defaultLocale:g.locale,locales:E,root:g.root,pages:g.pages,apiManifest:g.apiManifest,config:g.config,fileManifest:g.fileManifest,jsFiles:g.jsFiles,redirects:g.redirects,locale:g.locale,version:g.version,repo:g.repo,git:i},w=await v.previewRegister(C),T=performance.now()-I;c.logger.debug(`[ledger-preview] Registered in ${T.toFixed(0)}ms \u2014 hash=${w.deploymentHash}, preview=${w.previewUrl}, missing=${w.missingContent.length} blobs`),await tds(w.missingContent,A,c,p),c.logger.debug("[ledger-preview] Finishing preview deployment...");let P=performance.now(),O=await v.finish({orgId:t,domain:w.domain,basepath:w.basepath,customDomains:[],previewId:w.previewId,defaultLocale:g.locale,locales:E}),M=performance.now()-P;if(c.logger.debug(`[ledger-preview] Finished in ${M.toFixed(0)}ms \u2014 deploymentId=${O.deploymentId}, reused=${O.reusedDeployment}`),O.translationsProcessed!=null)for(let K of O.translationsProcessed)c.logger.info(`[ledger-preview] Locale "${K.locale}": ${K.segmentsAdded} segment(s) added`);return{previewUrl:w.previewUrl,deploymentId:O.deploymentId}}async function oLl({fn:e,maxRetries:t,baseDelayMs:r,jitterFactor:n=0,isRetryable:i=()=>!0,logger:o,label:s,delayFn:a=c=>new Promise(u=>setTimeout(u,c))}){let c;for(let u=0;u<=t;u++)try{return await e()}catch(l){if(c=l,!i(l)||u>=t)throw l;let p=n>0?1+(Math.random()-.5)*n:1,d=Math.round(r*2**u*p);s!=null&&o.warn(`${s} (attempt ${u+1}/${t+1}), retrying in ${d}ms...`),await a(d)}throw c}var k4h=10,sLl=10,upi=parseInt(process.env.FERN_DOCS_ASSET_HASH_CONCURRENCY??"32",10),N4h=3,j4h=1e3,Q4h=.5;function aLl(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}var lvt=class extends Error{constructor(){super("Another docs publish is currently in progress for this domain."),this.name="DocsPublishConflictError"}};async function cLl({fdrOrigin:e,token:t,domain:r,basepath:n}){try{await fy.post(`${e}/docs-deployment/unlock`,{domain:r,basepath:n},{headers:{Authorization:`Bearer ${t}`}})}catch{}}function z4h(e){return e.replace(/\.\.\//g,"_dot_dot_/")}async function uLl(e){let t=await(0,oWt.readFile)(e),r=(0,dLl.createHash)("sha256").update(new Uint8Array(t)).digest("hex");return{buffer:t,hash:r}}async function mLl({token:e,organization:t,docsWorkspace:r,domain:n,customDomains:i,apiWorkspaces:o,ossWorkspaces:s,context:a,preview:c,previewId:u,editThisPage:l,disableTemplates:p=!1,skipUpload:d=!1,withAiExamples:f=!0,excludeApis:m=!1,targetAudiences:g,docsUrl:A,cliVersion:y,ciSource:E,deployerAuthor:v,loginCommand:I="fern login",multiSource:C=!1}){let w=process.env.FERN_FDR_ORIGIN??process.env.OVERRIDE_FDR_ORIGIN??"https://registry.buildwithfern.com"??"https://registry.buildwithfern.com";await PLt(`${w}/health`,a.logger)&&a.logger.debug("Detected air-gapped environment - skipping external FDR service calls");let P={};y!=null&&(P["X-CLI-Version"]=y),E!=null&&(P["X-CI-Source"]=JSON.stringify(E),a.logger.debug(`CI source detected: ${E.type} (${E.repo??"unknown repo"})`)),v?.username!=null&&(P["X-Deployer-Author"]=v.username),v?.email!=null&&(P["X-Deployer-Author-Email"]=v.email);let O=Fk({token:e.value,...Object.keys(P).length>0&&{headers:P}}),M={type:"public"},K=nkl();K!=="legacy"&&a.logger.info(`Docs deploy mode: ${K}`),m&&a.logger.debug("Experimental flag 'exclude-apis' is enabled - API references will be excluded from S3 upload");let J,Z=i[0]??n,ae=W4h(n),le=r.config.experimental&&r.config.experimental.dynamicSnippets===!1;r.config.experimental?.basepathAware===!0&&a.logger.warn("experimental.basepath-aware is deprecated. Use 'multi-source: true' on the instance instead.");let oe=C||r.config.experimental?.basepathAware===!0;oe&&a.logger.debug("Basepath-aware mode is enabled - using basepath-aware S3 key format");let ce=!1,Te=()=>{ce&&!c&&(ce=!1,a.logger.debug("Unlocking docs deploy due to early exit..."),cLl({fdrOrigin:w,token:e.value,domain:n,basepath:ae}))},Fe=async()=>{ce&&!c&&(ce=!1,a.logger.debug("Unlocking docs deploy due to signal..."),await cLl({fdrOrigin:w,token:e.value,domain:n,basepath:ae})),process.exit(1)};process.on("SIGINT",Fe),process.on("SIGTERM",Fe);try{let se=await s8t({docsWorkspace:r,organization:t,fdrOrigin:w,token:e.value,taskContext:a}),pe=r.config.translations!=null&&r.config.translations.length>1,xe=new Map,Ee={},De=new Map,Ke=new Map,ct=new Map,Ct=(Mt,dr)=>{if(pe)try{let qe=Vle(Mt,cn.ApiDefinitionId(dr),new _le({snippetsConfigWithSdkId:{},snippetsBySdkId:{},snippetTemplatesByEndpoint:{},snippetTemplatesByEndpointId:{},snippetsBySdkIdAndEndpointId:{}}));ct.set(dr,qle(qe))}catch(qe){a.logger.debug(`Failed to build read API definition for ${dr} (translated sidebar titles may stay in the default language): ${String(qe)}`)}},at=async({ir:Mt,snippetsConfig:dr,playgroundConfig:qe,apiName:Me,workspace:_,graphqlOperations:ve,graphqlTypes:tt})=>{let mt=ST({ir:Mt,snippetsConfig:dr,playgroundConfig:qe,graphqlOperations:ve,graphqlTypes:tt,context:a,apiNameOverride:Me}),xt=e.value==="dummy",Lt=$4h(f&&!xt,r.config.aiExamples?.style??r.config.experimental?.aiExampleStyleInstructions);if(Lt){let Ft=_?.getSources()?.filter(Pt=>Pt.type==="openapi").map(Pt=>({absoluteFilePath:Pt.absoluteFilePath,absoluteFilePathToOverrides:Pt.absoluteFilePathToOverrides}));Ft==null||Ft.length===0?a.logger.debug("Skipping AI example enhancement: no OpenAPI source file paths available"):mt=await yyt(mt,Lt,a,e,t,Ft)}let Pe,Gt=new Set;if(Object.keys(dr).length===0)a.logger.debug("No snippets configuration defined, skipping snippet generation...");else if(!le){let It=await H4h({fdr:O,workspace:_,organization:t,context:a,snippetsConfig:dr});It&&Object.keys(It).length>0&&(Pe=It,Gt=new Set(Object.keys(It)),a.logger.debug(`Using existing SDK dynamic IRs for: ${Object.keys(It).join(", ")}`));let Ft=await Y4h({workspace:_,organization:t,context:a,snippetsConfig:dr,skipLanguages:Gt});Ft&&(Pe={...Pe,...Ft})}let mr=Me??Lr(Mt.apiName),Er;try{Er=await oLl({fn:()=>O.api.register.registerApiDefinition({orgId:cn.OrgId(t),apiId:cn.ApiId(mr),definition:mt,dynamicIRs:Pe}),maxRetries:N4h,baseDelayMs:j4h,jitterFactor:Q4h,isRetryable:eUh,logger:a.logger,label:`registerApiDefinition failed for ${mr}`})}catch(It){let Ft=ALl(It);return a.logger.error(`FDR registerApiDefinition failed. Error details:
|
|
4158
|
+
`):void 0);for(let i of t.logs.slice(this.lengthOfLastLogs))this.context.logger.log(qjh(i.level),i.message),this.#n==null&&(this.#n=zjh(i.message)??this.#n),this.cachedReplayResult==null&&(this.cachedReplayResult=Mjh(i.message));this.lengthOfLastLogs=t.logs.length;let n=i=>{this.context.logger.debug(`Generated files. ${Dme("View here",i,{fallback:(o,s)=>`${o}: ${s}`})}`)};return await t.status._visit({notStarted:ht,running:ht,failed:({message:i,s3PreSignedReadUrl:o})=>{o!=null&&n(o),this.context.failAndThrow(i,void 0,{code:B.Code.ContainerError})},finished:async i=>{if(i.s3PreSignedReadUrlV2!=null){n(i.s3PreSignedReadUrlV2);let o=this.getAbsolutePathToLocalOutput();o!=null&&await Vjh({s3PreSignedReadUrl:i.s3PreSignedReadUrlV2,absolutePathToLocalOutput:o,context:this.context})}if(this.absolutePathToPreview==null)for(let o of r)this.context.logger.info(`Published ${o}`);this.#e=!0,this.#t=i.createdSnippets!=null?i.createdSnippets:!1,this.#r=i.snippetsS3PreSignedReadUrl,this.#o=i.pullRequestUrl,this.#s=i.noChangesDetected,i.actualVersion!=null&&(this.#n=i.actualVersion),this.emitReplayTelemetryIfReady()},_other:()=>{this.context.logger.warn("Received unknown update type: "+t.status.type)}}),this.#e?{createdSnippets:this.#t,snippetsS3PreSignedReadUrl:this.#r,actualVersion:this.#n,pullRequestUrl:this.#o,noChangesDetected:this.#s,publishTarget:this.#i}:void 0}getAbsolutePathToLocalOutput(){return this.absolutePathToPreview!=null?Ge(this.absolutePathToPreview,Se.of($Ue.default.basename(this.generatorInvocation.name))):this.generatorInvocation.absolutePathToLocalOutput}emitReplayTelemetryIfReady(){if(!this.replayEventEmitted&&this.cachedReplayResult!=null&&!this.telemetryContext.disableTelemetry)try{let t={success:!0,steps:{replay:this.cachedReplayResult},warnings:[]},n={...(0,GFl.buildReplayTelemetryProps)({pipelineResult:t,generatorName:this.generatorInvocation.name,generatorVersion:this.generatorInvocation.version,cliVersion:this.telemetryContext.cliVersion,repoUri:Ljh(this.generatorInvocation),automationMode:this.telemetryContext.automationMode,autoMerge:this.telemetryContext.autoMerge,skipIfNoDiff:this.telemetryContext.skipIfNoDiff,hasBreakingChanges:!1,versionArg:this.telemetryContext.versionArg,versionBump:this.telemetryContext.versionBump,replayConfigEnabled:this.telemetryContext.replayConfigEnabled,noReplayFlag:this.telemetryContext.noReplayFlag,githubMode:Ujh(this.generatorInvocation),previewMode:this.absolutePathToPreview!=null,durationMs:Date.now()-this.taskStartedAtMs}),surface:"fiddle",org_id:this.telemetryContext.orgId};this.context.instrumentPostHogEvent({command:"replay",properties:n}),this.context.logger.debug(`[telemetry] replay event sent: ${JSON.stringify(n)}`),this.replayEventEmitted=!0}catch(t){this.context.logger.debug(`[telemetry] failed to send replay event: ${String(t)}`)}}#e=!1;get isFinished(){return this.#e}#t=!1;get createdSnippets(){return this.#t}#r=void 0;get snippetsS3PreSignedReadUrl(){return this.#r}#n=void 0;get actualVersion(){return this.#n}#i=void 0;get publishTarget(){return this.#i}#o=void 0;get pullRequestUrl(){return this.#o}#s=void 0;get noChangesDetected(){return this.#s}},Qjh=/Tagging release (v?\d+\.\d+\.\d+(?:-[\w.-]+)?)/;function zjh(e){let t=e.match(Qjh);if(t?.[1]!=null)return t[1].replace(/^v/,"")}function Mjh(e){let t=e.match(jjh);if(t?.[1]!=null)try{return JSON.parse(t[1])?.steps?.replay}catch{return}}function Ljh(e){let t=e.raw?.github;return t==null?"":"uri"in t&&typeof t.uri=="string"?t.uri:"repository"in t&&typeof t.repository=="string"?t.repository:""}function Ujh(e){let t=e.raw?.github;if(t!=null&&"mode"in t){if(t.mode==="pull-request")return"pull-request";if(t.mode==="commit-and-release")return"commit-and-release"}return"push"}async function Vjh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){try{let n=await Gjh(t),i=await Wjh(t);n&&i?await Hjh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}):n&&!i?await Kjh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}):await _jh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}),r.logger.info(fe.green(`Downloaded to ${t}`))}catch(n){r.failAndThrow("Failed to download files",n,{code:B.Code.NetworkError})}}async function _jh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}){let r=await fy.get(e,{responseType:"stream"}),n=await Xui.default.dir({prefix:"fern",unsafeCleanup:!0}),i=$Ue.default.join(n.path,"output.zip");await(0,rls.pipeline)(r.data,(0,Yui.createWriteStream)(i)),await tls(t),await(0,vM.mkdir)(t,{recursive:!0}),await JFl(i,t)}async function tls(e){await $t(e)&&(await HFl(e),await(0,vM.rm)(e,{recursive:!0,force:!0}))}async function HFl(e){try{let t=await(0,vM.readdir)(e,{withFileTypes:!0});for(let r of t){let n=Vt.of($Ue.default.join(e,r.name));r.isDirectory()&&await HFl(n);try{await(0,vM.chmod)(n,493)}catch{}}await(0,vM.chmod)(e,493)}catch{}}function qjh(e){switch(e){case"DEBUG":return Un.Debug;case"INFO":return Un.Info;case"WARN":return Un.Warn;case"ERROR":return Un.Error;default:return Un.Info}}async function Gjh(e){let t=Ge(e,Se.of(MP));return await $t(t)}async function Wjh(e){let t=Ge(e,Se.of(".git"));return await $t(t)}async function EK(e,t,r){return(await Wc(r.logger,"git",e,{cwd:t,doNotPipeOutput:!0})).stdout}async function Hjh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){let n=Ge(t,Se.of(MP)),i=await Dye({absolutePathToFernignore:n});await EK(["rm","-rf","."],t,r),await KFl({s3PreSignedReadUrl:e,outputPath:t}),await EK(["add","."],t,r),await EK(["reset","--",...i],t,r),await EK(["restore","."],t,r)}async function Kjh({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){let n=Vt.of((await Xui.default.dir({})).path),i=Ge(t,Se.of(MP)),o=await Dye({absolutePathToFernignore:i});await(0,vM.cp)(t,n,{recursive:!0}),await EK(["init"],n,r),await EK(["add","."],n,r),await EK(["-c","user.name=fern","-c","user.email=hey@buildwithfern.com","-c","commit.gpgsign=false","commit","--allow-empty","--no-verify","-m","init"],n,r),await EK(["rm","-rf","."],n,r),await KFl({s3PreSignedReadUrl:e,outputPath:n}),await EK(["add","."],n,r),await EK(["reset","--",...o],n,r),await EK(["restore","."],n,r),await tls(Ge(n,Se.of(".git"))),await tls(t),await(0,vM.cp)(n,t,{recursive:!0})}async function KFl({s3PreSignedReadUrl:e,outputPath:t}){let r=await fy.get(e,{responseType:"stream"}),n=await Xui.default.dir({prefix:"fern",unsafeCleanup:!0}),i=$Ue.default.join(n.path,"output.zip");await(0,rls.pipeline)(r.data,(0,Yui.createWriteStream)(i)),await JFl(i,t)}async function JFl(e,t){return new Promise((r,n)=>{WFl.default.open(e,{lazyEntries:!0},(i,o)=>{if(i||!o){n(i??new Error("Failed to open zip file"));return}o.on("error",n),o.on("end",r),o.on("entry",s=>{let a=$Ue.default.join(t,s.fileName);if(s.fileName.endsWith("/")){(0,vM.mkdir)(a,{recursive:!0}).then(()=>o.readEntry()).catch(n);return}(0,vM.mkdir)($Ue.default.dirname(a),{recursive:!0}).then(()=>{o.openReadStream(s,(c,u)=>{if(c||!u){n(c??new Error("Failed to open read stream"));return}u.pipe((0,Yui.createWriteStream)(a)).on("finish",()=>o.readEntry()).on("error",n)})}).catch(n)}),o.readEntry()})})}Zt();Mn();Ow();jt();var Zui=require("fs/promises"),YFl=be(dI(),1),Jjh="proto.zip",F7t=class{sourceTypes;context;sources;constructor(t,r){this.context=t,this.sources=Object.fromEntries(r.map(n=>[n.id,n])),this.sourceTypes=new Set(Object.values(this.sources).map(n=>n.type))}async uploadSources(t){for(let[r,n]of Object.entries(t)){let i=this.getSourceOrThrow(r);await this.uploadSource(i,n.uploadUrl)}return this.convertFdrSourceUploadsToSourceConfig(t)}async uploadSource(t,r){let n=await this.getUploadCommand(t),i=await(0,Zui.readFile)(n.absoluteFilePath),o;try{o=await fetch(r,{method:"PUT",body:i,headers:{"Content-Type":"application/octet-stream"}})}catch(s){await n.cleanup(),this.context.failAndThrow(`Network error uploading source file: ${t.absoluteFilePath}`,s,{code:B.Code.NetworkError});return}await n.cleanup(),o.ok||this.context.failAndThrow(`Failed to upload source file: ${t.absoluteFilePath}. Status: ${o.status}, ${o.statusText}`,void 0,{code:B.Code.NetworkError})}async getUploadCommand(t){if(t.type==="protobuf"){let r=await this.zipSource(t.absoluteFilePath);return{absoluteFilePath:r,cleanup:async()=>{this.context.logger.debug(`Removing ${r}`),await(0,Zui.unlink)(r)}}}return{absoluteFilePath:t.absoluteFilePath,cleanup:async()=>{}}}async zipSource(t){let r=await YFl.default.dir(),n=Ge(Vt.of(r.path),Se.of(Jjh));return this.context.logger.debug(`Zipping source ${t} into ${n}`),await Wc(this.context.logger,"zip",["-r",n,"."],{cwd:t,doNotPipeOutput:!0}),n}convertFdrSourceUploadsToSourceConfig(t){let r=[];for(let[n,i]of Object.entries(t))switch(this.getSourceOrThrow(n).type){case"protobuf":r.push(mj.proto({id:n,protoRootUrl:i.downloadUrl}));continue;case"openapi":r.push(mj.openapi());continue;case"asyncapi":continue}return{sources:r}}getSourceOrThrow(t){let r=this.sources[t];return r==null&&this.context.failAndThrow(`Internal error; server responded with source id "${t}" which does not exist in the workspace.`,void 0,{code:B.Code.InternalError}),r}};async function $Fl({projectConfig:e,organization:t,workspace:r,interactiveTaskContext:n,generatorInvocation:i,version:o,audiences:s,shouldLogS3Url:a,token:c,whitelabel:u,replay:l,irVersionOverride:p,absolutePathToPreview:d,isPreview:f,fiddlePreview:m,pushPreviewBranch:g,readme:A,fernignorePath:y,skipFernignore:E,dynamicIrOnly:v,retryRateLimited:I,requireEnvVars:C,automationMode:w,autoMerge:T,skipIfNoDiff:P,verify:O,noReplay:M,disableTelemetry:K,loginCommand:J,specsTarGzBuffer:Z}){let ae=Fk({token:c.value}),oe=await PLt("https://registry.buildwithfern.com/health",n.logger),ce=jn.getPackageName({generatorInvocation:i}),Te=f??d!=null,Fe=ye=>XA(ye,{onError:Be=>{!Te&&C&&n.failAndThrow(void 0,Be,{code:B.Code.EnvironmentError})}},{substituteAsEmpty:Te}),se=Fe(i),pe=QUe({apiName:r.definition.rootApiFile.contents.name,organization:t,generatorInvocation:se}),xe=o??await _Dt({packageName:ce,generatorInvocation:i});o!=null&&(Te?n.logger.warn(`Skipping version availability check in preview mode. Version ${o} may already exist on the package registry.`):await ygr({version:o,packageName:ce,generatorInvocation:i,context:n}));let Ee=Sg({workspace:r,generationLanguage:i.language,keywords:i.keywords,smartCasing:i.smartCasing,exampleGeneration:{disabled:i.disableExamples,skipAutogenerationIfManualExamplesExist:!0,skipErrorAutogenerationIfManualErrorExamplesExist:!1},audiences:s,readme:A,packageName:ce,version:xe,context:n,sourceResolver:new xh(n,r),dynamicGeneratorConfig:pe,generationMetadata:{cliVersion:r.cliVersion,generatorName:i.name,generatorVersion:i.version,generatorConfig:i.config,originGitCommit:OY(),originGitCommitIsDirty:BY(),invokedBy:SY(),requestedVersion:o,ciProvider:TY()}}),De=vf({token:c.value});if(!oe){let ye=await De.organization.get({orgId:e.organization});ye.ok&&(ye.body.isWhitelabled&&(Ee.readmeConfig==null&&(Ee.readmeConfig=Zjh),Ee.readmeConfig.whiteLabel=!0),Ee.selfHosted=ye.body.selfHostedSdKs)}let Ke=r.getSources(),ct,Ct,at=ST({ir:Ee,snippetsConfig:{typescriptSdk:void 0,pythonSdk:void 0,javaSdk:void 0,rubySdk:void 0,goSdk:void 0,csharpSdk:void 0,phpSdk:void 0,swiftSdk:void 0,rustSdk:void 0},context:n});try{let ye=await ae.api.register.registerApiDefinition({orgId:cn.OrgId(t),apiId:cn.ApiId(Lr(Ee.apiName)),definition:at,sources:Ke.length>0?Xjh(Ke):void 0});ct=ye.apiDefinitionId,Ct=ye.sources??void 0}catch(ye){new F7t(n,Ke).sourceTypes.has("protobuf")&&n.failAndThrow(`Failed to register API definition: ${JSON.stringify(ye)}`)}let Ut=new F7t(n,Ke);if(Ct==null&&Ut.sourceTypes.has("protobuf")&&n.failAndThrow("Did not successfully upload Protobuf source files.",void 0,{code:B.Code.NetworkError}),Ct!=null){n.logger.debug("Uploading source files ...");let ye=await Ut.uploadSources(Ct);n.logger.debug("Setting IR source configuration ..."),Ee.sourceConfig=ye}if(v){if(n.logger.info("Dynamic IR only mode: skipping SDK generation and uploading dynamic IR only"),o==null){n.failAndThrow("Version is required for dynamic IR only mode",void 0,{code:B.Code.ConfigError});return}if(i.language==null){n.failAndThrow("Language is required for dynamic IR only mode",void 0,{code:B.Code.ConfigError});return}if(ce==null){n.failAndThrow("Package name is required for dynamic IR only mode",void 0,{code:B.Code.ConfigError});return}try{await XFl({fdr:ae,organization:t,version:o,language:i.language,packageName:ce,ir:Ee,smartCasing:i.smartCasing,dynamicGeneratorConfig:pe,context:n})}catch(ye){n.failAndThrow(`Failed to upload dynamic IR: ${zn(ye)}`,void 0,{code:B.Code.NetworkError})}return{createdSnippets:!1,snippetsS3PreSignedReadUrl:void 0,actualVersion:o,pullRequestUrl:void 0,noChangesDetected:void 0,publishTarget:void 0}}let tr=await RTl({projectConfig:e,workspace:r,organization:t,generatorInvocation:se,context:n,version:xe,intermediateRepresentation:{...Ee,fdrApiDefinitionId:ct,publishConfig:Yjh({generatorInvocation:se})},shouldLogS3Url:a,token:c,whitelabel:u!=null?Fe(u):void 0,replay:l,irVersionOverride:p,absolutePathToPreview:d,fiddlePreview:m,pushPreviewBranch:g,fernignorePath:y,skipFernignore:E,retryRateLimited:I,automationMode:w,autoMerge:T,skipIfNoDiff:P,verify:O,loginCommand:J,specsTarGzBuffer:Z});n.logger.debug(`Job ID: ${tr.jobId}`);let Ae=tr.taskIds[0];if(Ae==null){n.failAndThrow("Did not receive a task ID.",void 0,{code:B.Code.NetworkError});return}n.logger.debug(`Task ID: ${Ae}`);let me=new Jui({job:tr,taskId:Ae,generatorInvocation:i,interactiveTaskContext:n,absolutePathToPreview:d,telemetryContext:{cliVersion:r.cliVersion,orgId:e.organization,automationMode:w===!0,autoMerge:T===!0,skipIfNoDiff:P===!0,versionArg:o==null?"none":(0,ZFl.isAutoVersion)(o)?"auto":"explicit",versionBump:void 0,replayConfigEnabled:l?.enabled===!0,noReplayFlag:M===!0,disableTelemetry:K===!0}}),Qe=await kTl({job:tr,taskHandler:me,taskId:Ae,context:n});if(Qe!=null&&Qe.actualVersion==null){let ye=$jh(xe);ye!=null&&(Qe={...Qe,actualVersion:ye})}let it=Qe?.actualVersion??xe;if(Qe!=null&&it!=null&&i.language!=null&&ce!=null&&!Te)try{await XFl({fdr:ae,organization:t,version:it,language:i.language,packageName:ce,ir:Ee,smartCasing:i.smartCasing,dynamicGeneratorConfig:pe,context:n})}catch(ye){n.logger.warn(`Failed to upload dynamic IR for SDK generation: ${zn(ye)}`)}return Qe}function Yjh({generatorInvocation:e}){return e.outputMode._visit({downloadFiles:()=>{},github:()=>{},githubV2:()=>{},publish:()=>{},publishV2:t=>t._visit({mavenOverride:()=>{},pypiOverride:()=>{},nugetOverride:()=>{},npmOverride:()=>{},rubyGemsOverride:()=>{},cratesOverride:()=>{},postman:r=>{let n;return e.raw?.output?.location==="postman"&&(n=e.raw.output?.["collection-id"]),rr.PublishingConfig.direct({target:rr.PublishTarget.postman({apiKey:r.apiKey,workspaceId:r.workspaceId,collectionId:n})})},_other:()=>{}}),_other:()=>{}})}function Xjh(e){return Object.fromEntries(Object.values(e).map(t=>[t.id,{type:t.type==="protobuf"?"proto":t.type}]))}var Zjh={defaultEndpoint:void 0,bannerLink:void 0,introduction:void 0,apiReferenceLink:void 0,apiName:void 0,disabledFeatures:void 0,whiteLabel:void 0,customSections:void 0,features:void 0,exampleStyle:void 0};async function XFl({fdr:e,organization:t,version:r,language:n,packageName:i,ir:o,smartCasing:s,dynamicGeneratorConfig:a,context:c}){c.logger.debug(`Uploading dynamic IR for ${n} SDK...`);let u;try{u=await e.api.register.getSdkDynamicIrUploadUrls({orgId:cn.OrgId(t),version:r,snippetConfiguration:{[n]:i}})}catch(f){c.logger.warn(`Failed to get dynamic IR upload URLs (non-fatal, dynamic snippets may be stale): ${f}`);return}let l=u.uploadUrls[n]?.uploadUrl;if(l==null){c.logger.warn(`No upload URL returned for ${n}`);return}let p=qze({ir:o,disableExamples:!0,smartCasing:s,generationLanguage:n,generatorConfig:a}),d=JSON.stringify(p);try{let f=await fetch(l,{method:"PUT",body:d,headers:{"Content-Type":"application/octet-stream","Content-Length":d.length.toString()}});f.ok?c.logger.debug(`Uploaded dynamic IR for ${n}:${i} (${r})`):c.logger.warn(`Failed to upload dynamic IR for ${n}: ${f.status}`)}catch(f){c.logger.warn(`Network error uploading dynamic IR for ${n}: ${f}`)}}function $jh(e){if(e!=null&&e.toUpperCase()!=="AUTO")return e}async function IDe({projectConfig:e,organization:t,workspace:r,context:n,generatorGroup:i,version:o,shouldLogS3Url:s,token:a,whitelabel:c,replay:u,absolutePathToPreview:l,isPreview:p,fiddlePreview:d,pushPreviewBranch:f,mode:m,fernignorePath:g,skipFernignore:A,dynamicIrOnly:y,validateWorkspace:E,retryRateLimited:v,requireEnvVars:I,automationMode:C,autoMerge:w,skipIfNoDiff:T,verify:P,noReplay:O,disableTelemetry:M,automation:K,occurrenceTracker:J,loginCommand:Z,getSpecsTarGzBuffer:ae}){if(i.generators.length===0)return n.logger.warn("No generators specified."),null;let le=[],oe=J??new kUe;J==null&&oe.recordOccurrences(i.generators);let ce=r.generatorsConfiguration?.absolutePathToConfiguration,Te=await Promise.all(i.generators.map(Fe=>n.runInteractiveTask({name:Fe.name},se=>eQh({generatorInvocation:Fe,interactiveTaskContext:se,projectConfig:e,organization:t,workspace:r,context:n,generatorGroup:i,version:o,shouldLogS3Url:s,token:a,whitelabel:c,replay:u,absolutePathToPreview:l,isPreview:p,fiddlePreview:d,pushPreviewBranch:f,mode:m,fernignorePath:g,skipFernignore:A,dynamicIrOnly:y,validateWorkspace:E,retryRateLimited:v,requireEnvVars:I,automationMode:C,autoMerge:w,skipIfNoDiff:T,verify:P,noReplay:O,disableTelemetry:M,automation:K,generatorsYmlAbsolutePath:ce,occurrenceTracker:oe,loginCommand:Z,getSpecsTarGzBuffer:ae,onSnippetsProduced:pe=>le.push(pe)}))));if(K==null&&Te.some(Fe=>!Fe))throw new _c;return{snippetsProducedBy:le}}async function eQh({generatorInvocation:e,interactiveTaskContext:t,projectConfig:r,organization:n,workspace:i,context:o,generatorGroup:s,version:a,shouldLogS3Url:c,token:u,whitelabel:l,replay:p,absolutePathToPreview:d,isPreview:f,fiddlePreview:m,pushPreviewBranch:g,mode:A,fernignorePath:y,skipFernignore:E,dynamicIrOnly:v,validateWorkspace:I,retryRateLimited:C,requireEnvVars:w,automationMode:T,autoMerge:P,skipIfNoDiff:O,verify:M,noReplay:K,disableTelemetry:J,automation:Z,generatorsYmlAbsolutePath:ae,occurrenceTracker:le,loginCommand:oe,getSpecsTarGzBuffer:ce,onSnippetsProduced:Te}){let Fe=Date.now();try{let se=lXe(e),pe=await i.toFernWorkspace({context:o},se,e.apiOverride?.specs);I&&await yK({workspace:pe,context:o,logWarnings:!1,ossWorkspace:i instanceof yp?i:void 0});let xe=E?void 0:y??await bTl({generatorInvocation:e,context:t}),Ee=await $Fl({projectConfig:r,organization:n,workspace:pe,interactiveTaskContext:t,generatorInvocation:{...e,outputMode:e.outputMode._visit({downloadFiles:()=>e.outputMode,github:De=>Vr.OutputMode.github({...De,makePr:A==="pull-request"}),githubV2:De=>A==="pull-request"?Vr.OutputMode.githubV2(Vr.GithubOutputModeV2.pullRequest(De)):e.outputMode,publish:()=>e.outputMode,publishV2:()=>e.outputMode,_other:()=>e.outputMode})},version:a,audiences:s.audiences,shouldLogS3Url:c,token:u,whitelabel:l,replay:p,readme:e.readme,irVersionOverride:e.irVersionOverride,absolutePathToPreview:d,isPreview:f,fiddlePreview:m,pushPreviewBranch:g,fernignorePath:xe,skipFernignore:E,dynamicIrOnly:v,retryRateLimited:C,requireEnvVars:w,automationMode:T,autoMerge:P,skipIfNoDiff:O,verify:M,noReplay:K,disableTelemetry:J,loginCommand:oe,specsTarGzBuffer:await ce?.(e.name)});if(Ee?.createdSnippets&&(Te(e),e.absolutePathToLocalSnippets!=null&&Ee.snippetsS3PreSignedReadUrl!=null&&await yTl({snippetsS3PreSignedReadUrl:Ee.snippetsS3PreSignedReadUrl,absolutePathToLocalSnippetJSON:e.absolutePathToLocalSnippets,context:t})),Z!=null){let De=ae!=null?await jUe(ae,e.name,le.lookup(e)):void 0;Z.recorder.recordSuccess({apiName:i.workspaceName,groupName:s.groupName,generatorName:e.name,version:Ee?.actualVersion??null,durationMs:Date.now()-Fe,pullRequestUrl:Ee?.pullRequestUrl,noChangesDetected:Ee?.noChangesDetected,publishTarget:Ee?.publishTarget,outputRepoUrl:NUe(e),generatorsYmlAbsolutePath:ae,generatorsYmlLineNumber:De})}}catch(se){if(Z==null)throw se;if(se instanceof _c){let Ee=ae!=null?await jUe(ae,e.name,le.lookup(e)):void 0;throw Z.recorder.recordFailure({apiName:i.workspaceName,groupName:s.groupName,generatorName:e.name,errorMessage:t.getLastFailureMessage()??"Generator failed",durationMs:Date.now()-Fe,outputRepoUrl:NUe(e),generatorsYmlAbsolutePath:ae,generatorsYmlLineNumber:Ee}),se}let pe=zn(se),xe=ae!=null?await jUe(ae,e.name,le.lookup(e)):void 0;Z.recorder.recordFailure({apiName:i.workspaceName,groupName:s.groupName,generatorName:e.name,errorMessage:pe,durationMs:Date.now()-Fe,outputRepoUrl:NUe(e),generatorsYmlAbsolutePath:ae,generatorsYmlLineNumber:xe}),t.failWithoutThrowing(pe,se,{code:iAe(se)})}}Dt();jt();jt();var $ui="https://",nls="http://";function tkl(e){return e.startsWith($ui)?e.slice($ui.length):e.startsWith(nls)?e.slice(nls.length):e}function ekl(e){try{let t=e.startsWith($ui)||e.startsWith(nls)?e:`${$ui}${e}`;return tQh(new URL(t).pathname)}catch{return"/"}}function tQh(e){return e===""||e==="/"?"/":e.endsWith("/")?e.slice(0,-1):e}function rkl(e,t,r){let n=ekl(e);for(let i of t){let o=ekl(i);n!==o&&r.failAndThrow(`Basepath mismatch between Fern url and custom-domain. When basepath-aware mode is enabled (via 'multi-source: true' or the deprecated 'experimental.basepath-aware: true'), the instance 'url' and 'custom-domain' must share the same basepath, otherwise docs will fail to resolve after DNS cutover. Instance url '${e}' has basepath '${n}' but custom-domain '${i}' has basepath '${o}'.`,void 0,{code:B.Code.ConfigError})}}Kk();Va();nm();Dt();CC();zm();CC();Zt();Kl();tc();om();Tde();jt();xW();bn();var dLl=require("crypto"),oWt=require("fs/promises");Vi();var iWt=be(jEe(),1),nds=require("path");var rQh=new Set(["legacy","ledger"]);function nkl(){if(process.env.FERN_SELF_HOSTED==="true")return"legacy";let e=process.env.FERN_DOCS_DEPLOY_MODE?.toLowerCase().trim();return e==null||e===""?"ledger":nQh(e)?e:(console.warn(`[fern] Unrecognized FERN_DOCS_DEPLOY_MODE="${e}" \u2014 falling back to "ledger". Valid values: ledger, legacy.`),"ledger")}function nQh(e){return rQh.has(e)}Dt();var _kl=be(Vkl(),1);Vi();var qkl=require("util"),qzh=(0,qkl.promisify)(_kl.default);async function Gkl(e,t,r){let n=uBt(e,t),i=[];for(let o of n){let s=await Promise.all(o.map(async a=>{try{let c=await qzh(a);return c==null||c.height==null||c.width==null?void 0:{filePath:a,width:c.width,height:c.height,blurDataUrl:void 0}}catch(c){r.logger.error(`Failed to measure image size for ${a}. ${c?.message}`);return}}));i.push(...s.filter(Oa))}return new Map(i.map(o=>[o.filePath,o]))}Dt();function Wkl(e,t){if(e.startsWith("https://")||e.startsWith("http://"))return e;switch(t){case"github":return`https://github.com/${e}`;case"gitlab":return`https://gitlab.com/${e}`;case"bitbucket":return`https://bitbucket.org/${e}`;default:Ie(t)}}CC();zm();Tde();var Z6l=require("crypto"),$6l=require("fs/promises"),eLl=be(jEe(),1);Dt();function JIt(e,t){if(e==null)return;let r=t?.get(e);return r??e}function Gzh(e,t,r){let n=JIt(e,r);if(n==null)return;let i=t?.[n];if(!(i?.width==null||i?.height==null))return{path:n,width:i.width,height:i.height}}function j7t(e,t){if(e==null)return;if(e.type==="url")return{type:"url",value:e.value};let r=JIt(e.value,t);if(r!=null)return{type:"path",value:r}}function Cls(e,t,r){let n=e.background!=null?{type:"solid",...e.background}:void 0,i=JIt(e.backgroundImage,r);return{logo:Gzh(e.logo,t,r),backgroundImage:i,accentPrimary:e.accentPrimary,background:n,border:e.border,sidebarBackground:e.sidebarBackground,headerBackground:e.headerBackground,cardBackground:e.cardBackground}}function Wzh(e,t,r){if(e!=null)switch(e.type){case"dark":case"light":return{type:e.type,...Cls(e,t,r)};case"darkAndLight":return{type:"darkAndLight",dark:Cls(e.dark,t,r),light:Cls(e.light,t,r)};default:Ie(e)}}function Hzh(e,t){if(e==null)return;let{"og:image":r,"og:logo":n,"twitter:image":i,"og:background-image":o,"og:dynamic:background-image":s,...a}=e;return{...a,"og:image":j7t(r,t)??void 0,"og:logo":j7t(n,t)??void 0,"twitter:image":j7t(i,t)??void 0,"og:background-image":j7t(o,t)??void 0,"og:dynamic:background-image":j7t(s,t)??void 0}}function Kzh(e,t){if(e==null)return;let r=[];for(let n of e.files){let i=JIt(n.fileId,t);i!=null&&r.push({path:i,strategy:n.strategy})}return{remote:e.remote?.map(n=>({url:n.url,strategy:n.strategy})),files:r,inline:e.inline}}function Jzh(e,t){if(e==null)return;let r=n=>{if(n!=null)return{type:"custom",name:n.name,variants:n.variants.map(i=>({fontFile:JIt(i.fontFile,t)??i.fontFile,weight:i.weight,style:i.style})),display:n.display,fallback:n.fallback,fontVariationSettings:n.fontVariationSettings}};return{headingsFont:r(e.headingsFont),bodyFont:r(e.bodyFont),codeFont:r(e.codeFont)}}function Yzh(e){if(e!=null)return{pageDirective:e.pageDirective,pageDescriptionSource:e.pageDescriptionSource,siteDescription:e.siteDescription}}function Xzh(e){if(e!=null)return{intercom:e.intercom}}function Hkl({docsConfig:e,fileManifest:t,fileIdToPath:r,editThisPage:n}){return{title:e.title,defaultLanguage:e.defaultLanguage,translations:e.translations,announcement:e.announcement,navbarLinks:e.navbarLinks,footerLinks:e.footerLinks,logoHeight:e.logoHeight,logoHref:e.logoHref,logoRightText:e.logoRightText,favicon:JIt(e.favicon,r),agents:Yzh(e.agents),metadata:Hzh(e.metadata,r),redirects:e.redirects,colorsV3:Wzh(e.colorsV3,t,r),layout:e.layout,theme:e.theme,settings:e.settings,typographyV2:Jzh(e.typographyV2,r),analyticsConfig:e.analyticsConfig,css:e.css,js:Kzh(e.js,r),aiChatConfig:e.aiChatConfig,pageActions:e.pageActions,editThisPageLaunch:e.editThisPageLaunch,editThisPageGithub:n?.github!=null?{owner:n.github.owner,repo:n.github.repo,branch:n.github.branch??"main",host:n.github.host??"https://github.com"}:void 0,integrations:Xzh(e.integrations),header:e.header,footer:e.footer}}async function YIt(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 S4h=10,T4h=4,eds=3,O4h=1e3;function tLl(e){return(0,Z6l.createHash)("sha256").update(e).digest("hex")}var rLl=/file:([^\s"'<>)}\]]+)/g;function B4h(e){let t=new Set;for(let r of e.matchAll(rLl)){let n=r[1];n!=null&&t.add(n)}return[...t]}function P4h(e,t){return t==null||t.size===0?e:e.replace(rLl,(r,n)=>`file:${t.get(n)??n}`)}function D4h(e){return JSON.stringify(e,(t,r)=>r!=null&&typeof r=="object"&&!Array.isArray(r)?Object.fromEntries(Object.entries(r).sort(([n],[i])=>n<i?-1:n>i?1:0)):r)}function Y6l(e){let t=Buffer.from(D4h(e),"utf-8"),r=tLl(t);return{ref:{hash:r,contentType:"application/json",contentLength:t.length},hash:r,buf:t}}function cpi({docsDefinition:e,git:t,apiDefinitions:r,fileManifest:n,fileIdToPath:i,editThisPage:o,locale:s="en"}){let a=new Map,c={};for(let[f,m]of Object.entries(e.pages)){if(m==null)continue;let g=P4h(m.markdown,i),A=Buffer.from(g,"utf-8"),y=tLl(A),E=B4h(g);c[f]={hash:y,contentType:"text/markdown",contentLength:A.length,...E.length>0?{referencedFiles:E}:{}},a.set(y,A)}let u=Hkl({docsConfig:e.config,fileManifest:n,fileIdToPath:i,editThisPage:o}),l=null;if(r.size>0){let f=Object.fromEntries(r),m=Y6l(f);a.set(m.hash,m.buf),l=m.ref}let p=null;if(e.jsFiles!=null&&Object.keys(e.jsFiles).length>0){let f=Y6l(e.jsFiles);a.set(f.hash,f.buf),p=f.ref}return{localeEntry:{root:e.config.root??e.config.navigation,pages:c,config:u,apiManifest:l,jsFiles:p,fileManifest:n,redirects:null,locale:s,git:t},blobs:a}}async function nLl({docsDefinition:e,organization:t,domain:r,basepath:n,previewId:i,customDomains:o,git:s,token:a,fdrOrigin:c,headers:u,context:l,apiDefinitions:p,fileManifest:d,filePaths:f,fileIdToPath:m,editThisPage:g,resolver:A}){let{localeEntry:y,blobs:E}=cpi({docsDefinition:e,git:s,apiDefinitions:p,fileManifest:d,fileIdToPath:m,editThisPage:g}),v=await rds({docsDefinition:e,git:s,apiDefinitions:p,fileManifest:d,fileIdToPath:m,editThisPage:g,resolver:A,context:l});for(let ae of v)for(let[le,oe]of ae.blobs)E.set(le,oe);let{createDocsLedgerClient:I}=await Promise.resolve().then(()=>(Zfs(),H6l)),C=I({baseUrl:c,token:a,headers:u}),w=[y,...v.map(ae=>ae.localeEntry)],T={orgId:t,domain:r,basepath:n??"",customDomains:o??[],previewId:i??null,defaultLocale:y.locale,locales:w};l.logger.debug("[ledger] Registering deployment...");let P=performance.now(),O=await C.register(T),M=performance.now()-P;l.logger.debug(`[ledger] Registered in ${M.toFixed(0)}ms \u2014 hash=${O.deploymentHash}, missing=${O.missingContent.length} blobs`),await tds(O.missingContent,E,l,f),l.logger.debug("[ledger] Finishing deployment...");let K=performance.now(),J=await C.finish(T),Z=performance.now()-K;if(l.logger.debug(`[ledger] Finished in ${Z.toFixed(0)}ms \u2014 deploymentId=${J.deploymentId}, reused=${J.reusedDeployment}`),J.translationsProcessed!=null)for(let ae of J.translationsProcessed)l.logger.info(`[ledger] Locale "${ae.locale}": ${ae.segmentsAdded} segment(s) added`);return J}async function tds(e,t,r,n){if(e.length>0){r.logger.debug(`[ledger] Uploading ${e.length} missing blobs...`);let i=performance.now(),o=await YIt(S4h,[...e],async({hash:u,uploadUrl:l})=>{let p=t.get(u),d="application/octet-stream";if(p==null&&n!=null){let f=n.get(u);if(f!=null){p=await(0,$6l.readFile)(f);let m=eLl.lookup(f);m!==!1&&(d=m)}}return p==null?(r.logger.warn(`[ledger] Server requested blob ${u} but we don't have it \u2014 skipping`),"skipped"):R4h(p,l,u,d,r)}),s=o.filter(u=>u==="uploaded").length,a=o.filter(u=>u==="already_exists").length,c=performance.now()-i;r.logger.debug(`[ledger] Upload complete in ${c.toFixed(0)}ms \u2014 ${s} uploaded, ${a} already in store`)}else r.logger.debug("[ledger] All content already in CAS \u2014 no uploads needed")}async function R4h(e,t,r,n,i){let o=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);for(let s=0;s<=eds;s++){let a=await fetch(t,{method:"PUT",headers:{"Content-Type":n},body:o});if(a.ok)return"uploaded";if(a.status===412)return i.logger.debug(`[ledger] Blob ${r} already exists in store \u2014 skipping`),"already_exists";if(a.status===403){let l=await a.text();throw new Error(`[ledger] Presigned URL rejected for ${r} (expired or signature mismatch): ${l}`)}if(a.status===400){let l=await a.text();throw new Error(`[ledger] Content integrity check failed for ${r}: ${l}`)}if((a.status===429||a.status>=500)&&s<eds){let l=O4h*2**s;i.logger.debug(`[ledger] Upload ${r} got ${a.status}, retrying in ${l}ms (attempt ${s+1}/${eds})`),await new Promise(p=>setTimeout(p,l));continue}let u=await a.text();throw new Error(`[ledger] S3 upload failed for ${r}: ${a.status} ${u}`)}throw new Error(`[ledger] Upload exhausted retries for ${r}`)}function X6l(e,t,r){try{let n=Vle(e,cn.ApiDefinitionId(t),new _le({snippetsConfigWithSdkId:{},snippetsBySdkId:{},snippetTemplatesByEndpoint:{},snippetTemplatesByEndpointId:{},snippetsBySdkIdAndEndpointId:{}}));return qle(n)}catch(n){r.logger.debug(`[ledger] Failed to convert API definition "${t}" to read form: ${String(n)}`);return}}function F4h({baseApiDefinitions:e,translatedSpecs:t,context:r}){let n=new Map(e);for(let[i,o]of t)try{let s=ST({ir:o.ir,snippetsConfig:o.snippetsConfig,playgroundConfig:o.playgroundConfig,graphqlOperations:o.graphqlOperations,graphqlTypes:o.graphqlTypes,context:r,apiNameOverride:o.apiName});n.set(i,s)}catch(s){r.logger.warn(`[ledger] Failed to convert translated API definition for API "${i}": ${String(s)}. Falling back to base (untranslated) API.`)}return n}async function rds({docsDefinition:e,git:t,apiDefinitions:r,fileManifest:n,fileIdToPath:i,editThisPage:o,resolver:s,context:a}){if(s==null)return[];let c=s.getTranslationPages(),u=s.getTranslationNavigationOverlays();if(c==null||Object.keys(c).length===0)return[];let l=s.getTranslatedApiSpecs(),p={};if(l.size>0)for(let[m,g]of r){let A=X6l(g,m,a);A!=null&&(p[m]=A)}let d=Object.entries(c);a.logger.info(`[ledger] Building ${d.length} translation locale(s)...`);let{buildTranslatedDocsDefinition:f}=await Promise.resolve().then(()=>(J6l(),K6l));return YIt(T4h,d,async([m,g])=>{let A=await f({docsDefinition:e,locale:m,localePages:g,translationNavigationOverlays:u,resolver:s,context:a}),y=l.get(m),E=r;if(y!=null&&y.size>0&&(E=F4h({baseApiDefinitions:r,translatedSpecs:y,context:a}),A.config.root!=null)){let C={};for(let[w]of y){let T=E.get(w);if(T!=null){let P=X6l(T,w,a);P!=null&&(C[w]=P)}}Object.keys(C).length>0&&(A.config.root=F3e(A.config.root,p,C))}let{localeEntry:v,blobs:I}=cpi({docsDefinition:A,git:t,apiDefinitions:E,fileManifest:n,fileIdToPath:i,editThisPage:o,locale:m});return{locale:m,localePages:g,translatedDefinition:A,localeEntry:v,blobs:I}})}Zfs();async function iLl({docsDefinition:e,organization:t,basePath:r,previewId:n,git:i,token:o,fdrOrigin:s,headers:a,context:c,apiDefinitions:u,fileManifest:l,filePaths:p,fileIdToPath:d,editThisPage:f,resolver:m}){let{localeEntry:g,blobs:A}=cpi({docsDefinition:e,git:i,apiDefinitions:u,fileManifest:l,fileIdToPath:d,editThisPage:f}),y=await rds({docsDefinition:e,git:i,apiDefinitions:u,fileManifest:l,fileIdToPath:d,editThisPage:f,resolver:m,context:c});for(let K of y)for(let[J,Z]of K.blobs)A.set(J,Z);let E=[g,...y.map(K=>K.localeEntry)],v=api({baseUrl:s,token:o,headers:a});c.logger.debug("[ledger-preview] Registering preview deployment...");let I=performance.now(),C={orgId:t,previewId:n??null,basePath:r??"",defaultLocale:g.locale,locales:E,root:g.root,pages:g.pages,apiManifest:g.apiManifest,config:g.config,fileManifest:g.fileManifest,jsFiles:g.jsFiles,redirects:g.redirects,locale:g.locale,version:g.version,repo:g.repo,git:i},w=await v.previewRegister(C),T=performance.now()-I;c.logger.debug(`[ledger-preview] Registered in ${T.toFixed(0)}ms \u2014 hash=${w.deploymentHash}, preview=${w.previewUrl}, missing=${w.missingContent.length} blobs`),await tds(w.missingContent,A,c,p),c.logger.debug("[ledger-preview] Finishing preview deployment...");let P=performance.now(),O=await v.finish({orgId:t,domain:w.domain,basepath:w.basepath,customDomains:[],previewId:w.previewId,defaultLocale:g.locale,locales:E}),M=performance.now()-P;if(c.logger.debug(`[ledger-preview] Finished in ${M.toFixed(0)}ms \u2014 deploymentId=${O.deploymentId}, reused=${O.reusedDeployment}`),O.translationsProcessed!=null)for(let K of O.translationsProcessed)c.logger.info(`[ledger-preview] Locale "${K.locale}": ${K.segmentsAdded} segment(s) added`);return{previewUrl:w.previewUrl,deploymentId:O.deploymentId}}async function oLl({fn:e,maxRetries:t,baseDelayMs:r,jitterFactor:n=0,isRetryable:i=()=>!0,logger:o,label:s,delayFn:a=c=>new Promise(u=>setTimeout(u,c))}){let c;for(let u=0;u<=t;u++)try{return await e()}catch(l){if(c=l,!i(l)||u>=t)throw l;let p=n>0?1+(Math.random()-.5)*n:1,d=Math.round(r*2**u*p);s!=null&&o.warn(`${s} (attempt ${u+1}/${t+1}), retrying in ${d}ms...`),await a(d)}throw c}var k4h=10,sLl=10,upi=parseInt(process.env.FERN_DOCS_ASSET_HASH_CONCURRENCY??"32",10),N4h=3,j4h=1e3,Q4h=.5;function aLl(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}var lvt=class extends Error{constructor(){super("Another docs publish is currently in progress for this domain."),this.name="DocsPublishConflictError"}};async function cLl({fdrOrigin:e,token:t,domain:r,basepath:n}){try{await fy.post(`${e}/docs-deployment/unlock`,{domain:r,basepath:n},{headers:{Authorization:`Bearer ${t}`}})}catch{}}function z4h(e){return e.replace(/\.\.\//g,"_dot_dot_/")}async function uLl(e){let t=await(0,oWt.readFile)(e),r=(0,dLl.createHash)("sha256").update(new Uint8Array(t)).digest("hex");return{buffer:t,hash:r}}async function mLl({token:e,organization:t,docsWorkspace:r,domain:n,customDomains:i,apiWorkspaces:o,ossWorkspaces:s,context:a,preview:c,previewId:u,editThisPage:l,disableTemplates:p=!1,skipUpload:d=!1,withAiExamples:f=!0,excludeApis:m=!1,targetAudiences:g,docsUrl:A,cliVersion:y,ciSource:E,deployerAuthor:v,loginCommand:I="fern login",multiSource:C=!1}){let w=process.env.FERN_FDR_ORIGIN??process.env.OVERRIDE_FDR_ORIGIN??"https://registry.buildwithfern.com"??"https://registry.buildwithfern.com";await PLt(`${w}/health`,a.logger)&&a.logger.debug("Detected air-gapped environment - skipping external FDR service calls");let P={};y!=null&&(P["X-CLI-Version"]=y),E!=null&&(P["X-CI-Source"]=JSON.stringify(E),a.logger.debug(`CI source detected: ${E.type} (${E.repo??"unknown repo"})`)),v?.username!=null&&(P["X-Deployer-Author"]=v.username),v?.email!=null&&(P["X-Deployer-Author-Email"]=v.email);let O=Fk({token:e.value,...Object.keys(P).length>0&&{headers:P}}),M={type:"public"},K=nkl();K!=="legacy"&&a.logger.info(`Docs deploy mode: ${K}`),m&&a.logger.debug("Experimental flag 'exclude-apis' is enabled - API references will be excluded from S3 upload");let J,Z=i[0]??n,ae=W4h(n),le=r.config.experimental&&r.config.experimental.dynamicSnippets===!1;r.config.experimental?.basepathAware===!0&&a.logger.warn("experimental.basepath-aware is deprecated. Use 'multi-source: true' on the instance instead.");let oe=C||r.config.experimental?.basepathAware===!0;oe&&a.logger.debug("Basepath-aware mode is enabled - using basepath-aware S3 key format");let ce=!1,Te=()=>{ce&&!c&&(ce=!1,a.logger.debug("Unlocking docs deploy due to early exit..."),cLl({fdrOrigin:w,token:e.value,domain:n,basepath:ae}))},Fe=async()=>{ce&&!c&&(ce=!1,a.logger.debug("Unlocking docs deploy due to signal..."),await cLl({fdrOrigin:w,token:e.value,domain:n,basepath:ae})),process.exit(1)};process.on("SIGINT",Fe),process.on("SIGTERM",Fe);try{let se=await s8t({docsWorkspace:r,organization:t,fdrOrigin:w,token:e.value,taskContext:a}),pe=r.config.translations!=null&&r.config.translations.length>1,xe=new Map,Ee={},De=new Map,Ke=new Map,ct=new Map,Ct=(Mt,dr)=>{if(pe)try{let qe=Vle(Mt,cn.ApiDefinitionId(dr),new _le({snippetsConfigWithSdkId:{},snippetsBySdkId:{},snippetTemplatesByEndpoint:{},snippetTemplatesByEndpointId:{},snippetsBySdkIdAndEndpointId:{}}));ct.set(dr,qle(qe))}catch(qe){a.logger.debug(`Failed to build read API definition for ${dr} (translated sidebar titles may stay in the default language): ${String(qe)}`)}},at=async({ir:Mt,snippetsConfig:dr,playgroundConfig:qe,apiName:Me,workspace:_,graphqlOperations:ve,graphqlTypes:tt})=>{let mt=ST({ir:Mt,snippetsConfig:dr,playgroundConfig:qe,graphqlOperations:ve,graphqlTypes:tt,context:a,apiNameOverride:Me}),xt=e.value==="dummy",Lt=$4h(f&&!xt,r.config.aiExamples?.style??r.config.experimental?.aiExampleStyleInstructions);if(Lt){let Ft=_?.getSources()?.filter(Pt=>Pt.type==="openapi").map(Pt=>({absoluteFilePath:Pt.absoluteFilePath,absoluteFilePathToOverrides:Pt.absoluteFilePathToOverrides}));Ft==null||Ft.length===0?a.logger.debug("Skipping AI example enhancement: no OpenAPI source file paths available"):mt=await yyt(mt,Lt,a,e,t,Ft)}let Pe,Gt=new Set;if(Object.keys(dr).length===0)a.logger.debug("No snippets configuration defined, skipping snippet generation...");else if(!le){let It=await H4h({fdr:O,workspace:_,organization:t,context:a,snippetsConfig:dr});It&&Object.keys(It).length>0&&(Pe=It,Gt=new Set(Object.keys(It)),a.logger.debug(`Using existing SDK dynamic IRs for: ${Object.keys(It).join(", ")}`));let Ft=await Y4h({workspace:_,organization:t,context:a,snippetsConfig:dr,skipLanguages:Gt});Ft&&(Pe={...Pe,...Ft})}let mr=Me??Lr(Mt.apiName),Er;try{Er=await oLl({fn:()=>O.api.register.registerApiDefinition({orgId:cn.OrgId(t),apiId:cn.ApiId(mr),definition:mt,dynamicIRs:Pe}),maxRetries:N4h,baseDelayMs:j4h,jitterFactor:Q4h,isRetryable:eUh,logger:a.logger,label:`registerApiDefinition failed for ${mr}`})}catch(It){let Ft=ALl(It);return a.logger.error(`FDR registerApiDefinition failed. Error details:
|
|
4159
4159
|
${JSON.stringify(Ft,void 0,2)}`),Me!=null?a.failAndThrow(`Failed to publish docs because API definition (${Me}) could not be uploaded. Please contact support@buildwithfern.com`,Ft,{code:B.Code.NetworkError}):a.failAndThrow("Failed to publish docs because API definition could not be uploaded. Please contact support@buildwithfern.com",Ft,{code:B.Code.NetworkError})}return a.logger.debug(`Registered API Definition ${Me}: ${Er.apiDefinitionId}`),Er.dynamicIRs&&Pe&&(d?a.logger.debug("Skip-upload mode: skipping dynamic IR uploads"):await X4h({dynamicIRs:Pe,dynamicIRUploadUrls:Er.dynamicIRs,context:a,apiId:Er.apiDefinitionId})),Ct(mt,Er.apiDefinitionId),xe.set(Er.apiDefinitionId,mt),Er.apiDefinitionId},Ut=new m3({domain:n,docsWorkspace:se,ossWorkspaces:s,apiWorkspaces:o,taskContext:a,editThisPage:l,uploadFiles:async Mt=>{let dr=Mt.map(Pt=>({...Pt,sanitizedPath:z4h(Pt.relativeFilePath)})),qe=new Map(dr.map(Pt=>[Pt.absoluteFilePath,Pt])),Me=new Map(dr.map(Pt=>[Pt.sanitizedPath,Pt.absoluteFilePath])),ve=dr.map(Pt=>({...Pt,mediaType:iWt.lookup(Pt.absoluteFilePath)})).filter(Pt=>Pt.mediaType!==!1).filter(Pt=>Df.parse(Pt.mediaType)?.isImage()??!1).map(Pt=>Pt.absoluteFilePath),tt=await Gkl(ve,k4h,a);a.logger.debug(`Hashing ${tt.size} image files with concurrency ${upi}...`);let mt=performance.now(),xt=Array.from(tt.values()),Pe=(await YIt(upi,xt,async Pt=>{let wr=qe.get(Pt.filePath);if(wr==null)return null;let ne=wr.sanitizedPath,{buffer:Ne,hash:Re}=await uLl(wr.absoluteFilePath),Je=iWt.lookup(wr.absoluteFilePath)||"application/octet-stream";return Ee[ne]={hash:Re,contentType:Je,contentLength:Ne.byteLength,filename:(0,nds.basename)(wr.sanitizedPath),width:Pt.width,height:Pt.height},De.set(Re,wr.absoluteFilePath),{filePath:cn.docs.v1.write.FilePath(tPt(ne)),width:Pt.width,height:Pt.height,blurDataUrl:Pt.blurDataUrl,alt:void 0,fileHash:Re}})).filter(Pt=>Pt!=null),Gt=performance.now()-mt;a.logger.debug(`Hashed ${Pe.length} images in ${Gt.toFixed(0)}ms`);let mr=dr.filter(({absoluteFilePath:Pt})=>!tt.has(Pt));a.logger.debug(`Hashing ${mr.length} non-image files with concurrency ${upi}...`);let Er=performance.now(),It=await YIt(upi,mr,async Pt=>{let{buffer:wr,hash:ne}=await uLl(Pt.absoluteFilePath),Ne=iWt.lookup(Pt.absoluteFilePath)||"application/octet-stream";return Ee[Pt.sanitizedPath]={hash:ne,contentType:Ne,contentLength:wr.byteLength,filename:(0,nds.basename)(Pt.sanitizedPath)},De.set(ne,Pt.absoluteFilePath),{path:cn.docs.v1.write.FilePath(tPt(Pt.sanitizedPath)),fileHash:ne}}),Ft=performance.now()-Er;if(a.logger.debug(`Hashed ${It.length} non-image files in ${Ft.toFixed(0)}ms`),K==="ledger"){let Pt=[];for(let wr of dr)Ee[wr.sanitizedPath]!=null&&(Ke.set(wr.sanitizedPath,wr.sanitizedPath),Pt.push({relativeFilePath:wr.relativeFilePath,absoluteFilePath:wr.absoluteFilePath,fileId:wr.sanitizedPath}));return a.logger.debug(`[ledger] Skipping V2 startDocsRegister; resolved ${Pt.length} files by sanitizedPath`),Pt}if(c){let Pt;try{Pt=await O.docs.v2.write.startDocsPreviewRegister({orgId:cn.OrgId(t),authConfig:M,filepaths:It,images:Pe,basePath:ae,previewId:u!=null?aLl(u):void 0})}catch(wr){return await fLl(wr,a,t,n,I)}if(Z=Pt.previewUrl,J=Pt.docsRegistrationId,a.logger.debug(`Received preview registration ID: ${J}`),d)a.logger.debug("Skip-upload mode: skipping file uploads for docs preview");else{let wr=new Set(Pt.skippedFiles||[]),ne=Object.fromEntries(Object.entries(Pt.uploadUrls).filter(([Je])=>!wr.has(Je))),Ne=Object.keys(ne).length,Re=wr.size;Ne>0?(a.logger.debug(`Uploading ${Ne} files (${Re} skipped)...`),await lLl(ne,r.absoluteFilePath,a,sLl,Me)):a.logger.debug(`No files to upload (all ${Re} up to date)`)}return pLl(Pt.uploadUrls,r.absoluteFilePath,Me)}else{let Pt;try{Pt=await O.docs.v2.write.startDocsRegister({domain:n,customDomains:i,authConfig:M,orgId:cn.OrgId(t),filepaths:It,images:Pe,...oe&&{basepathAware:!0}})}catch(ne){return fLl(ne,a,t,n,I)}J=Pt.docsRegistrationId,ce=!0,a.logger.debug(`Received production registration ID: ${J}`);let wr=Pt.skippedFiles?.length||0;if(wr>0&&a.logger.info(`Skipped ${wr} unchanged file${wr===1?"":"s"} (already uploaded)`),d)a.logger.debug("Skip-upload mode: skipping file uploads for docs");else{let ne=new Set(Pt.skippedFiles||[]),Ne=Object.fromEntries(Object.entries(Pt.uploadUrls).filter(([Je])=>!ne.has(Je))),Re=Object.keys(Ne).length;Re>0?(a.logger.info(`\u2191 Uploading ${Re} files...`),await lLl(Ne,r.absoluteFilePath,a,sLl,Me)):a.logger.info("No files to upload (all up to date)")}return pLl(Pt.uploadUrls,r.absoluteFilePath,Me)}},registerApi:at,buildTranslatedApiDefinitions:pe,targetAudiences:g});a.logger.info("Resolving docs definition...");let tr=performance.now(),Ae=await Ut.resolve(),me=performance.now()-tr;if(r.config.settings?.substituteEnvVars){a.logger.debug("Applying environment variable substitution to docs definition...");let{jsFiles:Mt,...dr}=Ae;Ae={...XA(dr,{onError:Me=>a.failAndThrow(void 0,Me,{code:B.Code.EnvironmentError})},{substituteAsEmpty:!1}),jsFiles:Mt}}let Qe=Object.keys(Ae.pages).length,it=o.length,ye=process.memoryUsage();if(a.logger.info(`Resolved docs definition in ${me.toFixed(0)}ms: ${Qe} pages${it?`, ${it} API workspaces`:""}`),a.logger.debug(`Memory after resolve: RSS=${(ye.rss/1024/1024).toFixed(2)}MB, Heap=${(ye.heapUsed/1024/1024).toFixed(2)}MB`),J==null&&K!=="ledger")return Te(),a.failAndThrow("Failed to publish docs.","Docs registration ID is missing.",{code:B.Code.InternalError});let Be=E?.repo!=null&&E?.branch!=null?{repoUrl:Wkl(E.repo,E.type),branch:E.branch,commitSha:E.commitSha}:void 0,Rt=async()=>{if(J==null)return;a.logger.info("Publishing docs to FDR...");let Mt=performance.now();await O.docs.v2.write.finishDocsRegister({docsRegistrationId:J,docsDefinition:Ae,excludeApis:m,...oe&&!c&&{basepathAware:!0}});let dr=performance.now()-Mt;a.logger.debug(`Docs published to FDR in ${dr.toFixed(0)}ms`)},pt=async()=>{if(c){let Mt=await iLl({docsDefinition:Ae,organization:t,basePath:ae,previewId:u!=null?aLl(u):u,git:Be,token:e.value,fdrOrigin:w,headers:P,context:a,apiDefinitions:xe,fileManifest:Object.keys(Ee).length>0?Ee:void 0,filePaths:De.size>0?De:void 0,fileIdToPath:Ke.size>0?Ke:void 0,editThisPage:l,resolver:Ut});K==="ledger"&&(Z=Mt.previewUrl),a.logger.info(`[ledger] Preview deployment created: ${Mt.deploymentId}`)}else{let Mt=await nLl({docsDefinition:Ae,organization:t,domain:n,basepath:ae,previewId:u,customDomains:i,git:Be,token:e.value,fdrOrigin:w,headers:P,context:a,apiDefinitions:xe,fileManifest:Object.keys(Ee).length>0?Ee:void 0,filePaths:De.size>0?De:void 0,fileIdToPath:Ke.size>0?Ke:void 0,editThisPage:l,resolver:Ut});a.logger.info(`[ledger] Deployment ${Mt.reusedDeployment?"reused":"created"}: ${Mt.deploymentId}`)}};if(K==="ledger")try{await pt()}catch(Mt){return a.failAndThrow("Failed to publish docs via ledger to "+n,Mt,{code:B.Code.NetworkError})}else if(J!=null)try{await Rt()}catch(Mt){return a.failAndThrow("Failed to publish docs to "+n,Mt,{code:B.Code.NetworkError})}let Ze=pe?Ut.getTranslatedApiSpecs():new Map,ur=new Map;if(Ze.size>0){a.logger.info(`Registering translated API definitions for ${Ze.size} locale(s)...`);for(let[Mt,dr]of Ze){let qe=new Map;for(let[Me,_]of dr)try{let ve=await at(_);ve!==Me&&qe.set(Me,ve)}catch(ve){a.logger.warn(`Failed to register translated API definition for locale "${Mt}" (API reference will render in the default language): ${String(ve)}`)}qe.size>0&&ur.set(Mt,qe)}}let Yt=Ut.getTranslationPages(),Cr=Ut.getTranslationNavigationOverlays(),ji=c?Z:n;K!=="ledger"&&Yt!=null&&Object.keys(Yt).length>0&&(a.logger.info(`Registering translations for ${Object.keys(Yt).length} locale(s)...`),await Promise.all(Object.entries(Yt).map(async([Mt,dr])=>{try{let qe=Ut.getCollectedFileIds(),Me=Ut.getDocsWorkspacePath(),_=async wr=>{let ne=ko(Me,wr),Ne=ni(Me,Se.of(`translations/${Mt}/${ne}`));return await $t(Ne)?Ne:wr},ve=async wr=>{let ne=await _(wr),Ne=await(0,oWt.readFile)(ne,"utf-8"),Re=Ne.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return Re!=null?Ne.slice(Re[0].length):Ne},tt=async wr=>{let ne=await _(wr);return(0,oWt.readFile)(ne,"utf-8")},mt=await Promise.all(Object.entries(dr).map(async([wr,ne])=>{try{let Ne=Ae.pages[wr],Re=ni(Me,Se.of(wr)),{markdown:Je}=await wT({markdown:ne,absolutePathToFernFolder:Me,absolutePathToMarkdownFile:Re,context:a,markdownLoader:ve}),Et=await _2({markdown:Je,absolutePathToFernFolder:Me,absolutePathToMarkdownFile:Re,context:a,fileLoader:tt}),Qr=q2({markdown:Et,absolutePathToFernFolder:Me,absolutePathToMarkdownFile:Re}),gn=Mw(Qr);gn=V2(gn,qe,{},{absolutePathToMarkdownFile:Re,absolutePathToFernFolder:Me},a);let Ln=Ne?.editThisPageUrl;if(Ln!=null){let yo=`/fern/${wr}`,Zl=`/fern/translations/${Mt}/${wr}`;Ln=Ln.replace(yo,Zl)}return[wr,{markdown:gn,rawMarkdown:gn,editThisPageUrl:Ln,editThisPageLaunch:Ne?.editThisPageLaunch}]}catch(Ne){a.logger.warn(`Failed to process translated page "${wr}" for locale "${Mt}": ${String(Ne)}. Falling back to base page.`);return}})),xt={...Ae.pages,...Object.fromEntries(mt.filter(wr=>wr!=null))},Lt=vde(Ae.config.root,dr,a),Pe=Cr?.[Mt],Gt=Ae.config.announcement,mr=Ae.config.navbarLinks;Pe!=null&&(Lt=xde(Lt,Pe),Gt=Cde(Pe)??Gt,Pe.navbarLinks!=null&&(mr=Pe.navbarLinks));let Er=ur.get(Mt);if(Er!=null&&Er.size>0&&Lt!=null){let wr={},ne={};for(let[Ne,Re]of Er){let Je=ct.get(Ne),Et=ct.get(Re);Je!=null&&(wr[Ne]=Je),Et!=null&&(ne[Ne]=Et)}Lt=Object.keys(ne).length>0?F3e(Lt,wr,ne):structuredClone(Lt);for(let[Ne,Re]of Er)j3e(Lt,Ne,Re)}let It={...Ae,pages:xt,config:{...Ae.config,root:Lt,announcement:Gt,navbarLinks:mr}},Ft=Object.keys(dr).length;a.logger.debug(`Sending translation for locale "${Mt}" (${Ft} page${Ft===1?"":"s"})`);let Pt=await fetch(`${w}/v2/registry/docs/translations/register`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.value}`,...P},body:JSON.stringify({domain:ji,customDomains:c?[]:i,orgId:t,locale:Mt,docsDefinition:It})});if(!Pt.ok){let wr=await Pt.text();throw new Error(`HTTP ${Pt.status}: ${wr}`)}a.logger.debug(`Registered translations for locale "${Mt}"`)}catch(qe){a.logger.warn(`Failed to register translations for locale "${Mt}": ${String(qe)}`)}})));let An=W2(Z);await Z4h({docsDefinition:Ae,isPreview:c,context:a});let Zi=Dme(An,An);return a.logger.info(fe.green(`Published docs to ${Zi}`)),An}catch(se){throw Te(),se}finally{ce=!1,process.removeListener("SIGINT",Fe),process.removeListener("SIGTERM",Fe)}}function hLl(e){return typeof e=="object"&&e!==null&&"uploadUrl"in e&&typeof e.uploadUrl=="string"&&"fileId"in e&&typeof e.fileId=="string"}function M4h(e){if(typeof e=="string")return e;if(hLl(e))return e.uploadUrl;throw new Error(`Unexpected upload URL value: ${JSON.stringify(e)}`)}function L4h(e,t){return hLl(t)?Ew.FileId(t.fileId):Ew.FileId(e)}async function lLl(e,t,r,n,i){let o=Date.now(),s=Object.keys(e).length;r.logger.debug(`Start uploading ${s} files...`);let a=uBt(Object.entries(e),n),c=0;for(let l of a){await Promise.all(l.map(async([d,f])=>{let m=i.get(d)||ni(t,Se.of(d));try{let g=M4h(f),A=iWt.lookup(m);await fy.put(g,await(0,oWt.readFile)(m),{headers:{"Content-Type":A===!1?"application/octet-stream":A,"Cache-Control":"public, max-age=31536000, immutable"}})}catch(g){r.failAndThrow(`Failed to upload ${m}`,g,{code:B.Code.NetworkError})}}));let p=Date.now();c+=l.length,r.logger.debug(`Uploaded ${c}/${s} files in ${p-o}ms`)}let u=Date.now();r.logger.debug(`Finished uploading ${s} files in ${u-o}ms`)}function pLl(e,t,r){let n=[];for(let[i,o]of Object.entries(e)){let s=Se.of(i),a=r?.get(i)||ni(t,s);n.push({relativeFilePath:s,absoluteFilePath:a,fileId:L4h(i,o)})}return n}async function fLl(e,t,r,n,i){t.instrumentPostHogEvent({command:"docs-generation",properties:{error:JSON.stringify(e)}});let o=ALl(e);t.logger.debug(`startDocsRegister failed for domain '${n}', org '${r}'. Error details:
|
|
4160
4160
|
${JSON.stringify(o,void 0,2)}`);let s=e,a=s?.content;if(a?.reason==="status-code"&&a?.statusCode===409)throw new lvt;let c=U4h(e,r,n,i);if(c!=null)return t.failAndThrow(c,void 0,{code:B.Code.AuthError});switch(s?.error){case"InvalidCustomDomainError":return t.failAndThrow("Your docs domain should end with docs.buildwithfern.com",void 0,{code:B.Code.ConfigError});case"InvalidDomainError":return t.failAndThrow("Please make sure that none of your custom domains are not overlapping (i.e. one is a substring of another)",void 0,{code:B.Code.ConfigError});case"UnauthorizedError":return t.failAndThrow(gLl(n,r,a,i),void 0,{code:B.Code.AuthError});case"UserNotInOrgError":return t.failAndThrow(`You do not belong to organization '${r}'. Please run '${i}' to ensure you are logged in with the correct account.
|
|
4161
4161
|
|
|
@@ -4163,7 +4163,7 @@ Please ensure you have membership at https://dashboard.buildwithfern.com, and as
|
|
|
4163
4163
|
|
|
4164
4164
|
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`:r}function q4h(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.
|
|
4165
4165
|
|
|
4166
|
-
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function G4h(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 W4h(e){try{return new URL(W2(e)).pathname}catch{return}}async function H4h({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await K4h({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:cn.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 ids(e){return e.replace(/^https:\/\//,"")}async function K4h({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&&ids(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 J4h({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 J4h({fdr:e,workspace:t,language:r,snippetName:n,context:i}){let o;switch(r){case"csharp":o="Csharp";break;case"go":o="Go";break;case"java":o="Java";break;case"python":o="Python";break;case"ruby":o="Ruby";break;case"typescript":o="TypeScript";break;case"php":o="Php";break;case"swift":o="Swift";break;default:return}let s,a,c;if(t.generatorsConfiguration?.groups){let u=[];for(let l of t.generatorsConfiguration.groups)for(let p of l.generators)if(p.language===r){let d=jn.getPackageName({generatorInvocation:p});d&&u.push(d),!a&&d&&(a=d,c=p.name,p.outputMode.type==="githubV2"&&(s=`${p.outputMode.githubV2.owner}/${p.outputMode.githubV2.repo}`))}}if(!a){i.logger.debug(`[SDK Dynamic IR] ${r}: no generator found with a package name`);return}try{let u=await e.sdks.computeSemanticVersion({githubRepository:s,language:o,package:a});return i.logger.debug(`[SDK Dynamic IR] ${r}: computed version ${u.version} for package "${a}"`),{version:u.version,generatorPackage:a}}catch(u){i.logger.debug(`[SDK Dynamic IR] ${r}: error computing version: ${u}`);return}}async function Y4h({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&&ids(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=QUe({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=ids(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=Sg({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 xh(r,e),dynamicGeneratorConfig:u}),d=qze({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 X4h({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 Z4h({docsDefinition:e,isPreview:t,context:r}){e.config.aiChatConfig==null||t||r.logger.warn(fe.yellow("Enabling Ask Fern from docs.yml is deprecated. Please enable it from the Fern dashboard instead."))}function $4h(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 eUh(e){let t=e,r=t?.content,n=t?.statusCode??r?.statusCode;return n==null?!0:n===429||n>=500}function ALl(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 sWt=[60*1e3,300*1e3,300*1e3];async function aWt({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 g=a&&!n.config.settings?.substituteEnvVars;n.config=XA(n.config,{onError:C=>i.failAndThrow(void 0,C,{code:B.Code.EnvironmentError})},{substituteAsEmpty:g});let A=n.config.instances;if(A.length===0){i.failAndThrow("No instances specified in docs.yml! Cannot register docs.",void 0,{code:B.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:B.Code.ConfigError});return}let y=A.find(C=>C.url===s)??A[0];if(y==null){i.failAndThrow(`No docs instance with url ${s}. Failed to register.`,void 0,{code:B.Code.ConfigError});return}let E=(typeof y.customDomain=="string"?[y.customDomain]:y.customDomain??[]).map(tkl);(y.multiSource===!0||n.config.experimental?.basepathAware===!0)&&rkl(y.url,E,i),i.logger.info(`Starting docs publishing for ${a?"preview":"production"}: ${y.url}`),i.logger.debug(`Organization: ${e}, Preview: ${a}, APIs: ${t.length}, OSS: ${r.length}`);let I;return await i.runInteractiveTask({name:y.url},async()=>{let C=performance.now(),w=()=>mLl({docsWorkspace:n,customDomains:E,domain:y.url,token:o,organization:e,context:i,apiWorkspaces:t,ossWorkspaces:r,preview:a,previewId:c,editThisPage:y.editThisPage,disableTemplates:u,skipUpload:l,withAiExamples:n.config.aiExamples?.enabled??n.config.experimental?.aiExamples??!0,excludeApis:n.config.experimental?.excludeApis??!1,targetAudiences:y.audiences?Array.isArray(y.audiences)?y.audiences:[y.audiences]:void 0,docsUrl:y.url,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m,multiSource:y.multiSource??!1});for(let P=0;;P++)try{I=await w();break}catch(O){if(!(O instanceof lvt)||P>=sWt.length){if(O instanceof lvt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:B.Code.NetworkError});throw O}let M=sWt[P]??sWt[sWt.length-1]??6e4,K=M/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${K} minute${K===1?"":"s"} (attempt ${P+1}/${sWt.length})...`),await new Promise(J=>setTimeout(J,M))}let T=performance.now()-C;i.logger.debug(`Docs publishing completed in ${T.toFixed(0)}ms`)}),I}jt();var lpi=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 od({context:this.context,task:this.task});try{let s=await aWt({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.54.0",loginCommand:"fern auth login"});return o.getResult()===df.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:zn(s)}}}};Dt();bn();var pvt=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(`
|
|
4166
|
+
Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function G4h(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 W4h(e){try{return new URL(W2(e)).pathname}catch{return}}async function H4h({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await K4h({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:cn.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 ids(e){return e.replace(/^https:\/\//,"")}async function K4h({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&&ids(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 J4h({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 J4h({fdr:e,workspace:t,language:r,snippetName:n,context:i}){let o;switch(r){case"csharp":o="Csharp";break;case"go":o="Go";break;case"java":o="Java";break;case"python":o="Python";break;case"ruby":o="Ruby";break;case"typescript":o="TypeScript";break;case"php":o="Php";break;case"swift":o="Swift";break;default:return}let s,a,c;if(t.generatorsConfiguration?.groups){let u=[];for(let l of t.generatorsConfiguration.groups)for(let p of l.generators)if(p.language===r){let d=jn.getPackageName({generatorInvocation:p});d&&u.push(d),!a&&d&&(a=d,c=p.name,p.outputMode.type==="githubV2"&&(s=`${p.outputMode.githubV2.owner}/${p.outputMode.githubV2.repo}`))}}if(!a){i.logger.debug(`[SDK Dynamic IR] ${r}: no generator found with a package name`);return}try{let u=await e.sdks.computeSemanticVersion({githubRepository:s,language:o,package:a});return i.logger.debug(`[SDK Dynamic IR] ${r}: computed version ${u.version} for package "${a}"`),{version:u.version,generatorPackage:a}}catch(u){i.logger.debug(`[SDK Dynamic IR] ${r}: error computing version: ${u}`);return}}async function Y4h({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&&ids(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=QUe({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=ids(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=Sg({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 xh(r,e),dynamicGeneratorConfig:u}),d=qze({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 X4h({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 Z4h({docsDefinition:e,isPreview:t,context:r}){e.config.aiChatConfig==null||t||r.logger.warn(fe.yellow("Enabling Ask Fern from docs.yml is deprecated. Please enable it from the Fern dashboard instead."))}function $4h(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 eUh(e){let t=e,r=t?.content,n=t?.statusCode??r?.statusCode;return n==null?!0:n===429||n>=500}function ALl(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 sWt=[60*1e3,300*1e3,300*1e3];async function aWt({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 g=a&&!n.config.settings?.substituteEnvVars;n.config=XA(n.config,{onError:C=>i.failAndThrow(void 0,C,{code:B.Code.EnvironmentError})},{substituteAsEmpty:g});let A=n.config.instances;if(A.length===0){i.failAndThrow("No instances specified in docs.yml! Cannot register docs.",void 0,{code:B.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:B.Code.ConfigError});return}let y=A.find(C=>C.url===s)??A[0];if(y==null){i.failAndThrow(`No docs instance with url ${s}. Failed to register.`,void 0,{code:B.Code.ConfigError});return}let E=(typeof y.customDomain=="string"?[y.customDomain]:y.customDomain??[]).map(tkl);(y.multiSource===!0||n.config.experimental?.basepathAware===!0)&&rkl(y.url,E,i),i.logger.info(`Starting docs publishing for ${a?"preview":"production"}: ${y.url}`),i.logger.debug(`Organization: ${e}, Preview: ${a}, APIs: ${t.length}, OSS: ${r.length}`);let I;return await i.runInteractiveTask({name:y.url},async()=>{let C=performance.now(),w=()=>mLl({docsWorkspace:n,customDomains:E,domain:y.url,token:o,organization:e,context:i,apiWorkspaces:t,ossWorkspaces:r,preview:a,previewId:c,editThisPage:y.editThisPage,disableTemplates:u,skipUpload:l,withAiExamples:n.config.aiExamples?.enabled??n.config.experimental?.aiExamples??!0,excludeApis:n.config.experimental?.excludeApis??!1,targetAudiences:y.audiences?Array.isArray(y.audiences)?y.audiences:[y.audiences]:void 0,docsUrl:y.url,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m,multiSource:y.multiSource??!1});for(let P=0;;P++)try{I=await w();break}catch(O){if(!(O instanceof lvt)||P>=sWt.length){if(O instanceof lvt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:B.Code.NetworkError});throw O}let M=sWt[P]??sWt[sWt.length-1]??6e4,K=M/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${K} minute${K===1?"":"s"} (attempt ${P+1}/${sWt.length})...`),await new Promise(J=>setTimeout(J,M))}let T=performance.now()-C;i.logger.debug(`Docs publishing completed in ${T.toFixed(0)}ms`)}),I}jt();var lpi=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 od({context:this.context,task:this.task});try{let s=await aWt({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.55.0",loginCommand:"fern auth login"});return o.getResult()===df.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:zn(s)}}}};Dt();bn();var pvt=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(`
|
|
4167
4167
|
`),this.stream.write(`${fe.cyan("\u25C6")} ${fe.bold(t.title)}
|
|
4168
4168
|
`),t.subtitle!=null&&this.stream.write(` ${fe.dim(t.subtitle)}
|
|
4169
4169
|
`),this.stream.write(`
|
|
@@ -4489,13 +4489,15 @@ ${this.buffer}`:this.buffer}stringifyRequires(){return Array.from(this.requires)
|
|
|
4489
4489
|
`)}};var Uf=class extends tI{async toStringAsync({customConfig:t,formatter:r}={}){let n=new ICt({customConfig:t??{},formatter:r});return this.write(n),n.toStringAsync()}toString({customConfig:t,formatter:r}={}){let n=new ICt({customConfig:t??{},formatter:r});return this.write(n),n.toString()}typeDefinitionToString({customConfig:t,formatter:r}={}){let n=new ICt({customConfig:t??{},formatter:r});return this.writeTypeDefinition(n),n.toString()}writeTypeDefinition(t){}};var ghe=class extends Uf{name;modules;fullyQualified;constructor({name:t,modules:r,fullyQualified:n}){super(),this.name=t,this.modules=r??[],this.fullyQualified=n??!1}write(t){if(this.fullyQualified||this.modules.length>0){let r=[...this.modules,this.name].join("::");t.write(r);return}t.write(this.name)}};var Dn={};X(Dn,{AstNode:()=>Uf,ClassInstantiation:()=>V_e,ClassReference:()=>ghe,Class_:()=>VK,CodeBlock:()=>__e,KeywordArgument:()=>q_e,KeywordParameter:()=>G_e,Method:()=>LK,MethodInvocation:()=>W_e,MethodKind:()=>yhe,Module_:()=>UK,Parameter:()=>BN,Type:()=>Ahe,TypeLiteral:()=>xCt,TypeParameter:()=>H_e,Writer:()=>Kq,begin:()=>xFg,classReference:()=>AFg,class_:()=>fFg,codeblock:()=>Agi,comment:()=>hFg,falseValue:()=>uFg,ifElse:()=>vFg,instantiateClass:()=>yFg,invokeMethod:()=>EFg,keywordArgument:()=>bFg,method:()=>mFg,module:()=>dFg,nilValue:()=>lFg,parameters:()=>pFg,positionalArgument:()=>IFg,raise:()=>CFg,trueValue:()=>cFg,typeParameter:()=>gFg,wrapInModules:()=>wFg});var vCt=class extends Uf{body;rescues;constructor({body:t,rescues:r}){super(),this.body=t,this.rescues=r}write(t){t.write("begin"),t.writeLine(),this.body&&(t.indent(),this.body.write(t),t.writeNewLineIfLastLineNot(),t.dedent());for(let{errorClass:r,errorVariable:n,body:i}of this.rescues)t.write("rescue"),r&&(t.write(" "),r.write(t)),n&&(t.write(" => "),t.write(n)),t.writeLine(),i&&(t.indent(),i.write(t),t.writeNewLineIfLastLineNot(),t.dedent());t.write("end")}};var sFg=120,aFg=2,MK=class extends Uf{docs;constructor({docs:t}){super(),this.docs=t}write(t){this.docs?.trim()&&this.docs.split(`
|
|
4490
4490
|
`).forEach(r=>{this.wrapLine(r,t).forEach(i=>{let o=i.trimEnd();t.writeLine(o===""?"#":`# ${o}`)})})}wrapLine(t,r){let n=r.currentIndentLevel*2,i=sFg-n-aFg;if(t.length<=i)return[t];if(i<20)return[t];let o=t.split(/(\s+)/),s=[],a="";for(let c of o){if(c===""||a===""&&/^\s+$/.test(c))continue;let u=a+c;u.length<=i?a=u:(a.trim()!==""&&s.push(a.trimEnd()),a=c.trimStart(),a.length>i&&(s.push(a),a=""))}return a.trim()!==""&&s.push(a.trimEnd()),s.length===0?[t]:s}};Dt();var Ahe=class e extends Uf{internalType;constructor(t){super(),this.internalType=t}write(t){if(this.internalType)switch(this.internalType?.type){case"integer":t.write("Integer");return;case"string":t.write("String");return;case"class":t.writeNode(this.internalType.reference);return;case"instance":break;case"boolean":t.write("Internal::Types::Boolean");return;case"nil":break;case"top":break;case"bot":break;case"void":break;case"boolish":break;case"union":if(this.internalType.elems.length===2&&this.internalType.elems[1]?.internalType?.type==="nil"){let r=this.internalType.elems[0];r?.write(t)}break;case"intersection":break;case"array":t.write("Internal::Types::Array["),this.internalType.elem.write(t),t.write("]");return;case"hash":t.write("Internal::Types::Hash["),this.internalType.keyType.write(t),t.write(", "),this.internalType.valueType.write(t),t.write("]");return;case"object":t.write("Object");break;case"singleton":break;case"generic":break;case"self":break;case"tuple":break;default:Ie(this.internalType)}}writeTypeDefinition(t){if(this.internalType)switch(this.internalType.type){case"self":t.write("self");break;case"class":t.write(this.internalType.reference.toString(t));break;case"instance":t.write("instance");break;case"boolean":t.write("bool");break;case"nil":t.write("nil");break;case"top":t.write("top");break;case"bot":t.write("bot");break;case"void":t.write("void");break;case"boolish":t.write("boolish");break;case"string":t.write("String");break;case"integer":t.write("Integer");break;case"union":t.delimit({nodes:this.internalType.elems,delimiter:" | ",writeFunction:r=>r.writeTypeDefinition(t)});break;case"intersection":t.delimit({nodes:this.internalType.elems,delimiter:" & ",writeFunction:r=>r.writeTypeDefinition(t)});break;case"array":t.write("Array["),this.internalType.elem.writeTypeDefinition(t),t.write("]");break;case"hash":t.write("Hash["),this.internalType.keyType.writeTypeDefinition(t),t.write(", "),this.internalType.valueType.writeTypeDefinition(t),t.write("]");break;case"object":t.write(this.internalType.klass);break;case"singleton":t.write("singleton("),t.write(this.internalType.klass),t.write(")");break;case"tuple":t.write("["),t.delimit({nodes:this.internalType.elems,delimiter:", ",writeFunction:r=>r.write(t)}),t.write("]");break;case"generic":t.write(`${this.internalType.baseKlass}[`),t.delimit({nodes:this.internalType.parameters,delimiter:", ",writeFunction:r=>r.writeTypeDefinition(t)}),t.write("]");break;default:Ie(this.internalType)}else t.write("untyped")}static untyped(){return new this(void 0)}static self(){return new this({type:"self"})}static class_(t){return new this({type:"class",reference:new ghe({name:t.name,modules:t.modules,fullyQualified:!0})})}static instance(){return new this({type:"instance"})}static boolean(){return new this({type:"boolean"})}static nil(){return new this({type:"nil"})}static top(){return new this({type:"top"})}static bot(){return new this({type:"bot"})}static void(){return new this({type:"void"})}static boolish(){return new this({type:"boolish"})}static string(){return new this({type:"string"})}static integer(){return new this({type:"integer"})}static union(t){return new this({type:"union",elems:t})}static intersection(t){return new this({type:"intersection",elems:t})}static array(t){return new this({type:"array",elem:t})}static hash(t,r){return new this({type:"hash",keyType:t,valueType:r})}static object(t){return new this({type:"object",klass:t})}static singleton(t){return new this({type:"singleton",klass:t})}static tuple(t){return new this({type:"tuple",elems:t})}static generic(t,r){return new this({type:"generic",baseKlass:t,parameters:r})}static nilable(t){return e.union([t,e.nil()])}nilable(){return e.nilable(this)}};var yhe={Instance:"instance",Class_:"class"},GJl={Public:"public",Private:"private",Protected:"protected"},LK=class extends Uf{name;docstring;kind;positionalParameters;keywordParameters;positionalSplatParameter;keywordSplatParameter;yieldParameter;visibility;statements;returnType;splatOptionDocs;constructor({name:t,docstring:r,kind:n,visibility:i,parameters:o,returnType:s,statements:a,splatOptionDocs:c}){super(),this.name=t,this.docstring=r,this.kind=n??yhe.Instance,this.visibility=i??GJl.Public,this.positionalParameters=o?.positional??[],this.keywordParameters=o?.keyword??[],this.positionalSplatParameter=o?.positionalSplat,this.keywordSplatParameter=o?.keywordSplat,this.yieldParameter=o?.yield,this.returnType=s??Ahe.untyped(),this.statements=a??[],this.splatOptionDocs=c??[]}addStatement(t){this.statements.push(t)}write(t){this.docstring&&new MK({docs:this.docstring}).write(t);let r=this.positionalParameters.length>0||this.keywordParameters.length>0||this.keywordSplatParameter!=null;this.docstring&&r&&t.writeLine("#");for(let n of this.positionalParameters){t.write(`# @option ${n.name} [`);let i=new Kq({customConfig:t.customConfig});n.type.writeTypeDefinition(i),t.write(this.normalizeForYard(i.toString())),t.write("]"),t.newLine()}for(let n of this.keywordParameters){t.write(`# @param ${n.name} [`);let i=new Kq({customConfig:t.customConfig});n.type.writeTypeDefinition(i),t.write(this.normalizeForYard(i.toString())),t.write("]"),n.docs&&t.write(` ${n.docs}`),t.newLine()}if(this.keywordSplatParameter!=null){t.write(`# @param ${this.keywordSplatParameter.name} [`);let n=new Kq({customConfig:t.customConfig});this.keywordSplatParameter.type.writeTypeDefinition(n),t.write(this.normalizeForYard(n.toString())),t.write("]"),this.keywordSplatParameter.docs&&t.write(` ${this.keywordSplatParameter.docs}`),t.newLine()}for(let n of this.splatOptionDocs)t.writeLine(`# ${n}`);if(this.returnType!=null){(r||this.docstring)&&t.writeLine("#"),t.write("# @return [");let n=new Kq({customConfig:t.customConfig});this.returnType.writeTypeDefinition(n),t.write(this.normalizeForYard(n.toString())),t.write("]"),t.newLine()}switch(this.visibility!==GJl.Public&&(t.write(this.visibility),this.kind===yhe.Class_&&t.write("_class_method"),t.write(" ")),this.kind){case yhe.Instance:t.write(`def ${this.name}`);break;case yhe.Class_:t.write(`def self.${this.name}`);break}this.parameters.length&&(t.write("("),t.delimit({nodes:this.parameters,delimiter:", ",writeFunction:n=>n.write(t)}),t.write(")")),this.statements.length?(t.newLine(),t.indent(),this.statements.forEach((n,i)=>{n.write(t),i<this.statements.length-1&&t.newLine()}),t.writeNewLineIfLastLineNot(),t.dedent(),t.write("end")):t.write("; end"),t.newLine()}writeTypeDefinition(t){t.write(`def ${this.name}: (`),this.parameters.forEach((r,n)=>{r.writeTypeDefinition(t),n<this.parameters.length-1&&t.write(", ")}),t.write(") -> "),this.returnType.writeTypeDefinition(t)}normalizeForYard(t){let r=t.replace(/\s*\|\s*/g,", ");return r=r.replace(/\bbool\b/g,"Boolean"),r=r.replace(/(^|,\s*)nil(?:,\s*nil)+(?=,|\]|$)/g,"$1nil"),r=r.replace(/Hash\[untyped,\s*untyped\]/g,"Hash"),r}get parameters(){return[...this.positionalParameters,...this.keywordParameters,this.positionalSplatParameter,this.keywordSplatParameter,this.yieldParameter].flatMap(t=>t!==void 0?t:[])}};var UK=class e extends Uf{name;namespace;typeParameters;docstring;statements;constructor({name:t,namespace:r,typeParameters:n,docstring:i,statements:o}){super(),this.name=t,this.namespace=r??new Set,this.typeParameters=n??[],this.docstring=i,this.statements=o??[],this.populateChildNamespaces()}addStatement(t){this.statements.push(t)}write(t){this.docstring&&new MK({docs:this.docstring}).write(t),t.write(`module ${this.name}`),this.statements.length?(t.newLine(),t.indent(),this.statements.forEach((r,n)=>{r.write(t),n<this.statements.length-1&&t.newLine()}),t.writeNewLineIfLastLineNot(),t.dedent(),t.write("end")):t.write("; end"),t.newLine()}writeTypeDefinition(t){t.write(`module ${this.name}`),this.typeParameters.length&&(t.write("["),t.delimit({nodes:this.typeParameters,delimiter:", ",writeFunction:r=>r.writeTypeDefinition(t)}),t.write("]")),t.newLine(),this.statements.length&&(t.indent(),this.statements.forEach(r=>{r.writeTypeDefinition(t),t.newLine()}),t.dedent()),t.write("end")}populateChildNamespaces(){this.statements.filter(t=>t instanceof e||t instanceof VK).forEach(t=>{t.namespace=new Set([...this.namespace,this]),t.populateChildNamespaces()})}get fullyQualifiedNamespace(){return[...this.namespace,this].map(t=>t.name).join("::")}};var VK=class extends UK{superclass;statements;methods=[];constructor({name:t,superclass:r,typeParameters:n,docstring:i,statements:o}){super({name:t,docstring:i,typeParameters:n}),this.superclass=r,this.statements=o??[]}addStatement(t){this.statements.push(t)}addStatements(t){this.statements.push(...t)}addInstanceMethod(t,r,n){let i=new LK({name:t,kind:yhe.Instance,returnType:r,statements:n});this.addMethod(i)}addMethod(t){this.methods.push(t)}addMethods(t){t.forEach(r=>this.addMethod(r))}write(t){if(this.docstring&&new MK({docs:this.docstring}).write(t),t.write(`class ${this.name}`),this.superclass&&(t.write(" < "),this.superclass.write(t)),!this.hasBody()){t.writeLine("; end");return}(this.statements.length||this.methods.length)&&(t.newLine(),t.indent(),this.statements.forEach((r,n)=>{r.write(t),t.writeNewLineIfLastLineNot(),n<this.statements.length-1&&t.newLine()}),this.methods.forEach((r,n)=>{(n>0||this.statements.length>0)&&t.newLine(),r.write(t)}),t.dedent()),t.writeLine("end")}hasBody(){return this.statements.length>0||this.methods.length>0}writeTypeDefinition(t){t.write(`class ${this.name}`),this.typeParameters.length&&(t.write("["),t.delimit({nodes:this.typeParameters,delimiter:", ",writeFunction:r=>r.writeTypeDefinition(t)}),t.write("]")),this.superclass&&(t.write(" < "),this.superclass.write(t)),t.newLine(),this.statements.length&&(t.indent(),this.statements.forEach(r=>{r.writeTypeDefinition(t),t.newLine()}),t.dedent()),t.write("end")}};var FKt=class extends Uf{ifBranch;elseIfs;elseBody;constructor({if:t,elseIf:r,elseBody:n}){super(),this.ifBranch=t,this.elseIfs=r??[],this.elseBody=n?Array.isArray(n)?n:[n]:void 0}write(t){let r=this.renderAsModifier(t);if(r!=null){t.write(r),t.writeNewLineIfLastLineNot();return}t.write("if "),this.ifBranch.condition.write(t),t.writeLine(),t.indent();for(let n of this.ifBranch.thenBody)n.write(t),t.writeNewLineIfLastLineNot();t.dedent();for(let n of this.elseIfs){t.write("elsif "),n.condition.write(t),t.writeLine(),t.indent();for(let i of n.thenBody)i.write(t),t.writeNewLineIfLastLineNot();t.dedent()}if(this.elseBody&&this.elseBody.length>0){t.writeLine("else"),t.indent();for(let n of this.elseBody)n.write(t),t.writeNewLineIfLastLineNot();t.dedent()}t.write("end"),t.writeNewLineIfLastLineNot()}renderAsModifier(t){if(this.ifBranch.thenBody.length!==1||this.elseIfs.length>0||this.elseBody!=null&&this.elseBody.length>0)return;let r=this.ifBranch.thenBody[0];if(r==null||WJl(r)||WJl(this.ifBranch.condition))return;let n=HJl(r,t),i=HJl(this.ifBranch.condition,t);if(!(n.length===0||i.length===0)&&!(n.includes(`
|
|
4491
4491
|
`)||i.includes(`
|
|
4492
|
-
`)))return`${n} if ${i}`}};function WJl(e){return e instanceof VK||e instanceof UK||e instanceof LK||e instanceof vCt||e instanceof FKt}function HJl(e,t){return e.toString({customConfig:t.customConfig,formatter:t.formatter}).replace(/\n+$/,"")}var V_e=class extends Uf{classReference;arguments_;constructor({classReference:t,arguments_:r}){super(),this.classReference=t,this.arguments_=r}write(t){t.writeNode(this.classReference),t.write("."),t.write("new"),this.arguments_.length!==0&&(t.write("("),this.arguments_.length>1?(t.indent(),t.newLine(),this.arguments_.forEach((r,n)=>{n>0&&(t.write(","),t.newLine()),r.write(t)}),t.newLine(),t.dedent()):this.arguments_.forEach((r,n)=>{n>0&&t.write(", "),r.write(t)}),t.write(")"))}};var __e=class extends Uf{arg;constructor(t){super(),this.arg=t}write(t){return new Wb(this.arg).write(t)}};var q_e=class extends Uf{name;value;constructor({name:t,value:r}){super(),this.name=t,this.value=r}write(t){t.write(`${this.name}: `),this.value.write(t)}};var BN=class extends Uf{name;type;optional;docs;constructor({name:t,type:r,optional:n,docs:i}){super(),this.name=t,this.type=r??Ahe.untyped(),this.optional=n??!1,this.docs=i}};var G_e=class extends BN{initializer;constructor({name:t,type:r,initializer:n,optional:i}){super({name:t,type:r,optional:i}),this.initializer=n}write(t){t.write(`${this.name}:`),this.initializer&&(t.write(" "),t.writeNode(this.initializer))}writeTypeDefinition(t){this.optional&&t.write("?"),t.write(`${this.name}: `),this.type.writeTypeDefinition(t)}};var kKt=class extends BN{initializer;write(t){t.write(`**${this.name}`)}writeTypeDefinition(t){t.write("**"),this.type.writeTypeDefinition(t)}};Dt();var W_e=class extends Uf{on;method;arguments_;keywordArguments;block;constructor({on:t,method:r,arguments_:n,keywordArguments:i,block:o}){super(),this.on=t,this.method=r,this.arguments_=n,this.keywordArguments=i,this.block=o}write(t){this.on.write(t),t.write("."),t.write(this.method);let r=[];for(let n of this.arguments_)r.push({kind:"positional",node:n});for(let n of this.keywordArguments||[])r.push({kind:"keyword",arg:n});if(!(r.length===0&&this.block==null)&&(t.write("("),r.length>1?(t.indent(),t.newLine(),r.forEach((n,i)=>{i>0&&(t.write(","),t.newLine()),KJl(t,n)}),t.newLine(),t.dedent()):r.forEach((n,i)=>{i>0&&t.write(", "),KJl(t,n)}),t.write(")"),this.block)){let[n,i]=this.block;t.write(" do"),n.length>0&&(t.write(" |"),n.forEach((o,s)=>{s>0&&t.write(", "),t.write(o)}),t.write("|")),t.newLine(),t.indent();for(let o of i)o.write(t),t.writeNewLineIfLastLineNot();t.dedent(),t.write("end")}}};function KJl(e,t){switch(t.kind){case"positional":t.node.write(e);break;case"keyword":t.arg.write(e);break;default:Ie(t)}}var NKt=class extends Uf{value;constructor({value:t}){super(),this.value=t}write(t){this.value.write(t)}};var jKt=class extends BN{initializer;constructor({name:t,type:r,optional:n,initializer:i}){super({name:t,type:r,optional:n}),this.initializer=i}write(t){t.write(this.name),this.initializer&&t.write(` = ${this.initializer.write(t)}`)}writeTypeDefinition(t){this.optional&&t.write("?"),this.type.writeTypeDefinition(t)}};var QKt=class extends BN{write(t){t.write(`*${this.name}`)}writeTypeDefinition(t){t.write("*"),this.type.writeTypeDefinition(t)}};Dt();var xCt=class e extends Uf{internalType;constructor(t){super(),this.internalType=t}getDedupKey(){switch(this.internalType.type){case"str":return`str:${this.internalType.value}`;case"interpolatedStr":return`istr:${this.internalType.value}`;case"int":return`int:${this.internalType.value}`;case"float":return`float:${this.internalType.value}`;case"bool":return`bool:${this.internalType.value}`;case"nil":return"nil";default:return}}static string(t){return new this({type:"str",value:t})}static interpolatedString(t){return new this({type:"interpolatedStr",value:t})}static integer(t){return new this({type:"int",value:t})}static float(t){return new this({type:"float",value:t})}static boolean(t){return new this({type:"bool",value:t})}static hash(t){return new this({type:"hash",entries:t})}static set(t){return new this({type:"set",values:t})}static list(t){return new this({type:"list",values:t})}static nop(){return new this({type:"nop"})}static nil(){return new this({type:"nil"})}static isNop(t){return t instanceof e&&t.internalType.type==="nop"}static isNil(t){return t instanceof e&&t.internalType.type==="nil"}write(t){switch(this.internalType.type){case"str":{let r=this.internalType.value.replaceAll(`\r
|
|
4492
|
+
`)))return`${n} if ${i}`}};function WJl(e){return e instanceof VK||e instanceof UK||e instanceof LK||e instanceof vCt||e instanceof FKt}function HJl(e,t){return e.toString({customConfig:t.customConfig,formatter:t.formatter}).replace(/\n+$/,"")}var V_e=class extends Uf{classReference;arguments_;constructor({classReference:t,arguments_:r}){super(),this.classReference=t,this.arguments_=r}write(t){t.writeNode(this.classReference),t.write("."),t.write("new"),this.arguments_.length!==0&&(t.write("("),this.arguments_.length>1?(t.indent(),t.newLine(),this.arguments_.forEach((r,n)=>{n>0&&(t.write(","),t.newLine()),r.write(t)}),t.newLine(),t.dedent()):this.arguments_.forEach((r,n)=>{n>0&&t.write(", "),r.write(t)}),t.write(")"))}};var __e=class extends Uf{arg;constructor(t){super(),this.arg=t}write(t){return new Wb(this.arg).write(t)}};var q_e=class extends Uf{name;value;constructor({name:t,value:r}){super(),this.name=t,this.value=r}write(t){t.write(`${this.name}: `),this.value.write(t)}};var BN=class extends Uf{name;type;optional;docs;constructor({name:t,type:r,optional:n,docs:i}){super(),this.name=t,this.type=r??Ahe.untyped(),this.optional=n??!1,this.docs=i}};var G_e=class extends BN{initializer;constructor({name:t,type:r,initializer:n,optional:i}){super({name:t,type:r,optional:i}),this.initializer=n}write(t){t.write(`${this.name}:`),this.initializer&&(t.write(" "),t.writeNode(this.initializer))}writeTypeDefinition(t){this.optional&&t.write("?"),t.write(`${this.name}: `),this.type.writeTypeDefinition(t)}};var kKt=class extends BN{initializer;write(t){t.write(`**${this.name}`)}writeTypeDefinition(t){t.write("**"),this.type.writeTypeDefinition(t)}};Dt();var W_e=class extends Uf{on;method;arguments_;keywordArguments;block;constructor({on:t,method:r,arguments_:n,keywordArguments:i,block:o}){super(),this.on=t,this.method=r,this.arguments_=n,this.keywordArguments=i,this.block=o}write(t){this.on.write(t),t.write("."),t.write(this.method);let r=[];for(let n of this.arguments_)r.push({kind:"positional",node:n});for(let n of this.keywordArguments||[])r.push({kind:"keyword",arg:n});if(!(r.length===0&&this.block==null)&&(t.write("("),r.length>1?(t.indent(),t.newLine(),r.forEach((n,i)=>{i>0&&(t.write(","),t.newLine()),KJl(t,n)}),t.newLine(),t.dedent()):r.forEach((n,i)=>{i>0&&t.write(", "),KJl(t,n)}),t.write(")"),this.block)){let[n,i]=this.block;t.write(" do"),n.length>0&&(t.write(" |"),n.forEach((o,s)=>{s>0&&t.write(", "),t.write(o)}),t.write("|")),t.newLine(),t.indent();for(let o of i)o.write(t),t.writeNewLineIfLastLineNot();t.dedent(),t.write("end")}}};function KJl(e,t){switch(t.kind){case"positional":t.node.write(e);break;case"keyword":t.arg.write(e);break;default:Ie(t)}}var NKt=class extends Uf{value;constructor({value:t}){super(),this.value=t}write(t){this.value.write(t)}};var jKt=class extends BN{initializer;constructor({name:t,type:r,optional:n,initializer:i}){super({name:t,type:r,optional:n}),this.initializer=i}write(t){t.write(this.name),this.initializer&&t.write(` = ${this.initializer.write(t)}`)}writeTypeDefinition(t){this.optional&&t.write("?"),this.type.writeTypeDefinition(t)}};var QKt=class extends BN{write(t){t.write(`*${this.name}`)}writeTypeDefinition(t){t.write("*"),this.type.writeTypeDefinition(t)}};Dt();var xCt=class e extends Uf{internalType;constructor(t){super(),this.internalType=t}getDedupKey(){switch(this.internalType.type){case"str":return`str:${this.internalType.value}`;case"interpolatedStr":return`istr:${this.internalType.value}`;case"int":return`int:${this.internalType.value}`;case"float":return`float:${this.internalType.value}`;case"bool":return`bool:${this.internalType.value}`;case"nil":return"nil";default:return}}static string(t){return new this({type:"str",value:t})}static interpolatedString(t){return new this({type:"interpolatedStr",value:t})}static integer(t){return new this({type:"int",value:t})}static float(t){return new this({type:"float",value:t})}static boolean(t){return new this({type:"bool",value:t})}static hash(t){return new this({type:"hash",entries:t})}static set(t){return new this({type:"set",values:t})}static list(t){return new this({type:"list",values:t})}static nop(){return new this({type:"nop"})}static nil(){return new this({type:"nil"})}static unknown(t){return new this({type:"unknown",value:t})}static isNop(t){return t instanceof e&&t.internalType.type==="nop"}static isNil(t){return t instanceof e&&t.internalType.type==="nil"}write(t){switch(this.internalType.type){case"str":{let r=this.internalType.value.replaceAll(`\r
|
|
4493
4493
|
`,`
|
|
4494
4494
|
`);t.write(`"${r.replaceAll("\\","\\\\").replaceAll('"','\\"').replace(/#(?=[{$@])/g,"\\#")}"`);break}case"interpolatedStr":{let r=this.internalType.value.replaceAll(`\r
|
|
4495
4495
|
`,`
|
|
4496
4496
|
`);t.write(`"${r.replaceAll("\\","\\\\").replaceAll('"','\\"')}"`);break}case"int":{t.write(this.internalType.value.toString());break}case"float":{t.write(this.internalType.value.toString());break}case"bool":{t.write(this.internalType.value?"true":"false");break}case"hash":{let r=this.internalType.entries.filter(o=>!e.isNop(o.key)&&!e.isNop(o.value)),n=new Map;r.forEach((o,s)=>{let a=JJl(o.key);a!=null&&n.set(a,s)});let i=r.filter((o,s)=>{let a=JJl(o.key);return a==null?!0:n.get(a)===s});if(i.length===0){t.write("{}");break}t.write(`{
|
|
4497
4497
|
`),i.forEach((o,s)=>{s>0&&t.writeLine(","),t.indent();let a=!1;if(o.key instanceof e&&o.key.internalType.type==="str"){let c=o.key.internalType.value;/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c)&&(t.write(`${c}:`),a=!0)}a||(o.key.write(t),t.write(" =>")),t.write(" "),o.value.write(t),t.dedent()}),t.write(`
|
|
4498
|
-
}`);break}case"set":{let r=this.internalType.values.filter(n=>!e.isNop(n));if(r.length===0){t.write("Set.new([])");break}t.write("Set.new(["),r.forEach((n,i)=>{i>0&&t.write(", "),n.write(t)}),t.write("])");break}case"list":{let r=this.internalType.values.filter(n=>!e.isNop(n));if(r.length===0){t.write("[]");break}if(r.length>=2&&r.every(n=>n instanceof e&&n.internalType.type==="str"&&!/[\s\\[\]]/.test(n.internalType.value))){let n=r.map(i=>i.internalType.value);t.write(`%w[${n.join(" ")}]`);break}t.write("["),r.forEach((n,i)=>{i>0&&t.write(", "),n.write(t)}),t.write("]");break}case"nop":break;case"nil":t.write("nil");break;default:Ie(this.internalType)}}};function JJl(e){if(e instanceof xCt)return e.getDedupKey()}var hgi;(function(e){e[e.Invariant=0]="Invariant",e.Covariant="out",e.Contravariant="in"})(hgi||(hgi={}));var H_e=class extends Uf{name;unchecked;bound;variance;defaultType;constructor({name:t,unchecked:r,bound:n,variance:i,defaultType:o}){super(),this.name=t,this.unchecked=r??!1,this.bound=n,this.variance=i??hgi.Invariant,this.defaultType=o}write(t){}writeTypeDefinition(t){this.unchecked&&t.write("unchecked "),this.variance!=hgi.Invariant&&t.write(`${this.variance} `),t.write(this.name),this.bound&&(t.write(" < "),this.bound.writeTypeDefinition(t)),this.defaultType&&(t.write(" = "),this.defaultType.writeTypeDefinition(t))}};var zKt=class extends BN{initializer;write(t){t.write(`&${this.name}`)}};var ggi=class extends Uf{errorClass;message;constructor({errorClass:t,message:r}){super(),this.errorClass=t,this.message=r}write(t){t.write("raise"),this.errorClass&&(t.write(" "),this.errorClass.write(t)),this.message&&(this.errorClass&&t.write(", "),this.message.write(t))}};function Agi(e){return new __e(e)}function cFg(){return Agi("true")}function uFg(){return Agi("false")}function lFg(){return Agi("nil")}var pFg={positional(e){return new jKt(e)},keyword(e){return new G_e(e)},positionalSplat(e){return new QKt(e)},keywordSplat(e){return new kKt(e)},yield(e){return new zKt(e)}};function fFg(e){return new VK(e)}function dFg(e){return new UK(e)}function mFg(e){return new LK(e)}function hFg(e){return new MK(e)}function gFg(e){return new H_e(e)}function AFg(e){return new ghe(e)}function yFg(e){return new V_e(e)}function bFg(e){return new q_e(e)}function EFg(e){return new W_e(e)}function IFg(e){return new NKt(e)}function vFg(e){return new FKt(e)}function xFg(e){return new vCt(e)}function CFg(e){return new ggi(e)}function wFg(e,t){let r=e;for(let n of t.toReversed())n.addStatement(r),r=n;return r}Vi();Dt();var ygi=class e{context;constructor({context:t}){this.context=t}convert(t){if(t.value===null)return this.context.isNullable(t.typeReference)?Dn.TypeLiteral.nil():(this.context.errors.add({severity:Br.Critical,message:"Expected non-null value, but got null"}),Dn.TypeLiteral.nop());if(t.value===void 0)return Dn.TypeLiteral.nop();switch(t.typeReference.type){case"list":return this.convertList({list:t.typeReference.value,value:t.value});case"literal":return this.convertLiteral({literalType:t.typeReference.value,value:t.value});case"map":return this.convertMap({map:t.typeReference,value:t.value});case"named":{let r=this.context.resolveNamedType({typeId:t.typeReference.value});return r==null?Dn.TypeLiteral.nop():this.convertNamed({named:r,value:t.value,as:t.as})}case"optional":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as});case"nullable":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as});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});case"unknown":return Dn.TypeLiteral.nop();default:Ie(t.typeReference)}}convertLiteral({literalType:t,value:r}){switch(t.type){case"boolean":{let n=this.context.getValueAsBoolean({value:r});return n==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.boolean(n)}case"string":{let n=this.context.getValueAsString({value:r});return n==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(n)}default:Ie(t)}}convertList({list:t,value:r}){return Array.isArray(r)?Dn.TypeLiteral.list(r.map((n,i)=>{this.context.errors.scope({index:i});try{return this.convert({typeReference:t,value:n})}finally{this.context.errors.unscope()}})):(this.context.errors.add({severity:Br.Critical,message:`Expected array but got: ${typeof r}`}),Dn.TypeLiteral.nop())}convertSet({set:t,value:r}){return Array.isArray(r)?Dn.TypeLiteral.set(r.map((n,i)=>{this.context.errors.scope({index:i});try{return this.convert({typeReference:t,value:n})}finally{this.context.errors.unscope()}})):(this.context.errors.add({severity:Br.Critical,message:`Expected array but got: ${typeof r}`}),Dn.TypeLiteral.nop())}convertMap({map:t,value:r}){return typeof r!="object"||r==null?(this.context.errors.add({severity:Br.Critical,message:`Expected object but got: ${r==null?"null":typeof r}`}),Dn.TypeLiteral.nop()):Dn.TypeLiteral.hash(Object.entries(r).map(([n,i])=>{this.context.errors.scope(n);try{return{key:this.convert({typeReference:t.key,value:n,as:"key"}),value:this.convert({typeReference:t.value,value:i})}}finally{this.context.errors.unscope()}}))}convertNamed({named:t,value:r,as:n}){switch(t.type){case"alias":return this.convert({typeReference:t.typeReference,value:r,as:n});case"discriminatedUnion":return this.convertDiscriminatedUnion({discriminatedUnion:t,value:r});case"object":return this.convertObject({object:t,value:r});case"enum":return this.convertEnum({enum_:t,value:r});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r});default:Ie(t)}}convertDiscriminatedUnion({discriminatedUnion:t,value:r}){let n=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:t,value:r});if(n==null)return Dn.TypeLiteral.nop();let i=n.singleDiscriminatedUnionType,o=this.convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:n,unionVariant:i});return o==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.hash(o)}convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:t,unionVariant:r}){switch(r.type){case"samePropertiesAsObject":{let n=this.context.resolveNamedType({typeId:r.typeId});if(n==null)return;let i=this.convertNamed({named:n,value:t.value});return this.extractHashEntries(i)}case"singleProperty":try{this.context.errors.scope(r.discriminantValue.wireValue);let n=this.context.getRecord(t.value);return n==null?[{key:Dn.TypeLiteral.string(this.context.getPropertyName(r.discriminantValue.name)),value:this.convert({typeReference:r.typeReference,value:t.value})}]:[{key:Dn.TypeLiteral.string(this.context.getPropertyName(r.discriminantValue.name)),value:this.convert({typeReference:r.typeReference,value:n[r.discriminantValue.wireValue]})}]}finally{this.context.errors.unscope()}case"noProperties":return[];default:Ie(r)}}extractHashEntries(t){t instanceof Dn.TypeLiteral}convertEnum({enum_:t,value:r}){let n=this.getEnumValueName({enum_:t,value:r});return n==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(n)}getEnumValueName({enum_:t,value:r}){if(typeof r!="string"){this.context.errors.add({severity:Br.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:Br.Critical,message:`An enum value named "${r}" does not exist in this context`});return}return n.wireValue}convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r}){let n=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r});return n??Dn.TypeLiteral.nop()}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r}){for(let n of t.types){let i=this.context.clone(),s=new e({context:i}).convert({typeReference:n,value:r});if(i.errors.empty())return s}this.context.errors.add({severity:Br.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof r}" value`})}convertPrimitive({primitive:t,value:r,as:n}){switch(t){case"INTEGER":case"LONG":case"UINT":case"UINT_64":{let i=this.getValueAsNumber({value:r,as:n});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.integer(i)}case"FLOAT":case"DOUBLE":{let i=this.getValueAsNumber({value:r});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.float(i)}case"BOOLEAN":{let i=this.getValueAsBoolean({value:r,as:n});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.boolean(i)}case"BASE_64":case"BIG_INTEGER":case"STRING":{let i=this.context.getValueAsString({value:r});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(i)}case"UUID":{let i=this.context.getValueAsString({value:r});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(i)}case"DATE":{let i=this.context.getValueAsString({value:r});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(i)}case"DATE_TIME":case"DATE_TIME_RFC_2822":{let i=this.context.getValueAsString({value:r});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(i)}default:Ie(t)}}convertObject({object:t,value:r}){if(typeof r!="object"||r==null)return this.context.errors.add({severity:Br.Critical,message:`Expected object but got: ${r==null?"null":typeof r}`}),Dn.TypeLiteral.nop();let n=this.convertObjectEntries({object:t,value:r});return Dn.TypeLiteral.hash(n)}convertObjectEntries({object:t,value:r}){let n=typeof r=="object"&&r!=null?r:{},i=new Set(Object.keys(n)),o=[];for(let[s,a]of Object.entries(n)){this.context.errors.scope(s);let c=t.properties.find(d=>d.name.wireValue===s),u=c?.typeReference??{type:"unknown"},l=c?.name.name.snakeCase.safeName??s,p=this.convert({typeReference:u,value:a});Dn.TypeLiteral.isNop(p)||o.push({key:Dn.TypeLiteral.string(l),value:p}),this.context.errors.unscope()}for(let s of t.properties){if(i.has(s.name.wireValue)||this.context.isOptional(s.typeReference)||this.context.isNullable(s.typeReference))continue;let a=this.synthesizeDefaultValue(s.typeReference);Dn.TypeLiteral.isNop(a)||o.push({key:Dn.TypeLiteral.string(s.name.name.snakeCase.safeName),value:a})}return o.filter(s=>!Dn.TypeLiteral.isNop(s.value))}synthesizeDefaultValue(t,r=new Set){switch(t.type){case"optional":case"nullable":return Dn.TypeLiteral.nop();case"primitive":return this.synthesizeDefaultPrimitive(t.value);case"literal":return this.synthesizeDefaultLiteral(t.value);case"list":return Dn.TypeLiteral.list([]);case"set":return Dn.TypeLiteral.list([]);case"map":return Dn.TypeLiteral.hash([]);case"named":{if(r.has(t.value))return Dn.TypeLiteral.nop();let n=this.context.resolveNamedType({typeId:t.value});return n==null?Dn.TypeLiteral.nop():this.synthesizeDefaultNamed({named:n,typeId:t.value,seen:r})}case"unknown":return Dn.TypeLiteral.nop();default:Ie(t)}}synthesizeDefaultPrimitive(t){switch(t){case"STRING":case"BASE_64":case"BIG_INTEGER":return Dn.TypeLiteral.string("string");case"INTEGER":case"LONG":case"UINT":case"UINT_64":return Dn.TypeLiteral.integer(1);case"FLOAT":case"DOUBLE":return Dn.TypeLiteral.float(1.1);case"BOOLEAN":return Dn.TypeLiteral.boolean(!0);case"DATE":return Dn.TypeLiteral.string("2024-01-15");case"DATE_TIME":case"DATE_TIME_RFC_2822":return Dn.TypeLiteral.string("2024-01-15T09:30:00Z");case"UUID":return Dn.TypeLiteral.string("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32");default:Ie(t)}}synthesizeDefaultLiteral(t){switch(t.type){case"boolean":return Dn.TypeLiteral.boolean(t.value);case"string":return Dn.TypeLiteral.string(t.value);default:Ie(t)}}synthesizeDefaultNamed({named:t,typeId:r,seen:n}){let i=new Set(n);switch(i.add(r),t.type){case"alias":return this.synthesizeDefaultValue(t.typeReference,i);case"enum":{let o=t.values[0];return o==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(o.wireValue)}case"object":{let o=[];for(let s of t.properties){if(this.context.isOptional(s.typeReference)||this.context.isNullable(s.typeReference))continue;let a=this.synthesizeDefaultValue(s.typeReference,i);Dn.TypeLiteral.isNop(a)||o.push({key:Dn.TypeLiteral.string(s.name.name.snakeCase.safeName),value:a})}return Dn.TypeLiteral.hash(o)}case"discriminatedUnion":case"undiscriminatedUnion":return Dn.TypeLiteral.nop();default:Ie(t)}}getValueAsNumber({value:t,as:r}){let n=r==="key"&&typeof t=="string"?Number(t):t;return this.context.getValueAsNumber({value:n})}getValueAsBoolean({value:t,as:r}){let n=r==="key"?typeof t=="string"?t==="true":!!t:t;return this.context.getValueAsBoolean({value:n})}};var bgi=class e extends fx{ir;customConfig;dynamicTypeLiteralMapper;constructor({ir:t,config:r}){super({ir:t,config:r}),this.ir=t,this.customConfig=r.customConfig!=null?r.customConfig:void 0,this.dynamicTypeLiteralMapper=new ygi({context:this})}clone(){return new e({ir:this.ir,config:this.config})}getRootClientClassReference(){return Dn.classReference({name:this.getRootClientClassName(),modules:[this.getRootModuleName()]})}getRootClientClassName(){return this.customConfig?.clientModuleName??"Client"}getRootModuleName(){return ku(this.customConfig?.moduleName??this.config.organization)}isSingleEnvironmentID(t){return typeof t=="string"}isMultiEnvironmentValues(t){return typeof t=="object"}getEnvironmentTypeReferenceFromID(t){let r=this.resolveEnvironmentName(t);if(r!=null)return Dn.codeblock(n=>{n.writeNode(this.getEnvironmentClassReference()),n.write("::"),n.write(this.getEnumName(r))})}getEnvironmentClassReference(){return Dn.classReference({name:"Environment",modules:[this.getRootModuleName()]})}getEnumName(t){return this.getName(t.screamingSnakeCase.safeName)}getMethodName(t){return this.getName(t.snakeCase.safeName)}getPropertyName(t){return this.getName(t.snakeCase.safeName)}getName(t){return t}};Dt();var YJl="client",SFg="@client",Egi=class{context;formatter;constructor({context:t,formatter:r}){this.context=t,this.formatter=r}async generateSnippet({endpoint:t,request:r}){return await this.buildCodeBlock({endpoint:t,snippet:r}).toStringAsync({customConfig:this.context.customConfig??{},formatter:this.formatter})}generateSnippetSync({endpoint:t,request:r}){return this.buildCodeBlock({endpoint:t,snippet:r}).toString({customConfig:this.context.customConfig??{},formatter:this.formatter})}async generateSnippetAst({endpoint:t,request:r,options:n}){return n?.skipClientInstantiation?this.buildCodeBlockWithoutClient({endpoint:t,snippet:r}):this.buildCodeBlock({endpoint:t,snippet:r})}buildCodeBlock({endpoint:t,snippet:r}){return Dn.codeblock(n=>{n.writeNodeStatement(this.constructClient({endpoint:t,snippet:r})),n.newLine(),n.writeNodeStatement(this.callMethod({endpoint:t,snippet:r}))})}buildCodeBlockWithoutClient({endpoint:t,snippet:r}){return Dn.codeblock(n=>{n.writeNodeStatement(this.callMethodOnExistingClient({endpoint:t,snippet:r}))})}constructClient({endpoint:t,snippet:r}){return Dn.codeblock(n=>{n.addRequire(this.context.getRootModuleName().toLowerCase());let i=this.context.getRootClientClassReference(),o=this.getRootClientBuilderArgs({endpoint:t,snippet:r});n.write(`${YJl} = `),n.writeNode(Dn.instantiateClass({classReference:i,arguments_:o}))})}getRootClientBaseUrlArg({baseUrl:t,environment:r}){if(t!=null&&r!=null)return this.context.errors.add({severity:"CRITICAL",message:"Cannot specify both baseUrl and environment options"}),[];if(t!=null)return[Dn.keywordArgument({name:"base_url",value:Dn.TypeLiteral.string(t)})];if(r!=null){if(this.context.isSingleEnvironmentID(r)){let n=this.context.getEnvironmentTypeReferenceFromID(r);return n==null?(this.context.errors.add({severity:"CRITICAL",message:`Environment ID ${r} not found`}),[]):[Dn.keywordArgument({name:"environment",value:n})]}if(this.context.isMultiEnvironmentValues(r))return this.context.errors.add({severity:"CRITICAL",message:"Multi-environment values are not supported in Ruby snippets yet"}),[]}return[]}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[];default:Ie(t)}}addError(t){this.context.errors.add({severity:Br.Critical,message:t})}addWarning(t){this.context.errors.add({severity:Br.Warning,message:t})}getRootClientBasicAuthArgs({auth:t,values:r}){let n=t,i=!!n.usernameOmit,o=!!n.passwordOmit,s=[];return i||s.push(Dn.keywordArgument({name:t.username.snakeCase.safeName,value:Dn.TypeLiteral.string(r.username)})),o||s.push(Dn.keywordArgument({name:t.password.snakeCase.safeName,value:Dn.TypeLiteral.string(r.password)})),s}getRootClientBearerAuthArgs({auth:t,values:r}){return[Dn.keywordArgument({name:t.token.snakeCase.safeName,value:Dn.TypeLiteral.string(r.token)})]}getRootClientHeaderAuthArgs({auth:t,values:r}){return[Dn.keywordArgument({name:t.header.name.name.snakeCase.safeName,value:Dn.TypeLiteral.string(r.value)})]}getRootClientOAuthArgs({auth:t,values:r}){return[Dn.keywordArgument({name:t.clientId.snakeCase.safeName,value:Dn.TypeLiteral.string(r.clientId)}),Dn.keywordArgument({name:t.clientSecret.snakeCase.safeName,value:Dn.TypeLiteral.string(r.clientSecret)})]}getRootClientHeaderArgs({headers:t,values:r}){let n=[];for(let i of t){let o=r[i.name.wireValue];o!=null&&typeof o=="string"&&n.push(Dn.keywordArgument({name:i.name.name.snakeCase.safeName,value:Dn.TypeLiteral.string(o)}))}return n}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:"WARNING",message:`Auth with ${t.auth.type} configuration is required for this endpoint`}));let i=this.getRootClientBaseUrlArg({baseUrl:r.baseURL,environment:r.environment});return i.length>0&&n.push(...i),this.context.errors.scope("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(),n}callMethod({endpoint:t,snippet:r}){let n={on:Dn.codeblock(YJl),method:this.getMethod({endpoint:t}),arguments_:[]};switch(t.request.type){case"inlined":n.keywordArguments=this.getMethodArgsForInlinedRequest({request:t.request,snippet:r});break;case"body":n.keywordArguments=this.getMethodArgsForBodyRequest({request:t.request,snippet:r});break;default:Ie(t.request)}let i=this.getRequestOptions({endpoint:t,snippet:r});return i!=null&&(n.keywordArguments=n.keywordArguments??[],n.keywordArguments.push(i)),n.keywordArguments=XJl(n.keywordArguments),Dn.invokeMethod(n)}callMethodOnExistingClient({endpoint:t,snippet:r}){let n={on:Dn.codeblock(SFg),method:this.getMethod({endpoint:t}),arguments_:[]};switch(t.request.type){case"inlined":n.keywordArguments=this.getMethodArgsForInlinedRequest({request:t.request,snippet:r});break;case"body":n.keywordArguments=this.getMethodArgsForBodyRequest({request:t.request,snippet:r});break;default:Ie(t.request)}let i=this.getRequestOptions({endpoint:t,snippet:r});return i!=null&&(n.keywordArguments=n.keywordArguments??[],n.keywordArguments.push(i)),n.keywordArguments=XJl(n.keywordArguments),Dn.invokeMethod(n)}getRequestOptions({endpoint:t,snippet:r}){let n=r.headers??{},i=Object.entries(n);if(i.length===0)return;let o=new Set;if(this.context.ir.headers!=null)for(let c of this.context.ir.headers)o.add(c.name.wireValue.toLowerCase());if(t.request.type==="inlined"&&t.request.headers!=null)for(let c of t.request.headers)o.add(c.name.wireValue.toLowerCase());let s=i.filter(([c])=>!o.has(c.toLowerCase()));if(s.length===0)return;let a=s.map(([c,u])=>({key:Dn.TypeLiteral.string(c),value:Dn.TypeLiteral.string(String(u))}));return Dn.keywordArgument({name:"request_options",value:Dn.TypeLiteral.hash([{key:Dn.TypeLiteral.string("additional_headers"),value:Dn.TypeLiteral.hash(a)}])})}getMethodArgsForInlinedRequest({request:t,snippet:r}){let n=[],i=[...this.context.ir.pathParameters??[],...t.pathParameters??[]];if(n.push(...this.getNamedParameterArgs({kind:"PathParameters",namedParameters:i,values:r.pathParameters})),n.push(...this.getNamedParameterArgs({kind:"QueryParameters",namedParameters:t.queryParameters,values:r.queryParameters})),n.push(...this.getNamedParameterArgs({kind:"Headers",namedParameters:t.headers,values:r.headers})),t.body!=null&&r.requestBody!=null)switch(t.body.type){case"properties":n.push(...this.getMethodArgsForPropertiesRequest({request:t.body,snippet:r}));break;case"referenced":{let o=t.body.bodyType;if(o.type==="typeReference"){let s=o.value;if(s.type==="named"){let a=this.context.resolveNamedType({typeId:s.value});if(a!=null&&a.type==="object"){let c=this.context.getRecord(r.requestBody);if(c!=null){let u=this.getBodyFieldsAsKeywordArgs({namedType:a,bodyRecord:c});n.push(...u)}}else if(a!=null){let c=this.getBodyArgsForNonObjectType({namedType:a,typeRef:s,bodyValue:r.requestBody});n.push(...c)}}else{let a=this.context.dynamicTypeLiteralMapper.convert({typeReference:s,value:r.requestBody});Dn.TypeLiteral.isNop(a)||n.push(Dn.keywordArgument({name:t.body.bodyKey.snakeCase.safeName,value:a}))}}break}case"fileUpload":break;default:Ie(t.body)}return n}getNamedParameterArgs({kind:t,namedParameters:r,values:n}){let i=[];if(this.context.errors.scope(t),r!=null){let o=this.context.associateByWireValue({parameters:r,values:n??{},ignoreMissingParameters:!0});for(let s of o){let a=this.context.dynamicTypeLiteralMapper.convert(s);Dn.TypeLiteral.isNop(a)||i.push(Dn.keywordArgument({name:this.context.getPropertyName(s.name.name),value:a}))}}return this.context.errors.unscope(),i}getMethodArgsForPropertiesRequest({request:t,snippet:r}){let n=[],i=this.context.getRecord(r.requestBody)??{},o=this.context.associateByWireValue({parameters:t.value,values:i});for(let s of o){let a=this.context.dynamicTypeLiteralMapper.convert(s);Dn.TypeLiteral.isNop(a)||n.push(Dn.keywordArgument({name:this.context.getPropertyName(s.name.name),value:a}))}return n}getMethodArgsForBodyRequest({request:t,snippet:r}){let n=[],i=[...this.context.ir.pathParameters??[],...t.pathParameters??[]];if(n.push(...this.getNamedParameterArgs({kind:"PathParameters",namedParameters:i,values:r.pathParameters})),t.body!=null&&r.requestBody!=null)switch(t.body.type){case"bytes":this.context.errors.add({severity:"CRITICAL",message:"Bytes request body is not supported in Ruby snippets yet"});break;case"typeReference":{let o=t.body.value;if(o.type==="named"){let s=this.context.resolveNamedType({typeId:o.value});if(s!=null&&s.type==="object"){let a=this.context.getRecord(r.requestBody);if(a!=null){let c=this.getBodyFieldsAsKeywordArgs({namedType:s,bodyRecord:a});n.push(...c)}}else if(s!=null){let a=this.getBodyArgsForNonObjectType({namedType:s,typeRef:o,bodyValue:r.requestBody});n.push(...a)}}else{let s=this.context.dynamicTypeLiteralMapper.convert({typeReference:o,value:r.requestBody});Dn.TypeLiteral.isNop(s)||n.push(Dn.keywordArgument({name:"request",value:s}))}break}default:Ie(t.body)}return n}getBodyArgsForNonObjectType({namedType:t,typeRef:r,bodyValue:n}){let i=[];switch(t.type){case"undiscriminatedUnion":{let o=this.context.getRecord(n);if(o!=null){for(let a of t.types)if(a.type==="named"){let c=this.context.resolveNamedType({typeId:a.value});if(c!=null&&c.type==="object"){let u=new Set(c.properties.map(d=>d.name.wireValue)),l=Object.keys(o);if(l.every(d=>u.has(d))&&l.length>0){let d=this.getBodyFieldsAsKeywordArgs({namedType:c,bodyRecord:o});return i.push(...d),i}}}}let s=this.context.dynamicTypeLiteralMapper.convert({typeReference:r,value:n});Dn.TypeLiteral.isNop(s)||i.push(Dn.keywordArgument({name:"request",value:s}));break}case"alias":{let o=t.typeReference;if(o.type==="named"){let a=this.context.resolveNamedType({typeId:o.value});if(a!=null&&a.type==="object"){let c=this.context.getRecord(n);if(c!=null){let u=this.getBodyFieldsAsKeywordArgs({namedType:a,bodyRecord:c});return i.push(...u),i}}}let s=this.context.dynamicTypeLiteralMapper.convert({typeReference:r,value:n});Dn.TypeLiteral.isNop(s)||i.push(Dn.keywordArgument({name:"request",value:s}));break}case"discriminatedUnion":case"enum":{let o=this.context.dynamicTypeLiteralMapper.convert({typeReference:r,value:n});Dn.TypeLiteral.isNop(o)||i.push(Dn.keywordArgument({name:"request",value:o}));break}case"object":break;default:Ie(t)}return i}getBodyFieldsAsKeywordArgs({namedType:t,bodyRecord:r}){let n=[];switch(t.type){case"object":{for(let i of t.properties){let o=i.name.wireValue,s=r[o];if(s!==void 0){this.context.errors.scope(o);let a=this.context.dynamicTypeLiteralMapper.convert({typeReference:i.typeReference,value:s});this.context.errors.unscope(),Dn.TypeLiteral.isNop(a)||n.push(Dn.keywordArgument({name:this.context.getPropertyName(i.name.name),value:a}))}}break}case"alias":case"discriminatedUnion":case"undiscriminatedUnion":case"enum":break;default:Ie(t)}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)}};function XJl(e){if(e==null||e.length<=1)return e;let t=new Map;e.forEach((n,i)=>{t.set(n.name,i)});let r=e.filter((n,i)=>t.get(n.name)===i);if(r.length!==e.length){let n=Array.from(new Set(e.map(i=>i.name).filter((i,o)=>t.get(i)!==o)));console.warn(`[ruby-v2 dynamic-snippets] duplicate keyword argument name(s) [${n.join(", ")}] in a generated snippet; keeping last occurrence to match **params runtime behavior. This indicates a latent name collision in the Ruby SDK method signature that should be disambiguated at the generator level.`)}return r}var MKt=class extends px{formatter;constructor({ir:t,config:r,formatter:n}){super(new bgi({ir:t,config:r})),this.formatter=n}async generate(t,r={}){return super.generate(t,r)}generateSync(t){return super.generateSync(t)}async generateSnippetAst(t,r){return super.generateSnippetAst(t,r)}createSnippetGenerator(t){return new Egi({context:t,formatter:this.formatter})}};var vgi=require("fs/promises"),ZJl=be(require("path"),1);var Igi=class{context;ir;generatorConfig;dynamicSnippetsGenerator;constructor(t,r,n){this.context=t,this.ir=r,this.generatorConfig=n,this.dynamicSnippetsGenerator=new MKt({ir:$T(this.ir),config:this.generatorConfig})}async generateTests({outputDir:t,requests:r}){this.context.logger.debug("Generating dynamic snippet tests...");for(let[n,{endpointId:i,request:o}]of r.entries())try{let s=ZT(o);if(s==null)continue;let a=await this.dynamicSnippetsGenerator.generate(s,{endpointId:i}),c=this.getTestFilePath({outputDir:t,idx:n});await(0,vgi.mkdir)(ZJl.default.dirname(c),{recursive:!0}),await(0,vgi.writeFile)(c,a.snippet)}catch(s){this.context.logger.error(`Failed to generate dynamic snippet for endpoint ${JSON.stringify(o.endpoint)}: ${s}`),s instanceof Error&&s.stack&&this.context.logger.error(s.stack)}this.context.logger.debug("Done generating dynamic snippet tests")}getTestFilePath({outputDir:t,idx:r}){return Ge(t,Se.of(`dynamic-snippets/example${r}/snippet.rb`))}};var qKt=require("fs/promises"),bYl=be(require("path"),1);Zt();var IBs=new Set(["as","break","const","continue","crate","else","enum","extern","false","fn","for","if","impl","in","let","loop","match","mod","move","mut","pub","ref","return","self","Self","static","struct","super","trait","true","type","unsafe","use","where","while","abstract","async","await","become","box","do","dyn","final","macro","override","priv","try","typeof","unsized","virtual","yield"]);var $Jl=new Set(["Box","Option","Result","Vec","HashMap","HashSet","String","str","i8","i16","i32","i64","i128","u8","u16","u32","u64","u128","f32","f64","bool","char","usize","isize"]);Dt();var CCt="filename_id:",wCt="typename_id:",TFg="clientname_id:",LKt=class e{static reservedFilenames=["lib","mod","main","test","prelude","error","environment","client","config","core"];static create(){return new e(e.reservedFilenames)}filenameRegistry;typenameRegistry;clientNameRegistry;constructor(t){this.filenameRegistry=new yS({reservedSymbolNames:t,conflictResolutionStrategy:"underscore-suffix"}),this.typenameRegistry=new yS({reservedSymbolNames:[],conflictResolutionStrategy:"numbered-suffix"}),this.clientNameRegistry=new yS({reservedSymbolNames:[],conflictResolutionStrategy:"numbered-suffix"})}registerSchemaTypeFilename(t,r){return this.filenameRegistry.registerSymbol(this.getSchemaTypeFilenameId(t),[r,`${r}_type`,`${r}_model`])}registerSchemaTypeTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getSchemaTypeTypeNameId(t),[r])}registerInlineRequestFilename(t,r){return this.filenameRegistry.registerSymbol(this.getInlineRequestFilenameId(t),[r,`${r}_request`,`${r}_body`])}registerQueryRequestFilename(t,r){return this.filenameRegistry.registerSymbol(this.getQueryRequestFilenameId(t),[r,`${r}_query`,`${r}_params`])}registerInlineRequestTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getInlineRequestTypeNameId(t),[r])}registerQueryRequestTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getQueryRequestTypeNameId(t),[r])}registerFileUploadRequestFilename(t,r){return this.filenameRegistry.registerSymbol(this.getFileUploadRequestFilenameId(t),[r,`${r}_upload`,`${r}_file_request`])}registerFileUploadRequestTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getFileUploadRequestTypeNameId(t),[r])}registerReferencedRequestWithQueryFilename(t,r){return this.filenameRegistry.registerSymbol(this.getReferencedRequestWithQueryFilenameId(t),[r,`${r}_request`,`${r}_with_query`])}registerReferencedRequestWithQueryTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getReferencedRequestWithQueryTypeNameId(t),[r])}registerBytesRequestFilename(t,r){return this.filenameRegistry.registerSymbol(this.getBytesRequestFilenameId(t),[r,`${r}_request`,`${r}_bytes`])}registerBytesRequestTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getBytesRequestTypeNameId(t),[r])}registerClientName(t,r){return this.clientNameRegistry.registerSymbol(this.getClientNameId(t),[r])}getSchemaTypeFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getSchemaTypeFilenameId(t));return vA(r,`Filename not found for type ${t}`),`${r}.rs`}getInlineRequestFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getInlineRequestFilenameId(t));return vA(r,`Filename not found for inline request ${t}`),`${r}.rs`}getQueryRequestFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getQueryRequestFilenameId(t));return vA(r,`Filename not found for query request ${t}`),`${r}.rs`}getInlineRequestTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getInlineRequestTypeNameId(t));return vA(r,`Type name not found for inline request ${t}`),r}getQueryRequestTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getQueryRequestTypeNameId(t));return vA(r,`Type name not found for query request ${t}`),r}getFileUploadRequestFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getFileUploadRequestFilenameId(t));return vA(r,`Filename not found for file upload request ${t}`),`${r}.rs`}getFileUploadRequestTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getFileUploadRequestTypeNameId(t));return vA(r,`Type name not found for file upload request ${t}`),r}getSchemaTypeTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getSchemaTypeTypeNameId(t));return vA(r,`Type name not found for schema type ${t}`),r}getClientNameOrThrow(t){let r=this.clientNameRegistry.getSymbolNameById(this.getClientNameId(t));return vA(r,`Client name not found for client ${t}`),r}getClientNameOrUndefined(t){return this.clientNameRegistry.getSymbolNameById(this.getClientNameId(t))}getReferencedRequestWithQueryFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getReferencedRequestWithQueryFilenameId(t));return vA(r,`Filename not found for referenced request with query ${t}`),`${r}.rs`}getReferencedRequestWithQueryTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getReferencedRequestWithQueryTypeNameId(t));return vA(r,`Type name not found for referenced request with query ${t}`),r}getBytesRequestFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getBytesRequestFilenameId(t));return vA(r,`Filename not found for bytes request ${t}`),`${r}.rs`}getBytesRequestTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getBytesRequestTypeNameId(t));return vA(r,`Type name not found for bytes request ${t}`),r}getSchemaTypeFilenameId(t){return`${CCt}schema_type_${t}`}getInlineRequestFilenameId(t){return`${CCt}inline_request_${t}`}getQueryRequestFilenameId(t){return`${CCt}query_request_${t}`}getInlineRequestTypeNameId(t){return`${wCt}inline_request_${t}`}getQueryRequestTypeNameId(t){return`${wCt}query_request_${t}`}getFileUploadRequestFilenameId(t){return`${CCt}file_upload_request_${t}`}getFileUploadRequestTypeNameId(t){return`${wCt}file_upload_request_${t}`}getSchemaTypeTypeNameId(t){return`${wCt}schema_type_${t}`}getClientNameId(t){return`${TFg}${t}`}getReferencedRequestWithQueryFilenameId(t){return`${CCt}referenced_request_with_query_${t}`}getReferencedRequestWithQueryTypeNameId(t){return`${wCt}referenced_request_with_query_${t}`}getBytesRequestFilenameId(t){return`${CCt}bytes_request_${t}`}getBytesRequestTypeNameId(t){return`${wCt}bytes_request_${t}`}};Vi();function eYl(e){return e.charAt(0).toUpperCase()+$n(e).slice(1)}function vBs(e){return/^[0-9]/.test(e)?`_${e}`:IBs.has(e)?`r#${e}`:e}function tYl(e){return $Jl.has(e)?`r#${e}`:e}function xgi(e){return IBs.has(e)?`${e}_`:e}function rYl(e){let t=e.toLowerCase().replace(/[^a-z0-9_-]/g,"_").replace(/^[0-9]/,"_$&");return t=t.replace(/[_-]+/g,"_"),t=t.replace(/^_+|_+$/g,""),t||(t="rust_sdk"),t}function nYl(e,t){return`${e}_${t}`.toLowerCase()}var Cgi=require("child_process");function xBs(e,t){try{let r=(0,Cgi.spawnSync)("rustfmt",["--edition=2021"],{input:e,encoding:"utf8",timeout:5e3});if(r.status===0&&r.stdout)return t?.debug("rustfmt snippet formatting successful"),r.stdout;t?.debug(`rustfmt snippet formatting failed with status ${r.status}`)}catch(r){t?.debug(`rustfmt snippet formatting error: ${r}`)}return e}async function CBs(e,t){return new Promise(r=>{let n=(0,Cgi.spawn)("rustfmt",["--edition=2021"],{stdio:"pipe"});n.stdin.write(e),n.stdin.end();let i="";n.stdout.on("data",o=>{i+=o.toString()}),n.on("close",o=>{o===0&&i?(t?.debug("rustfmt async snippet formatting successful"),r(i)):(t?.debug(`rustfmt async snippet formatting failed with exit code ${o}`),r(e))}),n.on("error",o=>{t?.debug(`rustfmt async snippet formatting error: ${o.message}`),r(e)})})}var Jq=class{content=[];indentLevel=0;needsIndent=!0;write(t){this.needsIndent&&t.length>0&&(this.content.push(" ".repeat(this.indentLevel)),this.needsIndent=!1),this.content.push(t)}writeLine(t=""){this.write(t),this.newLine()}newLine(){this.content.push(`
|
|
4498
|
+
}`);break}case"set":{let r=this.internalType.values.filter(n=>!e.isNop(n));if(r.length===0){t.write("Set.new([])");break}t.write("Set.new(["),r.forEach((n,i)=>{i>0&&t.write(", "),n.write(t)}),t.write("])");break}case"list":{let r=this.internalType.values.filter(n=>!e.isNop(n));if(r.length===0){t.write("[]");break}if(r.length>=2&&r.every(n=>n instanceof e&&n.internalType.type==="str"&&!/[\s\\[\]]/.test(n.internalType.value))){let n=r.map(i=>i.internalType.value);t.write(`%w[${n.join(" ")}]`);break}t.write("["),r.forEach((n,i)=>{i>0&&t.write(", "),n.write(t)}),t.write("]");break}case"nop":break;case"nil":t.write("nil");break;case"unknown":this.writeUnknown({writer:t,value:this.internalType.value});break;default:Ie(this.internalType)}}writeUnknown({writer:t,value:r}){switch(typeof r){case"boolean":t.write(r?"true":"false");return;case"string":e.string(r).write(t);return;case"number":t.write(r.toString());return;case"object":if(r==null){t.write("nil");return}if(Array.isArray(r)){this.writeUnknownArray({writer:t,value:r});return}this.writeUnknownObject({writer:t,value:r});return;default:t.write("nil");return}}writeUnknownArray({writer:t,value:r}){if(r.length===0){t.write("[]");return}if(r.length>=2&&r.every(n=>typeof n=="string"&&!/[\s\\[\]]/.test(n))){t.write(`%w[${r.join(" ")}]`);return}t.write("["),r.forEach((n,i)=>{i>0&&t.write(", "),e.unknown(n).write(t)}),t.write("]")}writeUnknownObject({writer:t,value:r}){let n=Object.entries(r);if(n.length===0){t.write("{}");return}t.write(`{
|
|
4499
|
+
`),n.forEach(([i,o],s)=>{s>0&&t.writeLine(","),t.indent(),/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)?t.write(`${i}: `):t.write(`"${i}" => `),e.unknown(o).write(t),t.dedent()}),t.write(`
|
|
4500
|
+
}`)}};function JJl(e){if(e instanceof xCt)return e.getDedupKey()}var hgi;(function(e){e[e.Invariant=0]="Invariant",e.Covariant="out",e.Contravariant="in"})(hgi||(hgi={}));var H_e=class extends Uf{name;unchecked;bound;variance;defaultType;constructor({name:t,unchecked:r,bound:n,variance:i,defaultType:o}){super(),this.name=t,this.unchecked=r??!1,this.bound=n,this.variance=i??hgi.Invariant,this.defaultType=o}write(t){}writeTypeDefinition(t){this.unchecked&&t.write("unchecked "),this.variance!=hgi.Invariant&&t.write(`${this.variance} `),t.write(this.name),this.bound&&(t.write(" < "),this.bound.writeTypeDefinition(t)),this.defaultType&&(t.write(" = "),this.defaultType.writeTypeDefinition(t))}};var zKt=class extends BN{initializer;write(t){t.write(`&${this.name}`)}};var ggi=class extends Uf{errorClass;message;constructor({errorClass:t,message:r}){super(),this.errorClass=t,this.message=r}write(t){t.write("raise"),this.errorClass&&(t.write(" "),this.errorClass.write(t)),this.message&&(this.errorClass&&t.write(", "),this.message.write(t))}};function Agi(e){return new __e(e)}function cFg(){return Agi("true")}function uFg(){return Agi("false")}function lFg(){return Agi("nil")}var pFg={positional(e){return new jKt(e)},keyword(e){return new G_e(e)},positionalSplat(e){return new QKt(e)},keywordSplat(e){return new kKt(e)},yield(e){return new zKt(e)}};function fFg(e){return new VK(e)}function dFg(e){return new UK(e)}function mFg(e){return new LK(e)}function hFg(e){return new MK(e)}function gFg(e){return new H_e(e)}function AFg(e){return new ghe(e)}function yFg(e){return new V_e(e)}function bFg(e){return new q_e(e)}function EFg(e){return new W_e(e)}function IFg(e){return new NKt(e)}function vFg(e){return new FKt(e)}function xFg(e){return new vCt(e)}function CFg(e){return new ggi(e)}function wFg(e,t){let r=e;for(let n of t.toReversed())n.addStatement(r),r=n;return r}Vi();Dt();var ygi=class e{context;constructor({context:t}){this.context=t}convert(t){if(t.value===null)return this.context.isNullable(t.typeReference)?Dn.TypeLiteral.nil():(this.context.errors.add({severity:Br.Critical,message:"Expected non-null value, but got null"}),Dn.TypeLiteral.nop());if(t.value===void 0)return Dn.TypeLiteral.nop();switch(t.typeReference.type){case"list":return this.convertList({list:t.typeReference.value,value:t.value});case"literal":return this.convertLiteral({literalType:t.typeReference.value,value:t.value});case"map":return this.convertMap({map:t.typeReference,value:t.value});case"named":{let r=this.context.resolveNamedType({typeId:t.typeReference.value});return r==null?Dn.TypeLiteral.nop():this.convertNamed({named:r,value:t.value,as:t.as})}case"optional":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as});case"nullable":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as});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});case"unknown":return Dn.TypeLiteral.unknown(t.value);default:Ie(t.typeReference)}}convertLiteral({literalType:t,value:r}){switch(t.type){case"boolean":{let n=this.context.getValueAsBoolean({value:r});return n==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.boolean(n)}case"string":{let n=this.context.getValueAsString({value:r});return n==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(n)}default:Ie(t)}}convertList({list:t,value:r}){return Array.isArray(r)?Dn.TypeLiteral.list(r.map((n,i)=>{this.context.errors.scope({index:i});try{return this.convert({typeReference:t,value:n})}finally{this.context.errors.unscope()}})):(this.context.errors.add({severity:Br.Critical,message:`Expected array but got: ${typeof r}`}),Dn.TypeLiteral.nop())}convertSet({set:t,value:r}){return Array.isArray(r)?Dn.TypeLiteral.set(r.map((n,i)=>{this.context.errors.scope({index:i});try{return this.convert({typeReference:t,value:n})}finally{this.context.errors.unscope()}})):(this.context.errors.add({severity:Br.Critical,message:`Expected array but got: ${typeof r}`}),Dn.TypeLiteral.nop())}convertMap({map:t,value:r}){return typeof r!="object"||r==null?(this.context.errors.add({severity:Br.Critical,message:`Expected object but got: ${r==null?"null":typeof r}`}),Dn.TypeLiteral.nop()):Dn.TypeLiteral.hash(Object.entries(r).map(([n,i])=>{this.context.errors.scope(n);try{return{key:this.convert({typeReference:t.key,value:n,as:"key"}),value:this.convert({typeReference:t.value,value:i})}}finally{this.context.errors.unscope()}}))}convertNamed({named:t,value:r,as:n}){switch(t.type){case"alias":return this.convert({typeReference:t.typeReference,value:r,as:n});case"discriminatedUnion":return this.convertDiscriminatedUnion({discriminatedUnion:t,value:r});case"object":return this.convertObject({object:t,value:r});case"enum":return this.convertEnum({enum_:t,value:r});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r});default:Ie(t)}}convertDiscriminatedUnion({discriminatedUnion:t,value:r}){let n=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:t,value:r});if(n==null)return Dn.TypeLiteral.nop();let i=n.singleDiscriminatedUnionType,o=this.convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:n,unionVariant:i});return o==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.hash(o)}convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:t,unionVariant:r}){switch(r.type){case"samePropertiesAsObject":{let n=this.context.resolveNamedType({typeId:r.typeId});if(n==null)return;let i=this.convertNamed({named:n,value:t.value});return this.extractHashEntries(i)}case"singleProperty":try{this.context.errors.scope(r.discriminantValue.wireValue);let n=this.context.getRecord(t.value);return n==null?[{key:Dn.TypeLiteral.string(this.context.getPropertyName(r.discriminantValue.name)),value:this.convert({typeReference:r.typeReference,value:t.value})}]:[{key:Dn.TypeLiteral.string(this.context.getPropertyName(r.discriminantValue.name)),value:this.convert({typeReference:r.typeReference,value:n[r.discriminantValue.wireValue]})}]}finally{this.context.errors.unscope()}case"noProperties":return[];default:Ie(r)}}extractHashEntries(t){t instanceof Dn.TypeLiteral}convertEnum({enum_:t,value:r}){let n=this.getEnumValueName({enum_:t,value:r});return n==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(n)}getEnumValueName({enum_:t,value:r}){if(typeof r!="string"){this.context.errors.add({severity:Br.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:Br.Critical,message:`An enum value named "${r}" does not exist in this context`});return}return n.wireValue}convertUndiscriminatedUnion({undiscriminatedUnion:t,value:r}){let n=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r});return n??Dn.TypeLiteral.nop()}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:r}){for(let n of t.types){let i=this.context.clone(),s=new e({context:i}).convert({typeReference:n,value:r});if(i.errors.empty())return s}this.context.errors.add({severity:Br.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof r}" value`})}convertPrimitive({primitive:t,value:r,as:n}){switch(t){case"INTEGER":case"LONG":case"UINT":case"UINT_64":{let i=this.getValueAsNumber({value:r,as:n});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.integer(i)}case"FLOAT":case"DOUBLE":{let i=this.getValueAsNumber({value:r});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.float(i)}case"BOOLEAN":{let i=this.getValueAsBoolean({value:r,as:n});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.boolean(i)}case"BASE_64":case"BIG_INTEGER":case"STRING":{let i=this.context.getValueAsString({value:r});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(i)}case"UUID":{let i=this.context.getValueAsString({value:r});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(i)}case"DATE":{let i=this.context.getValueAsString({value:r});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(i)}case"DATE_TIME":case"DATE_TIME_RFC_2822":{let i=this.context.getValueAsString({value:r});return i==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(i)}default:Ie(t)}}convertObject({object:t,value:r}){if(typeof r!="object"||r==null)return this.context.errors.add({severity:Br.Critical,message:`Expected object but got: ${r==null?"null":typeof r}`}),Dn.TypeLiteral.nop();let n=this.convertObjectEntries({object:t,value:r});return Dn.TypeLiteral.hash(n)}convertObjectEntries({object:t,value:r}){let n=typeof r=="object"&&r!=null?r:{},i=new Set(Object.keys(n)),o=[];for(let[s,a]of Object.entries(n)){this.context.errors.scope(s);let c=t.properties.find(d=>d.name.wireValue===s),u=c?.typeReference??{type:"unknown"},l=c?.name.name.snakeCase.safeName??s,p=this.convert({typeReference:u,value:a});Dn.TypeLiteral.isNop(p)||o.push({key:Dn.TypeLiteral.string(l),value:p}),this.context.errors.unscope()}for(let s of t.properties){if(i.has(s.name.wireValue)||this.context.isOptional(s.typeReference)||this.context.isNullable(s.typeReference))continue;let a=this.synthesizeDefaultValue(s.typeReference);Dn.TypeLiteral.isNop(a)||o.push({key:Dn.TypeLiteral.string(s.name.name.snakeCase.safeName),value:a})}return o.filter(s=>!Dn.TypeLiteral.isNop(s.value))}synthesizeDefaultValue(t,r=new Set){switch(t.type){case"optional":case"nullable":return Dn.TypeLiteral.nop();case"primitive":return this.synthesizeDefaultPrimitive(t.value);case"literal":return this.synthesizeDefaultLiteral(t.value);case"list":return Dn.TypeLiteral.list([]);case"set":return Dn.TypeLiteral.list([]);case"map":return Dn.TypeLiteral.hash([]);case"named":{if(r.has(t.value))return Dn.TypeLiteral.nop();let n=this.context.resolveNamedType({typeId:t.value});return n==null?Dn.TypeLiteral.nop():this.synthesizeDefaultNamed({named:n,typeId:t.value,seen:r})}case"unknown":return Dn.TypeLiteral.nop();default:Ie(t)}}synthesizeDefaultPrimitive(t){switch(t){case"STRING":case"BASE_64":case"BIG_INTEGER":return Dn.TypeLiteral.string("string");case"INTEGER":case"LONG":case"UINT":case"UINT_64":return Dn.TypeLiteral.integer(1);case"FLOAT":case"DOUBLE":return Dn.TypeLiteral.float(1.1);case"BOOLEAN":return Dn.TypeLiteral.boolean(!0);case"DATE":return Dn.TypeLiteral.string("2024-01-15");case"DATE_TIME":case"DATE_TIME_RFC_2822":return Dn.TypeLiteral.string("2024-01-15T09:30:00Z");case"UUID":return Dn.TypeLiteral.string("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32");default:Ie(t)}}synthesizeDefaultLiteral(t){switch(t.type){case"boolean":return Dn.TypeLiteral.boolean(t.value);case"string":return Dn.TypeLiteral.string(t.value);default:Ie(t)}}synthesizeDefaultNamed({named:t,typeId:r,seen:n}){let i=new Set(n);switch(i.add(r),t.type){case"alias":return this.synthesizeDefaultValue(t.typeReference,i);case"enum":{let o=t.values[0];return o==null?Dn.TypeLiteral.nop():Dn.TypeLiteral.string(o.wireValue)}case"object":{let o=[];for(let s of t.properties){if(this.context.isOptional(s.typeReference)||this.context.isNullable(s.typeReference))continue;let a=this.synthesizeDefaultValue(s.typeReference,i);Dn.TypeLiteral.isNop(a)||o.push({key:Dn.TypeLiteral.string(s.name.name.snakeCase.safeName),value:a})}return Dn.TypeLiteral.hash(o)}case"discriminatedUnion":case"undiscriminatedUnion":return Dn.TypeLiteral.nop();default:Ie(t)}}getValueAsNumber({value:t,as:r}){let n=r==="key"&&typeof t=="string"?Number(t):t;return this.context.getValueAsNumber({value:n})}getValueAsBoolean({value:t,as:r}){let n=r==="key"?typeof t=="string"?t==="true":!!t:t;return this.context.getValueAsBoolean({value:n})}};var bgi=class e extends fx{ir;customConfig;dynamicTypeLiteralMapper;constructor({ir:t,config:r}){super({ir:t,config:r}),this.ir=t,this.customConfig=r.customConfig!=null?r.customConfig:void 0,this.dynamicTypeLiteralMapper=new ygi({context:this})}clone(){return new e({ir:this.ir,config:this.config})}getRootClientClassReference(){return Dn.classReference({name:this.getRootClientClassName(),modules:[this.getRootModuleName()]})}getRootClientClassName(){return this.customConfig?.clientModuleName??"Client"}getRootModuleName(){return ku(this.customConfig?.moduleName??this.config.organization)}isSingleEnvironmentID(t){return typeof t=="string"}isMultiEnvironmentValues(t){return typeof t=="object"}getEnvironmentTypeReferenceFromID(t){let r=this.resolveEnvironmentName(t);if(r!=null)return Dn.codeblock(n=>{n.writeNode(this.getEnvironmentClassReference()),n.write("::"),n.write(this.getEnumName(r))})}getEnvironmentClassReference(){return Dn.classReference({name:"Environment",modules:[this.getRootModuleName()]})}getEnumName(t){return this.getName(t.screamingSnakeCase.safeName)}getMethodName(t){return this.getName(t.snakeCase.safeName)}getPropertyName(t){return this.getName(t.snakeCase.safeName)}getName(t){return t}};Dt();var YJl="client",SFg="@client",Egi=class{context;formatter;constructor({context:t,formatter:r}){this.context=t,this.formatter=r}async generateSnippet({endpoint:t,request:r}){return await this.buildCodeBlock({endpoint:t,snippet:r}).toStringAsync({customConfig:this.context.customConfig??{},formatter:this.formatter})}generateSnippetSync({endpoint:t,request:r}){return this.buildCodeBlock({endpoint:t,snippet:r}).toString({customConfig:this.context.customConfig??{},formatter:this.formatter})}async generateSnippetAst({endpoint:t,request:r,options:n}){return n?.skipClientInstantiation?this.buildCodeBlockWithoutClient({endpoint:t,snippet:r}):this.buildCodeBlock({endpoint:t,snippet:r})}buildCodeBlock({endpoint:t,snippet:r}){return Dn.codeblock(n=>{n.writeNodeStatement(this.constructClient({endpoint:t,snippet:r})),n.newLine(),n.writeNodeStatement(this.callMethod({endpoint:t,snippet:r}))})}buildCodeBlockWithoutClient({endpoint:t,snippet:r}){return Dn.codeblock(n=>{n.writeNodeStatement(this.callMethodOnExistingClient({endpoint:t,snippet:r}))})}constructClient({endpoint:t,snippet:r}){return Dn.codeblock(n=>{n.addRequire(this.context.getRootModuleName().toLowerCase());let i=this.context.getRootClientClassReference(),o=this.getRootClientBuilderArgs({endpoint:t,snippet:r});n.write(`${YJl} = `),n.writeNode(Dn.instantiateClass({classReference:i,arguments_:o}))})}getRootClientBaseUrlArg({baseUrl:t,environment:r}){if(t!=null&&r!=null)return this.context.errors.add({severity:"CRITICAL",message:"Cannot specify both baseUrl and environment options"}),[];if(t!=null)return[Dn.keywordArgument({name:"base_url",value:Dn.TypeLiteral.string(t)})];if(r!=null){if(this.context.isSingleEnvironmentID(r)){let n=this.context.getEnvironmentTypeReferenceFromID(r);return n==null?(this.context.errors.add({severity:"CRITICAL",message:`Environment ID ${r} not found`}),[]):[Dn.keywordArgument({name:"environment",value:n})]}if(this.context.isMultiEnvironmentValues(r))return this.context.errors.add({severity:"CRITICAL",message:"Multi-environment values are not supported in Ruby snippets yet"}),[]}return[]}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[];default:Ie(t)}}addError(t){this.context.errors.add({severity:Br.Critical,message:t})}addWarning(t){this.context.errors.add({severity:Br.Warning,message:t})}getRootClientBasicAuthArgs({auth:t,values:r}){let n=t,i=!!n.usernameOmit,o=!!n.passwordOmit,s=[];return i||s.push(Dn.keywordArgument({name:t.username.snakeCase.safeName,value:Dn.TypeLiteral.string(r.username)})),o||s.push(Dn.keywordArgument({name:t.password.snakeCase.safeName,value:Dn.TypeLiteral.string(r.password)})),s}getRootClientBearerAuthArgs({auth:t,values:r}){return[Dn.keywordArgument({name:t.token.snakeCase.safeName,value:Dn.TypeLiteral.string(r.token)})]}getRootClientHeaderAuthArgs({auth:t,values:r}){return[Dn.keywordArgument({name:t.header.name.name.snakeCase.safeName,value:Dn.TypeLiteral.string(r.value)})]}getRootClientOAuthArgs({auth:t,values:r}){return[Dn.keywordArgument({name:t.clientId.snakeCase.safeName,value:Dn.TypeLiteral.string(r.clientId)}),Dn.keywordArgument({name:t.clientSecret.snakeCase.safeName,value:Dn.TypeLiteral.string(r.clientSecret)})]}getRootClientHeaderArgs({headers:t,values:r}){let n=[];for(let i of t){let o=r[i.name.wireValue];o!=null&&typeof o=="string"&&n.push(Dn.keywordArgument({name:i.name.name.snakeCase.safeName,value:Dn.TypeLiteral.string(o)}))}return n}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:"WARNING",message:`Auth with ${t.auth.type} configuration is required for this endpoint`}));let i=this.getRootClientBaseUrlArg({baseUrl:r.baseURL,environment:r.environment});return i.length>0&&n.push(...i),this.context.errors.scope("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(),n}callMethod({endpoint:t,snippet:r}){let n={on:Dn.codeblock(YJl),method:this.getMethod({endpoint:t}),arguments_:[]};switch(t.request.type){case"inlined":n.keywordArguments=this.getMethodArgsForInlinedRequest({request:t.request,snippet:r});break;case"body":n.keywordArguments=this.getMethodArgsForBodyRequest({request:t.request,snippet:r});break;default:Ie(t.request)}let i=this.getRequestOptions({endpoint:t,snippet:r});return i!=null&&(n.keywordArguments=n.keywordArguments??[],n.keywordArguments.push(i)),n.keywordArguments=XJl(n.keywordArguments),Dn.invokeMethod(n)}callMethodOnExistingClient({endpoint:t,snippet:r}){let n={on:Dn.codeblock(SFg),method:this.getMethod({endpoint:t}),arguments_:[]};switch(t.request.type){case"inlined":n.keywordArguments=this.getMethodArgsForInlinedRequest({request:t.request,snippet:r});break;case"body":n.keywordArguments=this.getMethodArgsForBodyRequest({request:t.request,snippet:r});break;default:Ie(t.request)}let i=this.getRequestOptions({endpoint:t,snippet:r});return i!=null&&(n.keywordArguments=n.keywordArguments??[],n.keywordArguments.push(i)),n.keywordArguments=XJl(n.keywordArguments),Dn.invokeMethod(n)}getRequestOptions({endpoint:t,snippet:r}){let n=r.headers??{},i=Object.entries(n);if(i.length===0)return;let o=new Set;if(this.context.ir.headers!=null)for(let c of this.context.ir.headers)o.add(c.name.wireValue.toLowerCase());if(t.request.type==="inlined"&&t.request.headers!=null)for(let c of t.request.headers)o.add(c.name.wireValue.toLowerCase());let s=i.filter(([c])=>!o.has(c.toLowerCase()));if(s.length===0)return;let a=s.map(([c,u])=>({key:Dn.TypeLiteral.string(c),value:Dn.TypeLiteral.string(String(u))}));return Dn.keywordArgument({name:"request_options",value:Dn.TypeLiteral.hash([{key:Dn.TypeLiteral.string("additional_headers"),value:Dn.TypeLiteral.hash(a)}])})}getMethodArgsForInlinedRequest({request:t,snippet:r}){let n=[],i=[...this.context.ir.pathParameters??[],...t.pathParameters??[]];if(n.push(...this.getNamedParameterArgs({kind:"PathParameters",namedParameters:i,values:r.pathParameters})),n.push(...this.getNamedParameterArgs({kind:"QueryParameters",namedParameters:t.queryParameters,values:r.queryParameters})),n.push(...this.getNamedParameterArgs({kind:"Headers",namedParameters:t.headers,values:r.headers})),t.body!=null&&r.requestBody!=null)switch(t.body.type){case"properties":n.push(...this.getMethodArgsForPropertiesRequest({request:t.body,snippet:r}));break;case"referenced":{let o=t.body.bodyType;if(o.type==="typeReference"){let s=o.value;if(s.type==="named"){let a=this.context.resolveNamedType({typeId:s.value});if(a!=null&&a.type==="object"){let c=this.context.getRecord(r.requestBody);if(c!=null){let u=this.getBodyFieldsAsKeywordArgs({namedType:a,bodyRecord:c});n.push(...u)}}else if(a!=null){let c=this.getBodyArgsForNonObjectType({namedType:a,typeRef:s,bodyValue:r.requestBody});n.push(...c)}}else{let a=this.context.dynamicTypeLiteralMapper.convert({typeReference:s,value:r.requestBody});Dn.TypeLiteral.isNop(a)||n.push(Dn.keywordArgument({name:t.body.bodyKey.snakeCase.safeName,value:a}))}}break}case"fileUpload":break;default:Ie(t.body)}return n}getNamedParameterArgs({kind:t,namedParameters:r,values:n}){let i=[];if(this.context.errors.scope(t),r!=null){let o=this.context.associateByWireValue({parameters:r,values:n??{},ignoreMissingParameters:!0});for(let s of o){let a=this.context.dynamicTypeLiteralMapper.convert(s);Dn.TypeLiteral.isNop(a)||i.push(Dn.keywordArgument({name:this.context.getPropertyName(s.name.name),value:a}))}}return this.context.errors.unscope(),i}getMethodArgsForPropertiesRequest({request:t,snippet:r}){let n=[],i=this.context.getRecord(r.requestBody)??{},o=this.context.associateByWireValue({parameters:t.value,values:i});for(let s of o){let a=this.context.dynamicTypeLiteralMapper.convert(s);Dn.TypeLiteral.isNop(a)||n.push(Dn.keywordArgument({name:this.context.getPropertyName(s.name.name),value:a}))}return n}getMethodArgsForBodyRequest({request:t,snippet:r}){let n=[],i=[...this.context.ir.pathParameters??[],...t.pathParameters??[]];if(n.push(...this.getNamedParameterArgs({kind:"PathParameters",namedParameters:i,values:r.pathParameters})),t.body!=null&&r.requestBody!=null)switch(t.body.type){case"bytes":this.context.errors.add({severity:"CRITICAL",message:"Bytes request body is not supported in Ruby snippets yet"});break;case"typeReference":{let o=t.body.value;if(o.type==="named"){let s=this.context.resolveNamedType({typeId:o.value});if(s!=null&&s.type==="object"){let a=this.context.getRecord(r.requestBody);if(a!=null){let c=this.getBodyFieldsAsKeywordArgs({namedType:s,bodyRecord:a});n.push(...c)}}else if(s!=null){let a=this.getBodyArgsForNonObjectType({namedType:s,typeRef:o,bodyValue:r.requestBody});n.push(...a)}}else{let s=this.context.dynamicTypeLiteralMapper.convert({typeReference:o,value:r.requestBody});Dn.TypeLiteral.isNop(s)||n.push(Dn.keywordArgument({name:"request",value:s}))}break}default:Ie(t.body)}return n}getBodyArgsForNonObjectType({namedType:t,typeRef:r,bodyValue:n}){let i=[];switch(t.type){case"undiscriminatedUnion":{let o=this.context.getRecord(n);if(o!=null){for(let a of t.types)if(a.type==="named"){let c=this.context.resolveNamedType({typeId:a.value});if(c!=null&&c.type==="object"){let u=new Set(c.properties.map(d=>d.name.wireValue)),l=Object.keys(o);if(l.every(d=>u.has(d))&&l.length>0){let d=this.getBodyFieldsAsKeywordArgs({namedType:c,bodyRecord:o});return i.push(...d),i}}}}let s=this.context.dynamicTypeLiteralMapper.convert({typeReference:r,value:n});Dn.TypeLiteral.isNop(s)||i.push(Dn.keywordArgument({name:"request",value:s}));break}case"alias":{let o=t.typeReference;if(o.type==="named"){let a=this.context.resolveNamedType({typeId:o.value});if(a!=null&&a.type==="object"){let c=this.context.getRecord(n);if(c!=null){let u=this.getBodyFieldsAsKeywordArgs({namedType:a,bodyRecord:c});return i.push(...u),i}}}let s=this.context.dynamicTypeLiteralMapper.convert({typeReference:r,value:n});Dn.TypeLiteral.isNop(s)||i.push(Dn.keywordArgument({name:"request",value:s}));break}case"discriminatedUnion":case"enum":{let o=this.context.dynamicTypeLiteralMapper.convert({typeReference:r,value:n});Dn.TypeLiteral.isNop(o)||i.push(Dn.keywordArgument({name:"request",value:o}));break}case"object":break;default:Ie(t)}return i}getBodyFieldsAsKeywordArgs({namedType:t,bodyRecord:r}){let n=[];switch(t.type){case"object":{for(let i of t.properties){let o=i.name.wireValue,s=r[o];if(s!==void 0){this.context.errors.scope(o);let a=this.context.dynamicTypeLiteralMapper.convert({typeReference:i.typeReference,value:s});this.context.errors.unscope(),Dn.TypeLiteral.isNop(a)||n.push(Dn.keywordArgument({name:this.context.getPropertyName(i.name.name),value:a}))}}break}case"alias":case"discriminatedUnion":case"undiscriminatedUnion":case"enum":break;default:Ie(t)}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)}};function XJl(e){if(e==null||e.length<=1)return e;let t=new Map;e.forEach((n,i)=>{t.set(n.name,i)});let r=e.filter((n,i)=>t.get(n.name)===i);if(r.length!==e.length){let n=Array.from(new Set(e.map(i=>i.name).filter((i,o)=>t.get(i)!==o)));console.warn(`[ruby-v2 dynamic-snippets] duplicate keyword argument name(s) [${n.join(", ")}] in a generated snippet; keeping last occurrence to match **params runtime behavior. This indicates a latent name collision in the Ruby SDK method signature that should be disambiguated at the generator level.`)}return r}var MKt=class extends px{formatter;constructor({ir:t,config:r,formatter:n}){super(new bgi({ir:t,config:r})),this.formatter=n}async generate(t,r={}){return super.generate(t,r)}generateSync(t){return super.generateSync(t)}async generateSnippetAst(t,r){return super.generateSnippetAst(t,r)}createSnippetGenerator(t){return new Egi({context:t,formatter:this.formatter})}};var vgi=require("fs/promises"),ZJl=be(require("path"),1);var Igi=class{context;ir;generatorConfig;dynamicSnippetsGenerator;constructor(t,r,n){this.context=t,this.ir=r,this.generatorConfig=n,this.dynamicSnippetsGenerator=new MKt({ir:$T(this.ir),config:this.generatorConfig})}async generateTests({outputDir:t,requests:r}){this.context.logger.debug("Generating dynamic snippet tests...");for(let[n,{endpointId:i,request:o}]of r.entries())try{let s=ZT(o);if(s==null)continue;let a=await this.dynamicSnippetsGenerator.generate(s,{endpointId:i}),c=this.getTestFilePath({outputDir:t,idx:n});await(0,vgi.mkdir)(ZJl.default.dirname(c),{recursive:!0}),await(0,vgi.writeFile)(c,a.snippet)}catch(s){this.context.logger.error(`Failed to generate dynamic snippet for endpoint ${JSON.stringify(o.endpoint)}: ${s}`),s instanceof Error&&s.stack&&this.context.logger.error(s.stack)}this.context.logger.debug("Done generating dynamic snippet tests")}getTestFilePath({outputDir:t,idx:r}){return Ge(t,Se.of(`dynamic-snippets/example${r}/snippet.rb`))}};var qKt=require("fs/promises"),bYl=be(require("path"),1);Zt();var IBs=new Set(["as","break","const","continue","crate","else","enum","extern","false","fn","for","if","impl","in","let","loop","match","mod","move","mut","pub","ref","return","self","Self","static","struct","super","trait","true","type","unsafe","use","where","while","abstract","async","await","become","box","do","dyn","final","macro","override","priv","try","typeof","unsized","virtual","yield"]);var $Jl=new Set(["Box","Option","Result","Vec","HashMap","HashSet","String","str","i8","i16","i32","i64","i128","u8","u16","u32","u64","u128","f32","f64","bool","char","usize","isize"]);Dt();var CCt="filename_id:",wCt="typename_id:",TFg="clientname_id:",LKt=class e{static reservedFilenames=["lib","mod","main","test","prelude","error","environment","client","config","core"];static create(){return new e(e.reservedFilenames)}filenameRegistry;typenameRegistry;clientNameRegistry;constructor(t){this.filenameRegistry=new yS({reservedSymbolNames:t,conflictResolutionStrategy:"underscore-suffix"}),this.typenameRegistry=new yS({reservedSymbolNames:[],conflictResolutionStrategy:"numbered-suffix"}),this.clientNameRegistry=new yS({reservedSymbolNames:[],conflictResolutionStrategy:"numbered-suffix"})}registerSchemaTypeFilename(t,r){return this.filenameRegistry.registerSymbol(this.getSchemaTypeFilenameId(t),[r,`${r}_type`,`${r}_model`])}registerSchemaTypeTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getSchemaTypeTypeNameId(t),[r])}registerInlineRequestFilename(t,r){return this.filenameRegistry.registerSymbol(this.getInlineRequestFilenameId(t),[r,`${r}_request`,`${r}_body`])}registerQueryRequestFilename(t,r){return this.filenameRegistry.registerSymbol(this.getQueryRequestFilenameId(t),[r,`${r}_query`,`${r}_params`])}registerInlineRequestTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getInlineRequestTypeNameId(t),[r])}registerQueryRequestTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getQueryRequestTypeNameId(t),[r])}registerFileUploadRequestFilename(t,r){return this.filenameRegistry.registerSymbol(this.getFileUploadRequestFilenameId(t),[r,`${r}_upload`,`${r}_file_request`])}registerFileUploadRequestTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getFileUploadRequestTypeNameId(t),[r])}registerReferencedRequestWithQueryFilename(t,r){return this.filenameRegistry.registerSymbol(this.getReferencedRequestWithQueryFilenameId(t),[r,`${r}_request`,`${r}_with_query`])}registerReferencedRequestWithQueryTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getReferencedRequestWithQueryTypeNameId(t),[r])}registerBytesRequestFilename(t,r){return this.filenameRegistry.registerSymbol(this.getBytesRequestFilenameId(t),[r,`${r}_request`,`${r}_bytes`])}registerBytesRequestTypeName(t,r){return this.typenameRegistry.registerSymbol(this.getBytesRequestTypeNameId(t),[r])}registerClientName(t,r){return this.clientNameRegistry.registerSymbol(this.getClientNameId(t),[r])}getSchemaTypeFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getSchemaTypeFilenameId(t));return vA(r,`Filename not found for type ${t}`),`${r}.rs`}getInlineRequestFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getInlineRequestFilenameId(t));return vA(r,`Filename not found for inline request ${t}`),`${r}.rs`}getQueryRequestFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getQueryRequestFilenameId(t));return vA(r,`Filename not found for query request ${t}`),`${r}.rs`}getInlineRequestTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getInlineRequestTypeNameId(t));return vA(r,`Type name not found for inline request ${t}`),r}getQueryRequestTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getQueryRequestTypeNameId(t));return vA(r,`Type name not found for query request ${t}`),r}getFileUploadRequestFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getFileUploadRequestFilenameId(t));return vA(r,`Filename not found for file upload request ${t}`),`${r}.rs`}getFileUploadRequestTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getFileUploadRequestTypeNameId(t));return vA(r,`Type name not found for file upload request ${t}`),r}getSchemaTypeTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getSchemaTypeTypeNameId(t));return vA(r,`Type name not found for schema type ${t}`),r}getClientNameOrThrow(t){let r=this.clientNameRegistry.getSymbolNameById(this.getClientNameId(t));return vA(r,`Client name not found for client ${t}`),r}getClientNameOrUndefined(t){return this.clientNameRegistry.getSymbolNameById(this.getClientNameId(t))}getReferencedRequestWithQueryFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getReferencedRequestWithQueryFilenameId(t));return vA(r,`Filename not found for referenced request with query ${t}`),`${r}.rs`}getReferencedRequestWithQueryTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getReferencedRequestWithQueryTypeNameId(t));return vA(r,`Type name not found for referenced request with query ${t}`),r}getBytesRequestFilenameOrThrow(t){let r=this.filenameRegistry.getSymbolNameById(this.getBytesRequestFilenameId(t));return vA(r,`Filename not found for bytes request ${t}`),`${r}.rs`}getBytesRequestTypeNameOrThrow(t){let r=this.typenameRegistry.getSymbolNameById(this.getBytesRequestTypeNameId(t));return vA(r,`Type name not found for bytes request ${t}`),r}getSchemaTypeFilenameId(t){return`${CCt}schema_type_${t}`}getInlineRequestFilenameId(t){return`${CCt}inline_request_${t}`}getQueryRequestFilenameId(t){return`${CCt}query_request_${t}`}getInlineRequestTypeNameId(t){return`${wCt}inline_request_${t}`}getQueryRequestTypeNameId(t){return`${wCt}query_request_${t}`}getFileUploadRequestFilenameId(t){return`${CCt}file_upload_request_${t}`}getFileUploadRequestTypeNameId(t){return`${wCt}file_upload_request_${t}`}getSchemaTypeTypeNameId(t){return`${wCt}schema_type_${t}`}getClientNameId(t){return`${TFg}${t}`}getReferencedRequestWithQueryFilenameId(t){return`${CCt}referenced_request_with_query_${t}`}getReferencedRequestWithQueryTypeNameId(t){return`${wCt}referenced_request_with_query_${t}`}getBytesRequestFilenameId(t){return`${CCt}bytes_request_${t}`}getBytesRequestTypeNameId(t){return`${wCt}bytes_request_${t}`}};Vi();function eYl(e){return e.charAt(0).toUpperCase()+$n(e).slice(1)}function vBs(e){return/^[0-9]/.test(e)?`_${e}`:IBs.has(e)?`r#${e}`:e}function tYl(e){return $Jl.has(e)?`r#${e}`:e}function xgi(e){return IBs.has(e)?`${e}_`:e}function rYl(e){let t=e.toLowerCase().replace(/[^a-z0-9_-]/g,"_").replace(/^[0-9]/,"_$&");return t=t.replace(/[_-]+/g,"_"),t=t.replace(/^_+|_+$/g,""),t||(t="rust_sdk"),t}function nYl(e,t){return`${e}_${t}`.toLowerCase()}var Cgi=require("child_process");function xBs(e,t){try{let r=(0,Cgi.spawnSync)("rustfmt",["--edition=2021"],{input:e,encoding:"utf8",timeout:5e3});if(r.status===0&&r.stdout)return t?.debug("rustfmt snippet formatting successful"),r.stdout;t?.debug(`rustfmt snippet formatting failed with status ${r.status}`)}catch(r){t?.debug(`rustfmt snippet formatting error: ${r}`)}return e}async function CBs(e,t){return new Promise(r=>{let n=(0,Cgi.spawn)("rustfmt",["--edition=2021"],{stdio:"pipe"});n.stdin.write(e),n.stdin.end();let i="";n.stdout.on("data",o=>{i+=o.toString()}),n.on("close",o=>{o===0&&i?(t?.debug("rustfmt async snippet formatting successful"),r(i)):(t?.debug(`rustfmt async snippet formatting failed with exit code ${o}`),r(e))}),n.on("error",o=>{t?.debug(`rustfmt async snippet formatting error: ${o.message}`),r(e)})})}var Jq=class{content=[];indentLevel=0;needsIndent=!0;write(t){this.needsIndent&&t.length>0&&(this.content.push(" ".repeat(this.indentLevel)),this.needsIndent=!1),this.content.push(t)}writeLine(t=""){this.write(t),this.newLine()}newLine(){this.content.push(`
|
|
4499
4501
|
`),this.needsIndent=!0}indent(){this.indentLevel++}dedent(){this.indentLevel>0&&this.indentLevel--}toString(){return this.content.join("")}writeBlock(t,r){this.writeLine(`${t} {`),this.indent(),r(),this.dedent(),this.writeLine("}")}};var vu=class{toString(){let t=new Jq;return this.write(t),t.toString()}};var K_e=class e extends vu{name;args;nested;constructor({name:t,args:r,nested:n}){super(),this.name=t,this.args=r,this.nested=n}write(t){t.write(`#[${this.name}`),this.args&&this.args.length>0&&(t.write("("),this.args.forEach((r,n)=>{n>0&&t.write(", "),t.write(r)}),t.write(")")),this.nested&&this.nested.length>0&&(t.write("("),this.nested.forEach((r,n)=>{n>0&&t.write(", "),r.write(t)}),t.write(")")),t.write("]")}static derive(t){return new e({name:"derive",args:t})}static serde={rename:t=>new e({name:"serde",args:[`rename = ${JSON.stringify(t)}`]}),with:t=>new e({name:"serde",args:[`with = ${JSON.stringify(t)}`]}),deserializeWith:t=>new e({name:"serde",args:[`deserialize_with = ${JSON.stringify(t)}`]}),skip:()=>new e({name:"serde",args:["skip"]}),skipSerializing:()=>new e({name:"serde",args:["skip_serializing"]}),skipSerializingIf:t=>new e({name:"serde",args:[`skip_serializing_if = ${t}`]}),tag:t=>new e({name:"serde",args:[`tag = ${JSON.stringify(t)}`]}),untagged:()=>new e({name:"serde",args:["untagged"]}),flatten:()=>new e({name:"serde",args:["flatten"]}),default:()=>new e({name:"serde",args:["default"]}),content:t=>new e({name:"serde",args:[`content = ${JSON.stringify(t)}`]}),tagAndContent:(t,r)=>new e({name:"serde",args:[`tag = ${JSON.stringify(t)}`,`content = ${JSON.stringify(r)}`]}),transparent:()=>new e({name:"serde",args:["transparent"]})};static nonExhaustive(){return new e({name:"non_exhaustive"})}};var J_e=class extends vu{name;fields;constructors;methods;constructor({name:t,fields:r=[],constructors:n=[],methods:i=[]}){super(),this.name=t,this.fields=r,this.constructors=n,this.methods=i}write(t){this.writeStruct(t),t.newLine(),this.writeImpl(t)}writeStruct(t){t.write(`pub struct ${this.name} {`),t.newLine(),t.indent(),this.fields.forEach(r=>{t.write(`${r.visibility} ${r.name}: ${r.type},`),t.newLine()}),t.dedent(),t.write("}"),t.newLine()}writeImpl(t){t.write(`impl ${this.name} {`),t.newLine(),t.indent(),this.constructors.forEach(r=>{this.writeMethod(t,r),t.newLine()}),this.methods.forEach(r=>{this.writeMethod(t,r),t.newLine()}),t.dedent(),t.write("}"),t.newLine()}writeMethod(t,r){r.docs&&r.docs.write(t);let n=r.parameters?.join(", ")||"",i=r.returnType||"String",o=r.isAsync?"async ":"",s=r.name==="new"?"":"&self",a=s&&n?`${s}, ${n}`:s+n;t.write(`pub ${o}fn ${r.name}(${a}) -> ${i} {`),t.newLine(),t.indent(),r.body?t.write(r.body.toString()):t.write('todo!("Implement API call")'),t.newLine(),t.dedent(),t.write("}"),t.newLine()}};var xRe=class e extends vu{args;constructor(t){super(),this.args=t}write(t){switch(this.args.type){case"let":t.write("let "),this.args.mutable&&t.write("mut "),t.write(this.args.name),this.args.type_&&(t.write(": "),this.args.type_.write(t)),t.write(" = "),this.args.value.write(t),t.write(";");break;case"return":t.write("return"),this.args.value&&(t.write(" "),this.args.value.write(t)),t.write(";");break;case"expression":this.args.expression.write(t),t.write(";");break;case"assignment":this.args.target.write(t),t.write(" = "),this.args.value.write(t),t.write(";");break;case"if":{let r=this.args;t.write("if "),r.condition.write(t),t.write(" {"),t.newLine(),t.indent(),r.then.forEach(n=>{n.write(t),t.newLine()}),t.dedent(),t.write("}"),r.else_&&(t.write(" else {"),t.newLine(),t.indent(),r.else_.forEach(n=>{n.write(t),t.newLine()}),t.dedent(),t.write("}"));break}case"if-let":{let r=this.args;t.write("if let "),t.write(r.pattern),t.write(" = "),r.value.write(t),t.write(" {"),t.newLine(),t.indent(),r.then.forEach(n=>{n.write(t),t.newLine()}),t.dedent(),t.write("}"),r.else_&&(t.write(" else {"),t.newLine(),t.indent(),r.else_.forEach(n=>{n.write(t),t.newLine()}),t.dedent(),t.write("}"));break}case"match":{let r=this.args;t.write("match "),r.expression.write(t),t.write(" {"),t.newLine(),t.indent(),r.arms.forEach((n,i)=>{t.write(n.pattern),n.guard&&(t.write(" if "),n.guard.write(t)),t.write(" => {"),t.newLine(),t.indent(),n.body.forEach(o=>{o.write(t),t.newLine()}),t.dedent(),t.write("}"),i<r.arms.length-1&&t.write(","),t.newLine()}),t.dedent(),t.write("}");break}case"match-enhanced":{let r=this.args;t.write("match "),r.expression.write(t),t.write(" {"),t.newLine(),t.indent(),r.arms.forEach(n=>{n.write(t),t.newLine()}),t.dedent(),t.write("}");break}case"while":{let r=this.args;t.write("while "),r.condition.write(t),t.write(" {"),t.newLine(),t.indent(),r.body.forEach(n=>{n.write(t),t.newLine()}),t.dedent(),t.write("}");break}case"while-let":{let r=this.args;t.write("while let "),t.write(r.pattern),t.write(" = "),r.value.write(t),t.write(" {"),t.newLine(),t.indent(),r.body.forEach(n=>{n.write(t),t.newLine()}),t.dedent(),t.write("}");break}case"for":{let r=this.args;t.write("for "),t.write(r.pattern),t.write(" in "),r.iterable.write(t),t.write(" {"),t.newLine(),t.indent(),r.body.forEach(n=>{n.write(t),t.newLine()}),t.dedent(),t.write("}");break}case"loop":{let r=this.args;t.write("loop {"),t.newLine(),t.indent(),r.body.forEach(n=>{n.write(t),t.newLine()}),t.dedent(),t.write("}");break}case"break":{let r=this.args;t.write("break"),r.label&&(t.write(" '"),t.write(r.label)),r.value&&(t.write(" "),r.value.write(t)),t.write(";");break}case"continue":{let r=this.args;t.write("continue"),r.label&&(t.write(" '"),t.write(r.label)),t.write(";");break}case"unsafe":{let r=this.args;t.write("unsafe {"),t.newLine(),t.indent(),r.body.forEach(n=>{n.write(t),t.newLine()}),t.dedent(),t.write("}");break}case"raw":t.write(this.args.value);break}}static let(t){return new e({type:"let",...t})}static return(t){return new e({type:"return",value:t})}static expression(t){return new e({type:"expression",expression:t})}static assignment(t,r){return new e({type:"assignment",target:t,value:r})}static if(t,r,n){return new e({type:"if",condition:t,then:r,else_:n})}static match(t,r){return new e({type:"match",expression:t,arms:r})}static matchEnhanced(t,r){return new e({type:"match-enhanced",expression:t,arms:r})}static while(t,r){return new e({type:"while",condition:t,body:r})}static for(t,r,n){return new e({type:"for",pattern:t,iterable:r,body:n})}static ifLet(t,r,n,i){return new e({type:"if-let",pattern:t,value:r,then:n,else_:i})}static whileLet(t,r,n){return new e({type:"while-let",pattern:t,value:r,body:n})}static loop(t){return new e({type:"loop",body:t})}static break(t,r){return new e({type:"break",label:t,value:r})}static continue(t){return new e({type:"continue",label:t})}static unsafe(t){return new e({type:"unsafe",body:t})}static raw(t){return new e({type:"raw",value:t})}};var SCt=class e extends vu{args;constructor(t){super(),this.args=t}write(t){switch(t.write("{"),t.newLine(),t.indent(),this.args.type){case"statements":{let r=this.args;r.statements.forEach((n,i)=>{n.write(t),i<r.statements.length-1&&t.newLine()});break}case"expression":this.args.expression.write(t);break;case"empty":break}t.dedent(),t.newLine(),t.write("}")}static empty(){return new e({type:"empty"})}static fromStatements(t){return new e({type:"statements",statements:t})}static fromExpression(t){return new e({type:"expression",expression:t})}static fromStatementsAndExpression(t,r){return new e({type:"statements",statements:[...t,xRe.raw(r.toString())]})}};var Y_e=class extends vu{summary;description;parameters;returns;examples;constructor({summary:t,description:r,parameters:n,returns:i,errors:o,examples:s}){super(),this.summary=this.sanitizeText(t),this.description=r?this.sanitizeText(r):void 0,this.parameters=(n??[]).map(a=>({name:a.name,description:this.sanitizeText(a.description)})),this.returns=i?this.sanitizeText(i):void 0,this.examples=(s??[]).map(a=>this.sanitizeText(a))}write(t){this.writeMultilineText(t,this.summary),this.description&&(t.write("///"),t.newLine(),this.writeMultilineText(t,this.description)),this.parameters.length>0&&(t.write("///"),t.newLine(),t.write("/// # Arguments"),t.newLine(),t.write("///"),t.newLine(),this.parameters.forEach(r=>{r.description.split(`
|
|
4500
4502
|
`).forEach((i,o)=>{o===0?t.write(`/// * \`${r.name}\` - ${i.trim()}`):t.write(`/// ${i.trim()}`),t.newLine()})})),this.returns&&(t.write("///"),t.newLine(),t.write("/// # Returns"),t.newLine(),t.write("///"),t.newLine(),this.returns.split(`
|
|
4501
4503
|
`).forEach(n=>{t.write(`/// ${n.trim()}`),t.newLine()})),this.examples.length>0&&(t.write("///"),t.newLine(),t.write("/// # Examples"),t.newLine(),t.write("///"),t.newLine(),this.examples.forEach(r=>{t.write("/// ```rust"),t.newLine(),this.writeMultilineText(t,r),t.write("/// ```"),t.newLine()}))}writeMultilineText(t,r){let n=r.split(`
|
|
@@ -4810,7 +4812,7 @@ ${r}`}function WAi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
|
|
|
4810
4812
|
`),g="";return c&&(g=l.style.error(c)),[`${p} ${f} ${s}`,[m,g].filter(Boolean).join(`
|
|
4811
4813
|
`)]});var mMg=yx((e,t)=>{let{validate:r=()=>!0}=e,n=iI(e.theme),[i,o]=$c("idle"),[s,a]=$c(),[c,u]=$c(""),l=gx({status:i,theme:n});Ax(async(g,A)=>{if(i==="idle")if(hx(g)){let y=c;o("loading");let E=await r(y);E===!0?(u(y),o("done"),t(y)):(A.write(c),a(E||"You must provide a valid value"),o("idle"))}else u(A.line),a(void 0)});let p=n.style.message(e.message,i),d="",f;e.mask?d=(typeof e.mask=="string"?e.mask:"*").repeat(c.length):i!=="done"&&(f=`${n.style.help("[input is masked]")}${Swt}`),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 N5e=be(Rw(),1);var hMg={icon:{cursor:sC.pointer},style:{disabled:e=>N5e.default.dim(`- ${e}`),searchTerm:e=>N5e.default.cyan(e),description:e=>N5e.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${N5e.default.bold(t)} ${N5e.default.dim(r)}`).join(N5e.default.dim(" \u2022 "))},helpMode:"always"};function BRs(e){return!fd.isSeparator(e)&&!e.disabled}function gMg(e){return e.map(t=>{if(fd.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 AMg=yx((e,t)=>{let{pageSize:r=7,validate:n=()=>!0}=e,i=iI(hMg,e.theme),[o,s]=$c("loading"),[a,c]=$c(""),[u,l]=$c([]),[p,d]=$c(),f=gx({status:o,theme:i}),m=e6(()=>{let M=u.findIndex(BRs),K=u.findLastIndex(BRs);return{first:M,last:K}},[u]),[g=m.first,A]=$c();Z3(()=>{let M=new AbortController;return s("loading"),d(void 0),(async()=>{try{let J=await e.source(a||void 0,{signal:M.signal});M.signal.aborted||(A(void 0),d(void 0),l(gMg(J)),s("idle"))}catch(J){!M.signal.aborted&&J instanceof Error&&d(J.message)}})(),()=>{M.abort()}},[a]);let y=u[g];Ax(async(M,K)=>{if(hx(M))if(y){s("loading");let J=await n(y.value);s("idle"),J===!0?(s("done"),t(y.value)):y.name===a?d(J||"You must provide a valid value"):(K.write(y.name),c(y.name))}else K.write(a);else if(She(M)&&y)K.clearLine(0),K.write(y.name),c(y.name);else if(o!=="loading"&&(nP(M)||$M(M))){if(K.clearLine(0),nP(M)&&g!==m.first||$M(M)&&g!==m.last){let J=nP(M)?-1:1,Z=g;do Z=(Z+J+u.length)%u.length;while(!BRs(u[Z]));A(Z)}}else c(K.line)});let E=i.style.message(e.message,o),v;if(i.helpMode!=="never")if(e.instructions){let{pager:M,navigation:K}=e.instructions;v=i.style.help(u.length>r?M:K)}else v=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let I=D5e({items:u,active:g,renderItem({item:M,isActive:K}){if(fd.isSeparator(M))return` ${M.separator}`;if(M.disabled){let ae=typeof M.disabled=="string"?M.disabled:"(disabled)";return i.style.disabled(`${M.name} ${ae}`)}let J=K?i.style.highlight:ae=>ae,Z=K?i.icon.cursor:" ";return J(`${Z} ${M.name}`)},pageSize:r,loop:!1}),C;p?C=i.style.error(p):u.length===0&&a!==""&&o==="idle"&&(C=i.style.error("No results found"));let w;if(o==="done"&&y)return[f,E,i.style.answer(y.short)].filter(Boolean).join(" ").trimEnd();w=i.style.searchTerm(a);let T=y?.description,P=[f,E,w].filter(Boolean).join(" ").trimEnd(),O=[C??I," ",T?i.style.description(T):"",v].filter(Boolean).join(`
|
|
4812
4814
|
`).trimEnd();return[P,O]});var Owt=be(Rw(),1);var yMg={icon:{cursor:sC.pointer},style:{disabled:e=>Owt.default.dim(`- ${e}`),description:e=>Owt.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${Owt.default.bold(t)} ${Owt.default.dim(r)}`).join(Owt.default.dim(" \u2022 "))},helpMode:"always",indexMode:"hidden",keybindings:[]};function Twt(e){return!fd.isSeparator(e)&&!e.disabled}function bMg(e){return e.map(t=>{if(fd.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 PRs=yx((e,t)=>{let{loop:r=!0,pageSize:n=7}=e,i=iI(yMg,e.theme),{keybindings:o}=i,[s,a]=$c("idle"),c=gx({status:s,theme:i}),u=P5e(),l=!o.includes("vim"),p=e6(()=>bMg(e.choices),[e.choices]),d=e6(()=>{let T=p.findIndex(Twt),P=p.findLastIndex(Twt);if(T===-1)throw new Aae("[select prompt] No selectable choices. All choices are disabled.");return{first:T,last:P}},[p]),f=e6(()=>"default"in e?p.findIndex(T=>Twt(T)&&T.value===e.default):-1,[e.default,p]),[m,g]=$c(f===-1?d.first:f),A=p[m];Ax((T,P)=>{if(clearTimeout(u.current),hx(T))a("done"),t(A.value);else if(nP(T,o)||$M(T,o)){if(P.clearLine(0),r||nP(T,o)&&m!==d.first||$M(T,o)&&m!==d.last){let O=nP(T,o)?-1:1,M=m;do M=(M+O+p.length)%p.length;while(!Twt(p[M]));g(M)}}else if(kJt(T)&&!Number.isNaN(Number(P.line))){let O=Number(P.line)-1,M=-1,K=p.findIndex(Z=>fd.isSeparator(Z)?!1:(M++,M===O)),J=p[K];J!=null&&Twt(J)&&g(K),u.current=setTimeout(()=>{P.clearLine(0)},700)}else if(T5e(T))P.clearLine(0);else if(l){let O=P.line.toLowerCase(),M=p.findIndex(K=>fd.isSeparator(K)||!Twt(K)?!1:K.name.toLowerCase().startsWith(O));M!==-1&&g(M),u.current=setTimeout(()=>{P.clearLine(0)},700)}}),Z3(()=>()=>{clearTimeout(u.current)},[]);let y=i.style.message(e.message,s),E;if(i.helpMode!=="never")if(e.instructions){let{pager:T,navigation:P}=e.instructions;E=i.style.help(p.length>n?T:P)}else E=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let v=0,I=D5e({items:p,active:m,renderItem({item:T,isActive:P,index:O}){if(fd.isSeparator(T))return v++,` ${T.separator}`;let M=i.indexMode==="number"?`${O+1-v}. `:"";if(T.disabled){let Z=typeof T.disabled=="string"?T.disabled:"(disabled)";return i.style.disabled(`${M}${T.name} ${Z}`)}let K=P?i.style.highlight:Z=>Z,J=P?i.icon.cursor:" ";return K(`${J} ${M}${T.name}`)},pageSize:n,loop:r});if(s==="done")return[c,y,i.style.answer(A.short)].filter(Boolean).join(" ");let{description:C}=A;return`${[[c,y].filter(Boolean).join(" "),I," ",C?i.style.description(C):"",E].filter(Boolean).join(`
|
|
4813
|
-
`).trimEnd()}${Swt}`});bn();Vi();var yae={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"},EMg={[yae.GENERATION_STARTED]:!1,[yae.GENERATION_COMPLETED]:!1,[yae.GENERATION_FAILED]:!0,[yae.VERIFICATION_FAILED]:!0,[yae.SDK_PR_CREATED]:!1,[yae.UPGRADE_APPLIED]:!1,[yae.MAJOR_VERSION_BUMP]:!1};function knp(e){return EMg[e]}function Nnp(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 jnp(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 Qnp(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 znp(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 Mnp(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?yae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?yae.VERIFICATION_FAILED:yae.GENERATION_FAILED}var IMg="",vMg="FERN_AUTOMATION_EVENTS_ORIGIN",xMg=3e3,Oyi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[vMg]??IMg)),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(),xMg);try{let s={"content-type":"application/json"},a=await o_();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(znp(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function Lnp(){let{fern_run_id:e,github_run_id:t}=Jae();return{action:process.env.FERN_ACTION,run_id:e,github_run_id:t,github_run_url:process.env.FERN_GITHUB_RUN_URL,org:void 0,config_repo:process.env.FERN_CONFIG_REPO,config_commit_sha:process.env.FERN_CONFIG_COMMIT_SHA,config_branch:process.env.FERN_CONFIG_BRANCH,config_pr_number:process.env.FERN_CONFIG_PR_NUMBER,trigger:process.env.GITHUB_EVENT_NAME,cli_version:"5.
|
|
4815
|
+
`).trimEnd()}${Swt}`});bn();Vi();var yae={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"},EMg={[yae.GENERATION_STARTED]:!1,[yae.GENERATION_COMPLETED]:!1,[yae.GENERATION_FAILED]:!0,[yae.VERIFICATION_FAILED]:!0,[yae.SDK_PR_CREATED]:!1,[yae.UPGRADE_APPLIED]:!1,[yae.MAJOR_VERSION_BUMP]:!1};function knp(e){return EMg[e]}function Nnp(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 jnp(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 Qnp(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 znp(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 Mnp(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?yae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?yae.VERIFICATION_FAILED:yae.GENERATION_FAILED}var IMg="",vMg="FERN_AUTOMATION_EVENTS_ORIGIN",xMg=3e3,Oyi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[vMg]??IMg)),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(),xMg);try{let s={"content-type":"application/json"},a=await o_();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(znp(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function Lnp(){let{fern_run_id:e,github_run_id:t}=Jae();return{action:process.env.FERN_ACTION,run_id:e,github_run_id:t,github_run_url:process.env.FERN_GITHUB_RUN_URL,org:void 0,config_repo:process.env.FERN_CONFIG_REPO,config_commit_sha:process.env.FERN_CONFIG_COMMIT_SHA,config_branch:process.env.FERN_CONFIG_BRANCH,config_pr_number:process.env.FERN_CONFIG_PR_NUMBER,trigger:process.env.GITHUB_EVENT_NAME,cli_version:"5.55.0"}}function Unp(){return process.env.FERN_AUTOMATION==="true"}var Byi=class{constructor(t,r=Oyi.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=Lnp()}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:Nnp(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!knp(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:jnp(t,r),context:{automation:Qnp(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};jt();function Pyi(e,t,r){if(t instanceof _c)return;let n=iAe(t,r?.code),i=r?.argv??process.argv,o=i.join(" "),s=r?.message??(t instanceof Error?t.message:void 0)??"",a=t??new B({message:s,code:n});Unp()?wMg(i,e,n,s,a):CMg(e,o,n,a)}function CMg(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),Kqe(r)&&e.captureException(n,{tags:{"error.code":r}})}function wMg(e,t,r,n,i){let o=Mnp(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}jt();function j5e(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function Dyi({cliName:e,packageVersion:t,isLocal:r}){return j5e()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var Ryi=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(Dyi(r)&&n!=null&&n.length>0){let i="production";if(i==null||i.length===0)throw new B({message:"SENTRY_ENVIRONMENT must be set when SENTRY_DSN is configured",code:B.Code.ConfigError});this.sentry=UOt({dsn:n,release:t,environment:i,defaultIntegrations:!1,integrations:[O9e(),Pge(),Dge(),mge(),Bge()],tracesSampleRate:0,attachStacktrace:!0,sendClientReports:!1}),VOt()}}captureException(t,r){if(this.sentry!=null)try{let n=r?.tags,i=r?.context,o=n!=null&&Object.keys(n).length>0,s=i!=null&&Object.values(i).some(a=>a!=null);return!o&&!s?this.sentry.captureException(t):lO(a=>{if(o&&a.setTags(n),i!=null)for(let[c,u]of Object.entries(i))u!=null&&a.setContext(c,u);return this.sentry?.captureException(t,void 0,a)})}catch{return}}async flush(){this.sentry!=null&&await Promise.resolve(this.sentry.flush(2e3)).catch(()=>{})}};jt();var Fyi=class{originalWrite;redirected=!1;redirect(){if(this.redirected)throw new B({message:"StdoutRedirector: already redirected \u2014 did you forget to restore()?",code:B.Code.InternalError});this.originalWrite=process.stdout.write,process.stdout.write=process.stderr.write.bind(process.stderr),this.redirected=!0}restore(){!this.redirected||this.originalWrite==null||(process.stdout.write=this.originalWrite,this.originalWrite=void 0,this.redirected=!1)}async withRedirect(t){this.redirect();try{return await t()}finally{this.restore()}}};NEe();Dt();mb();jt();bn();var zJt=class{result=df.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 _c}failWithoutThrowing(t,r,n){this.result=df.Failure,!(r instanceof _c)&&(t!=null&&(this.lastFailureMessage=t),pMt({message:t,error:r,logger:this.logger}),Pyi(this,r,{...n,message:t}))}getLastFailureMessage(){return this.lastFailureMessage}captureException(t,r){return this.captureExceptionImpl?.(t,r)}emitAutomationTelemetryEvent(t,r){this.emitAutomationTelemetryEventImpl(t,r)}getResult(){return this.result}instrumentPostHogEvent(t){this.instrumentPostHogEventImpl(t)}logAtLevel(t,...r){this.logAtLevelWithOverrides(t,r)}logAtLevelWithOverrides(t,r,n={}){this.log({parts:r,level:t,time:new Date,...n})}log(t){this.bufferedLogs.push({...t,prefix:this.logPrefix}),this.shouldBufferLogs||this.flushLogs()}flushLogs(){this.logImmediately(this.bufferedLogs),this.bufferedLogs=[]}logger=lv(this.logAtLevel.bind(this));addInteractiveTask({name:t,subtitle:r}){let n=new DRs({name:t,subtitle:r,logImmediately:i=>this.logImmediately(i),logPrefix:`${this.logPrefix}${fe.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()===df.Success}printInteractiveTasks({spinner:t}){return this.subtasks.map(r=>r.print({spinner:t})).join(`
|
|
4814
4816
|
`)}},DRs=class extends zJt{name;subtitle;constructor({name:t,subtitle:r,...n}){super(n),this.name=t,this.subtitle=r}start(){return super.start(),this.logAtLevelWithOverrides(Un.Info,["Started."],{omitOnTTY:!0}),this.flushLogs(),this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.result===df.Success?this.logAtLevelWithOverrides(Un.Info,["Finished."],{omitOnTTY:!0}):this.logAtLevelWithOverrides(Un.Error,["Failed."],{omitOnTTY:!0}),super.finish())}setSubtitle(t){this.subtitle=t}print({spinner:t}){let r=[this.name];return this.subtitle!=null&&r.push(fe.dim(this.subtitle)),r.push(...this.subtasks.map(n=>n.print({spinner:t}))),$N({prefix:this.getIcon({spinner:t}),content:r.join(`
|
|
4815
4817
|
`)})}printInteractiveTasks({spinner:t}){return this.print({spinner:t})}getIcon({spinner:t}){let r=this.subtasks.length>0;switch(this.status){case"notStarted":return r?fe.dim("\u25B8 "):fe.dim("\u25E6 ");case"running":return r?fe.cyan("\u25BE "):t;case"finished":switch(this.getResult()){case df.Success:return r?fe.green("\u25BE "):fe.green("\u2713 ");case df.Failure:return r?fe.red("\u25BE "):fe.red("x ")}}}getResult(){if(this.result===df.Failure)return df.Failure;for(let t of this.subtasks)if(t.getResult()===df.Failure)return df.Failure;return df.Success}};jt();var Vnp=be(hze(),1);bn();function _np(e){return e.filter(t=>t.isUpgradeAvailable).length>0}function SMg(e){return(e.cliUpgradeInfo?.isUpgradeAvailable??!1)||_np(e.generatorUpgradeInfo)}async function qnp({cliEnvironment:e,upgradeInfo:t}){if(!SMg(t)||e.packageVersion==t.cliUpgradeInfo?.latestVersion)return;let r=`${fe.underline("Upgrades available")}
|
|
4816
4818
|
|
|
@@ -4819,7 +4821,7 @@ ${r}`}function WAi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
|
|
|
4819
4821
|
Run ${fe.cyan("fern generator upgrade")} to upgrade your generators.`),i.length>2&&(r+=`
|
|
4820
4822
|
Run ${fe.cyan("fern generator upgrade --list")} to see the full list of generator upgrades available.`),_nt(r,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"})}async function RRs({generatorUpgradeInfo:e,header:t,limit:r,includeBoxen:n=!0}){if(!_np(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+=`
|
|
4821
4823
|
${await TMg(a.generatorName)} (${a.apiName!=null?"API: "+a.apiName+", ":""}Group: ${a.generatorGroup}) `+fe.dim(a.currentVersion)+fe.reset(" \u2192 ")+fe.green(a.latestVersion);return i+=`
|
|
4822
|
-
`,n?_nt(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function TMg(e){let r=await new Vnp.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new B({message:`Generator ${e} not found`,code:B.Code.ConfigError});return r.body.displayName}Uo();UEe();jt();async function OMg({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await Gnp({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=oze(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await s1({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 Gnp({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=oze(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await s1({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 Gnp({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 yL({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?PA(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 Wnp(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=AQ(a.latestVersion,a.previousVersion)}catch{throw new B({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:B.Code.ConfigError})}r.debug(`Latest version: ${a.latestVersion}. `+(c?"Upgrade available.":"No upgrade available.")),n.push({generatorName:s,generatorGroup:i,apiName:t,isUpgradeAvailable:c,currentVersion:a.previousVersion,latestVersion:a.latestVersion})}return n}async function kyi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await OMg({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(...Wnp(u,c,t.logger));else s.push(...Wnp(a.versions,void 0,t.logger))}return s}jt();Z_i();async function The({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await UDt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new B({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:B.Code.NetworkError})}}var Hnp=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Nyi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Un.Info;isLocal;stdoutRedirector=new Fyi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await nUt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new OMt(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 Ryi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new Byi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.
|
|
4824
|
+
`,n?_nt(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function TMg(e){let r=await new Vnp.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new B({message:`Generator ${e} not found`,code:B.Code.ConfigError});return r.body.displayName}Uo();UEe();jt();async function OMg({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await Gnp({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=oze(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await s1({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 Gnp({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=oze(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await s1({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 Gnp({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 yL({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?PA(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 Wnp(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=AQ(a.latestVersion,a.previousVersion)}catch{throw new B({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:B.Code.ConfigError})}r.debug(`Latest version: ${a.latestVersion}. `+(c?"Upgrade available.":"No upgrade available.")),n.push({generatorName:s,generatorGroup:i,apiName:t,isUpgradeAvailable:c,currentVersion:a.previousVersion,latestVersion:a.latestVersion})}return n}async function kyi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await OMg({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(...Wnp(u,c,t.logger));else s.push(...Wnp(a.versions,void 0,t.logger))}return s}jt();Z_i();async function The({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await UDt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new B({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:B.Code.NetworkError})}}var Hnp=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Nyi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Un.Info;isLocal;stdoutRedirector=new Fyi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await nUt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new OMt(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 Ryi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new Byi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.55.0"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${fe.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new _c}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof _c)&&(pMt({message:t,error:r,logger:this.logger}),Pyi(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)+`
|
|
4823
4825
|
`),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 qnp({cliEnvironment:this.environment,upgradeInfo:t});r!=null&&(r.endsWith(`
|
|
4824
4826
|
`)||(r+=`
|
|
4825
4827
|
`),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=tPi(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 zJt(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 _c}finally{n.finish()}return i}instrumentPostHogEvent(t){this.isLocal||this.posthogManager.sendEvent(t)}instrumentPostHogAutomationEvent(t){this.isLocal||this.posthogManager.sendAutomationEvent(t)}captureException(t,r){return this.sentryClient.captureException(t,r)}emitAutomationTelemetryEvent(t,r){this.automationTelemetryManager.emit(t,r)}logger=lv((t,...r)=>this.log(t,...r));stderr=lv((t,...r)=>this.logStderr(t,...r));constructTaskInitForWorkspace(t){let r=t.type==="docs"?"docs":t.workspaceName??"api",n=Knp(r),i=1+(this.longestWorkspaceName!=null?Knp(this.longestWorkspaceName):n).length,o=n.padEnd(i),s=Hnp[this.numTasks++%Hnp.length],a=fe.hex(s)(o);return{...this.constructTaskInit(),logPrefix:a,title:fe.hex(s).bold(r)}}constructTaskInit(){return{logImmediately:t=>this.logImmediately(t),takeOverTerminal:t=>this.ttyAwareLogger.takeOverTerminal(t),onResult:t=>{t===df.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=>ew.indexOf(i.level)>=ew.indexOf(this.logLevel));this.ttyAwareLogger.log(n,{includeDebugInfo:this.logLevel===Un.Debug,stderr:r||this.jsonMode})}_suppressUpgradeMessage=!1;suppressUpgradeMessage(){this._suppressUpgradeMessage=!0}_isUpgradeAvailable;async isUpgradeAvailable({includePreReleases:t=!1}={}){if(this._isUpgradeAvailable==null){this.logger.debug(`Checking if ${this.environment.packageName} upgrade is available...`);let r=await The({cliEnvironment:this.environment,includePreReleases:t}),n=AQ(r,this.environment.packageVersion);this.logger.debug(`Latest version: ${r}. `+(n?"Upgrade available.":"No upgrade available."));let i={isUpgradeAvailable:n,latestVersion:r},o=await kyi({project:this.project,cliContext:this});this._isUpgradeAvailable={cliUpgradeInfo:i,generatorUpgradeInfo:o}}return this._isUpgradeAvailable}async confirmPrompt(t,r=!1){try{return await PRs({message:t,choices:[{name:"No",value:!1},{name:"Yes",value:!0}],default:r,theme:{prefix:fe.yellow("?"),style:{answer:i=>fe.cyan(i),message:i=>fe.bold(i),highlight:i=>fe.cyan(i)}}})}catch(n){throw n?.name==="ExitPromptError"?(this.logger.info(`
|