fern-api 5.27.2 → 5.27.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/cli.cjs +6 -6
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -3027,7 +3027,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
3027
3027
  `);s.push(c)}return s.push(""),s}),""].join(`
3028
3028
  `);try{SYe.writeFileSync(n,i,"utf8"),this.logger.info(`Missing examples report written to: ${n}`)}catch(o){this.logger.warn(`Failed to write missing examples report to ${n}:`,String(o))}}finalize(){}convertExampleToJson(t){switch(t.type){case"primitive":return t.value;case"array":return t.value.map(r=>this.convertExampleToJson(r));case"object":{let r={};return Object.entries(t.properties).forEach(([n,i])=>{r[n]=this.convertExampleToJson(i)}),r}case"map":{let r={};return t.value.forEach(n=>{r[String(n.key)]=this.convertExampleToJson(n.value)}),r}case"oneOf":if(t.value.type==="undiscriminated")return this.convertExampleToJson(t.value.value);{let r={};return Object.entries(t.value.value).forEach(([n,i])=>{r[n]=this.convertExampleToJson(i)}),r}case"enum":return t.value;case"literal":return t.value;case"null":return null;case"unknown":return this.convertExampleToJson(t.value);default:return t}}getSchemaDescription(t){if("description"in t)return t.description}getSchemaTypeName(t){switch(t.type){case"primitive":return`primitive (${t.schema.type})`;case"object":return t.generatedName||"object";case"array":return"array";case"map":return"map";case"optional":return`optional (${this.getSchemaTypeName(t.value)})`;case"nullable":return`nullable (${this.getSchemaTypeName(t.value)})`;case"reference":return t.generatedName||"reference";case"enum":return t.generatedName||"enum";case"literal":return"literal";case"oneOf":return"oneOf";case"unknown":return"unknown";default:return"unknown"}}buildEndpointExample(t){let r=LIp(t.request),n=zIp(t.response);if(r?.type==="unsupported"||n?.type==="unsupported")return[];let i=[];if(r!=null&&r.type==="present"){let p=this.isSchemaRequired(r.schema);if(r.examples.length===0){let d=this.exampleTypeFactory.buildExample({skipReadonly:$zi(t.method),schema:r.schema,exampleId:void 0,example:void 0,options:{isParameter:!1,ignoreOptionals:!0}});d!=null?(i.push([void 0,d]),this.addMissingExampleRecord(t,"request",this.getSchemaTypeName(r.schema),"No user-provided examples found in OpenAPI spec",{schemaDescription:this.getSchemaDescription(r.schema),autoGeneratedExample:this.convertExampleToJson(d)})):this.addMissingExampleRecord(t,"request",this.getSchemaTypeName(r.schema),"Auto-generation failed (schema too complex or circular references)",{schemaDescription:this.getSchemaDescription(r.schema)})}else for(let{name:d,value:f}of r.examples){let m=this.exampleTypeFactory.buildExample({skipReadonly:$zi(t.method),schema:r.schema,exampleId:d,example:f,options:{isParameter:!1,ignoreOptionals:!0}});m!=null?i.push([d,m]):this.addMissingExampleRecord(t,"request",this.getSchemaTypeName(r.schema),`Failed to build example from provided data (example id: ${d})`,{schemaDescription:this.getSchemaDescription(r.schema)})}if(p&&i.length===0)return this.logger.trace(`Failed to generate required request example for ${t.method.toUpperCase()} ${t.path}`),[]}let o=[];if(n!=null&&n.type==="present"){let p=this.isSchemaRequired(n.schema);if(n.examples.length===0){let d=this.exampleTypeFactory.buildExample({skipReadonly:!1,schema:n.schema,exampleId:void 0,example:void 0,options:{maxDepth:this.context.options.exampleGeneration?.response?.["max-depth"]??3,isParameter:!1,ignoreOptionals:!1}});d!=null?(t.response?.type==="json"?o.push([void 0,o_.withoutStreaming(d)]):(t.response?.type==="streamingJson"||t.response?.type==="streamingSse")&&o.push([void 0,o_.withStreaming({sse:t.response?.type==="streamingSse",events:[d]})]),this.addMissingExampleRecord(t,"response",this.getSchemaTypeName(n.schema),"No user-provided examples found in OpenAPI spec",{schemaDescription:this.getSchemaDescription(n.schema),autoGeneratedExample:this.convertExampleToJson(d)})):this.addMissingExampleRecord(t,"response",this.getSchemaTypeName(n.schema),"Auto-generation failed (schema too complex or circular references)",{schemaDescription:this.getSchemaDescription(n.schema)})}else for(let{name:d,value:f}of n.examples){let m=this.exampleTypeFactory.buildExample({skipReadonly:!1,schema:n.schema,exampleId:d,example:f,options:{maxDepth:this.context.options.exampleGeneration?.response?.["max-depth"]??3,isParameter:!1,ignoreOptionals:!1}});m!=null?t.response?.type==="json"?o.push([d,o_.withoutStreaming(m)]):(t.response?.type==="streamingJson"||t.response?.type==="streamingSse")&&o.push([void 0,o_.withStreaming({sse:t.response?.type==="streamingSse",events:[m]})]):this.addMissingExampleRecord(t,"response",this.getSchemaTypeName(n.schema),`Failed to build example from provided data (example id: ${d})`,{schemaDescription:this.getSchemaDescription(n.schema)})}if(p&&o.length===0)return this.logger.trace(`Failed to generate required response example for ${t.method.toUpperCase()} ${t.path}`),[]}let s=[];for(let p of t.pathParameters){let d=this.isSchemaRequired(p.schema),f=this.exampleTypeFactory.buildExample({schema:p.schema,exampleId:void 0,example:void 0,options:{name:p.name,isParameter:!0,ignoreOptionals:!0}});if(f!=null&&!T9(f)&&(this.logger.debug(`Expected a primitive example but got ${f.type} for path parameter ${p.name} for ${t.method.toUpperCase()} ${t.path}`),f=void 0),d&&f==null)return[];f!=null&&s.push({name:p.name,parameterNameOverride:p.parameterNameOverride,value:f})}let a=[];for(let p of t.queryParameters){let d=this.isSchemaRequired(p.schema),f=this.exampleTypeFactory.buildExample({schema:p.schema,exampleId:void 0,example:void 0,options:{name:p.name,isParameter:!0,ignoreOptionals:!0}});if(f!=null&&!T9(f)&&f.type!=="array"&&(this.logger.debug(`Expected a primitive or array example but got ${f.type} for query parameter ${p.name} for ${t.method.toUpperCase()} ${t.path}`),f=void 0),d&&f==null)return[];f!=null&&a.push({name:p.name,value:f})}let c=[];for(let p of t.headers){let d=this.isSchemaRequired(p.schema),f=this.exampleTypeFactory.buildExample({schema:p.schema,exampleId:void 0,example:void 0,options:{name:p.name,isParameter:!0,ignoreOptionals:!0}});if(f!=null&&!T9(f)&&(this.logger.debug(`Expected a primitive example but got ${f.type} for header ${p.name} for ${t.method.toUpperCase()} ${t.path}`),f=void 0),d&&f==null)return[];f!=null&&c.push({name:p.name,value:f})}for(let p of this.globalHeaders){let d=p.schema!=null?l_(p.schema):zr.primitive({nameOverride:void 0,generatedName:"",title:void 0,description:void 0,availability:void 0,namespace:void 0,groupName:void 0,schema:$i.string({default:void 0,pattern:void 0,maxLength:void 0,minLength:void 0,example:void 0,format:void 0})}),f=this.exampleTypeFactory.buildExample({schema:d,exampleId:void 0,example:void 0,options:{name:p.header,isParameter:!0,ignoreOptionals:!0}});f!=null&&!T9(f)&&(this.logger.debug(`Expected a primitive example but got ${f.type} for global header ${p.header} for ${t.method.toUpperCase()} ${t.path}`),f=void 0),f!=null&&c.push({name:p.header,value:f})}let u=[];t.request!=null&&t.response!=null?u=MIp(i,o):t.request!=null?u=i.map(([p,d])=>({id:p,request:d,response:void 0})):t.response!=null&&(u=o.map(([p,d])=>({id:p,request:void 0,response:d})));let l=t.examples.filter(p=>g2t(p)).flatMap(p=>{if(p.type==="unknown"){if(p.value!=null){let d=p.value["code-samples"];if(d!=null)return this.convertCodeSamples(d)}return}else return p.codeSamples}).filter(p=>Ha(p));return u.length===0?[i_.full({name:void 0,description:void 0,pathParameters:s,queryParameters:a,headers:c,request:void 0,response:void 0,codeSamples:l})]:u.map(({id:p,request:d,response:f})=>i_.full({name:p,description:void 0,pathParameters:s,queryParameters:a,headers:c,request:d,response:f,codeSamples:l}))}convertCodeSamples(t){return t.map(r=>"language"in r?kY.language({name:r.name??void 0,description:r.docs??void 0,language:r.language,code:r.code,install:r.install??void 0}):kY.sdk({name:r.name??void 0,description:r.docs??void 0,sdk:r.sdk==="c#"?y1.Csharp:r.sdk,code:r.code})).filter(Ha)}isSchemaRequired(t){return uxr(this.getResolvedSchema(t))}getResolvedSchema(t){return t}};function MIp(e,t){let r=[];if(e.length<=1){let[i,o]=e[0]??[];if(t.length===0)return r.push({id:i,request:o,response:void 0}),r;for(let[s,a]of t)r.push({id:s??i,request:o,response:a});return r}if(t.length<=1){let[i,o]=t[0]??[];if(t.length===0)return r.push({id:i,request:void 0,response:o}),r;for(let[s,a]of e)r.push({id:s??i,request:a,response:o});return r}let n=new Set;for(let[i,o]of e){let s=t.find(([c])=>c==null)?.[1]??t[0]?.[1];if(i==null){if(s==null)continue;r.push({id:void 0,request:o,response:s});continue}let a=!1;for(let c=0;c<t.length;c++){let[u,l]=t[c];u==null||n.has(c)||i===u&&(r.push({id:i,request:o,response:l}),u!=null&&n.add(c),a=!0)}!a&&s!=null&&r.push({id:i,request:o,response:s})}for(let i=0;i<t.length;i++){if(n.has(i))continue;let[o,s]=t[i],a=e.find(([c])=>c==null)?.[1]??e[0]?.[1];a!=null&&r.push({id:o,request:a,response:s})}return r}function LIp(e){if(e!=null)return e.type==="multipart"?{type:"present",schema:UIp(e),examples:[]}:e.type==="json"||e.type==="formUrlEncoded"?{type:"present",schema:e.schema,examples:e.fullExamples??[]}:{type:"unsupported"}}function zIp(e){if(e!=null)return e.type!=="json"&&e.type!=="streamingJson"&&e.type!=="streamingSse"?{type:"unsupported"}:{type:"present",schema:e.schema,examples:e.fullExamples??[]}}function T9(e){switch(e.type){case"primitive":case"enum":case"literal":return!0;case"unknown":return T9(e);case"array":case"object":case"map":return!1;case"oneOf":switch(e.value.type){case"discriminated":return!1;case"undiscriminated":return T9(e.value.value);default:return!1}case"null":return!0;default:Ce(e)}}function UIp(e){return zr.object({properties:e.properties.map(t=>t.schema.type==="file"?null:{key:t.key,schema:l_(t.schema.value),audiences:[],conflict:{},generatedName:t.key,nameOverride:void 0,availability:void 0,readonly:void 0,writeonly:void 0,inline:void 0}).filter(Ha),allOf:[],allOfPropertyConflicts:[],fullExamples:void 0,description:e.description,nameOverride:void 0,generatedName:"",title:void 0,namespace:void 0,groupName:void 0,additionalProperties:!1,availability:void 0,encoding:void 0,source:e.source,inline:void 0,minProperties:void 0,maxProperties:void 0})}var TYe=class{exampleTypeFactory;schemas;constructor(t,r){this.exampleTypeFactory=new dbe(t,new Set,r),this.schemas=t}buildWebsocketSessionExamplesForExtension({context:t,extensionExamples:r,handshake:n,source:i,namespace:o}){let s=[];for(let a of r){let c=[];for(let p of n.queryParameters){let d=this.isSchemaRequired(p.schema),f=this.exampleTypeFactory.buildExample({schema:p.schema,exampleId:void 0,example:a.queryParameters?.[p.name],options:{name:p.name,isParameter:!0,ignoreOptionals:!0}});f!=null&&!T9(f)&&(f=void 0),!(d&&f==null)&&f!=null&&c.push({name:p.name,value:f})}let u=[];for(let p of n.headers){let d=this.isSchemaRequired(p.schema),f=this.exampleTypeFactory.buildExample({schema:p.schema,exampleId:void 0,example:a.headers?.[p.name],options:{name:p.name,isParameter:!0,ignoreOptionals:!0}});f!=null&&!T9(f)&&(f=void 0),!(d&&f==null)&&f!=null&&u.push({name:p.name,value:f})}let l=[];for(let p of a.messages){let d=t.getExampleMessageReference(p),f=t.resolveMessageReference({$ref:d}),m=Wn(f.payload)?t.resolveSchemaReference(f.payload):f.payload,h=this.exampleTypeFactory.buildExample({schema:fc(m,!1,!1,t,[p.messageId],i,o),exampleId:void 0,example:p.value,options:{isParameter:!1,ignoreOptionals:!0}});h!=null&&l.push({messageType:p.type,payload:h,description:void 0})}s.push({name:a.summary,queryParameters:c,headers:u,description:a.description,messages:l})}return s}buildWebsocketSessionExample({handshake:t,messages:r}){let n={name:void 0,queryParameters:[],headers:[],description:void 0,messages:[]},i=[];for(let s of t.queryParameters){let a=this.isSchemaRequired(s.schema),c=this.exampleTypeFactory.buildExample({schema:s.schema,exampleId:void 0,example:void 0,options:{name:s.name,isParameter:!0,ignoreOptionals:!0}});if(c!=null&&!T9(c)&&(c=void 0),a&&c==null)return;c!=null&&i.push({name:s.name,value:c})}let o=[];for(let s of t.headers){let a=this.isSchemaRequired(s.schema),c=this.exampleTypeFactory.buildExample({schema:s.schema,exampleId:void 0,example:void 0,options:{name:s.name,isParameter:!0,ignoreOptionals:!0}});if(c!=null&&!T9(c)&&(c=void 0),a&&c==null)return;c!=null&&o.push({name:s.name,value:c})}for(let s of r){let a=this.exampleTypeFactory.buildExample({schema:s.payload,exampleId:void 0,example:void 0,options:{isParameter:!1,ignoreOptionals:!0}});a!=null&&n.messages.push({messageType:s.type,payload:a,description:void 0})}return n}isSchemaRequired(t){return uxr(this.getResolvedSchema(t))}getResolvedSchema(t){for(;t.type==="reference";){let r=this.schemas[t.schema];if(r==null)throw new j({message:`Unexpected error: Failed to resolve schema reference: ${t.schema}`,code:j.Code.InternalError});t=r}return t}};var Ly={FERN_PARAMETER_OPTIONAL:"x-fern-optional",FERN_CHANNEL_ADDRESS:"x-fern-address",FERN_DISPLAY_NAME:"x-fern-display-name",FERN_SDK_GROUP_NAME:"x-fern-sdk-group-name",FERN_SDK_METHOD_NAME:"x-fern-sdk-method-name",FERN_EXAMPLES:"x-fern-examples",BASE_PATH:"x-fern-base-path",FERN_ENUM:"x-fern-enum",IGNORE:"x-fern-ignore",FERN_PARAMETER_NAME:"x-fern-parameter-name",FERN_SERVER_NAME:"x-fern-server-name"};function pxr(e){return Lr(e,Ly.FERN_EXAMPLES)??[]}function fxr(e,t){return t.includes("://")?t:`${e}://${t}`}function dxr(e){return e.startsWith("/")?e:"/"+e}function KEa({context:e,breadcrumbs:t,source:r,asyncApiOptions:n,document:i}){let o={},s={};for(let[u,l]of Object.entries(i.components?.schemas??{})){let p=fc(l,!1,!1,e,[u],r,e.namespace);o[u]=p}let a=new TYe(o,e),c={};for(let[u,l]of Object.entries(i.servers??{})){let p=Lr(l,Ly.FERN_SERVER_NAME);c[u]={name:p??u,url:fxr(l.protocol,l.url)}}for(let[u,l]of Object.entries(i.channels??{})){let p=Lr(l,Ly.IGNORE);if(p!=null&&p){e.logger.debug(`Channel ${u} is marked with x-fern-ignore. Skipping.`);continue}let d=[];if(l.parameters!=null)for(let[y,I]of Object.entries(l.parameters??{})){let w=Lr(I,Ly.FERN_PARAMETER_NAME);d.push({name:y,description:I.description,parameterNameOverride:w,schema:I.schema!=null?fc(I.schema,!1,!1,e,t,r,e.namespace):zr.primitive({schema:$i.string({default:void 0,pattern:void 0,format:void 0,maxLength:void 0,minLength:void 0,example:void 0}),description:void 0,availability:void 0,generatedName:"",title:void 0,namespace:void 0,groupName:void 0,nameOverride:void 0}),variableReference:void 0,availability:bw(I),source:r,explode:void 0,clientDefault:void 0})}let f=[],m=[];if(l.bindings?.ws!=null){if(l.bindings.ws.headers!=null){let y=l.bindings.ws.headers.required??[];for(let[I,w]of Object.entries(l.bindings.ws.headers.properties??{})){if(Wn(w)){let O=e.resolveSchemaReference(w),F=y.includes(I),[P,U]=e.options.coerceOptionalSchemasToNullable?[!1,!F]:[!F,!1];f.push({name:I,schema:x3(w,P,U,e,t,void 0,r,e.namespace),description:O.description,parameterNameOverride:void 0,env:void 0,availability:bw(O),source:r,clientDefault:void 0});continue}let C=y.includes(I),[x,B]=e.options.coerceOptionalSchemasToNullable?[!1,!C]:[!C,!1];f.push({name:I,schema:fc(w,x,B,e,[...t,I],r,e.namespace),description:w.description,parameterNameOverride:void 0,env:void 0,availability:bw(w),source:r,clientDefault:void 0})}}if(l.bindings.ws.query!=null){let y=l.bindings.ws.query.required??[];for(let[I,w]of Object.entries(l.bindings.ws.query.properties??{})){if(Wn(w)){let O=e.resolveSchemaReference(w),F=y.includes(I),[P,U]=e.options.coerceOptionalSchemasToNullable?[!1,!F]:[!F,!1];m.push({name:I,schema:x3(w,P,U,e,t,void 0,r,e.namespace),description:O.description,parameterNameOverride:void 0,availability:bw(O),source:r,explode:void 0,clientDefault:void 0});continue}let C=y.includes(I),[x,B]=e.options.coerceOptionalSchemasToNullable?[!1,!C]:[!C,!1];m.push({name:I,schema:fc(w,x,B,e,[...t,I],r,e.namespace),description:w.description,parameterNameOverride:void 0,availability:bw(w),source:r,explode:void 0,clientDefault:void 0})}}}let h;l.publish!=null&&("oneOf"in l.publish.message?h=WEa({generatedName:l.publish.operationId??"PublishEvent",event:l.publish,breadcrumbs:t,context:e,source:r,options:e.options,asyncApiOptions:n}):h=HEa({action:"Publish",channelPath:u,message:l.publish.message,context:e,source:r}));let A;if(l.subscribe!=null&&("oneOf"in l.subscribe.message?A=WEa({generatedName:l.subscribe.operationId??"SubscribeEvent",event:l.subscribe,breadcrumbs:t,context:e,source:r,options:e.options,asyncApiOptions:n}):A=HEa({action:"Subscribe",channelPath:u,message:l.subscribe.message,context:e,source:r})),f.length>0||m.length>0||h!=null||A!=null){let y=pxr(l),I=[];if(y.length>0)I=a.buildWebsocketSessionExamplesForExtension({context:e,extensionExamples:y,handshake:{headers:f,queryParameters:m},source:r,namespace:e.namespace});else{let B=[];h!=null&&B.push({type:"publish",payload:h}),A!=null&&B.push({type:"subscribe",payload:A});let O=a.buildWebsocketSessionExample({handshake:{headers:f,queryParameters:m},messages:B});O!=null&&I.push(O)}let w=Lr(l,Ly.FERN_CHANNEL_ADDRESS),C=w??dxr(u),x=[];h!=null&&x.push({origin:"client",name:"publish",displayName:l.publish!=null?Lr(l.publish,Ly.FERN_DISPLAY_NAME):void 0,body:fd(h),methodName:l.publish!=null?Lr(l.publish,Ly.FERN_SDK_METHOD_NAME):void 0}),A!=null&&x.push({origin:"server",name:"subscribe",displayName:l.subscribe!=null?Lr(l.subscribe,Ly.FERN_DISPLAY_NAME):void 0,body:fd(A),methodName:l.subscribe!=null?Lr(l.subscribe,Ly.FERN_SDK_METHOD_NAME):void 0}),s[u]={audiences:Lr(l,kn.AUDIENCES)??[],handshake:{headers:f.map(B=>({...B,schema:fd(B.schema),env:B.env})),queryParameters:m.map(B=>({...B,schema:fd(B.schema)})),pathParameters:d.map(B=>({...B,schema:fd(B.schema)}))},groupName:e.resolveGroupName([Lr(l,Ly.FERN_SDK_GROUP_NAME)??u]),messages:x,servers:(l.servers?.map(B=>c[B])??Object.values(c)).filter(B=>B!=null&&B.name!=null).map(B=>({...B,name:B.name})),summary:Lr(l,Ly.FERN_DISPLAY_NAME),connectMethodName:Lr(l,Ly.FERN_SDK_METHOD_NAME),path:C,description:l.description,examples:I,source:r}}}return{groupedSchemas:xYe(e.namespace,o),channels:s??void 0,servers:Object.values(c).map(u=>({...u,name:u.name})),basePath:Lr(i,Ly.BASE_PATH)}}function WEa({generatedName:e,event:t,context:r,breadcrumbs:n,source:i,options:o,asyncApiOptions:s}){if("oneOf"in t.message&&t.message.oneOf!=null){let a=[],c=[];for(let u of t.message.oneOf){let l,p={type:"notFound"};if(Wn(u)){let d=r.resolveMessageReference(u);!Wn(d.payload)&&s.naming==="v2"?(p=d.name?{type:"name",name:d.name}:p,l={...d.payload,title:d.name??d.payload.title,description:d.name??d.payload.description}):l=d.payload}else l=u;c.push(p),a.push(l)}return pbe({description:t.description??t.message.description,availability:bw(t.message),subtypes:a,nameOverride:t.operationId,generatedName:e,title:t.message.title,groupName:void 0,wrapAsOptional:!1,wrapAsNullable:!1,breadcrumbs:n,context:r,encoding:void 0,source:i,namespace:r.namespace,subtypeSuffixOverrides:s.naming==="v2"?c:[]})}}function HEa({action:e,channelPath:t,message:r,context:n,source:i}){if(r.payload!=null){let o=r.payload;return Wn(r.payload)&&(o=n.resolveSchemaReference(r.payload)),fc(o,!1,!1,n,[t,e],i,n.namespace)}}_t();var mxr=class extends wYe{getExampleMessageReference(t){let r=t.channelId??this.getDefaultChannelId();if(r==null)throw new j({message:"Cannot resolve example message reference: no channelId provided and no channels found in document",code:j.Code.InternalError});return`#/channels/${r}/messages/${t.messageId}`}getDefaultChannelId(){return Object.keys(this.document.channels??{})[0]}resolveParameterReference(t){let r="#/components/parameters/";if(this.document.components==null||this.document.components.parameters==null||!t.$ref.startsWith(r))throw new j({message:`Failed to resolve ${t.$ref}`,code:j.Code.ReferenceError});let n=t.$ref.substring(r.length),i=this.document.components.parameters[n];if(i==null)throw new j({message:`${t.$ref} is undefined`,code:j.Code.ReferenceError});return"$ref"in i?this.resolveParameterReference(i):i}resolveMessageReference(t,r=!1){let n="#/channels/",i="#/components/messages/";if(t==null)throw new j({message:"Cannot resolve message reference: message is null or undefined",code:j.Code.InternalError});if(!t.$ref)throw new j({message:"Cannot resolve message reference: message.$ref is undefined or empty",code:j.Code.ReferenceError});if(t.$ref.startsWith(n)){let c=t.$ref.split("/"),u=c[2],l=c[4],p=u?.replace(/~1/g,"/").replace(/~0/g,"~");if(p==null||l==null||!this.document.channels?.[p])throw new j({message:`Failed to resolve message reference ${t.$ref} in channel ${p}`,code:j.Code.ReferenceError});let f=this.document.channels[p].messages?.[l];if(f==null)throw new j({message:`${t.$ref} is undefined`,code:j.Code.ReferenceError});return"$ref"in f&&!r?this.resolveMessageReference(f):{...f,name:l}}let o=this.document.components;if(!t.$ref.startsWith(i)||!o?.messages)throw new j({message:`Failed to resolve message reference: ${t.$ref} in v3 components`,code:j.Code.ReferenceError});let s=t.$ref.substring(i.length),a=o.messages[s];if(a==null)throw new j({message:`${t.$ref} is undefined`,code:j.Code.ReferenceError});return{...a,name:s}}isMessageWithPayload(t){return t!=null&&typeof t=="object"&&"payload"in t}isReferenceObject(t){return t!=null&&typeof t=="object"&&"$ref"in t}};jt();_t();ao();var JEa="#/channels/",YEa="#/servers/",e4i="$message.";function ZEa({context:e,breadcrumbs:t,source:r,asyncApiOptions:n,document:i}){axr();let o={},s={},a={},c=[],u={};e.logger.debug("Parsing V3 AsyncAPI...");let l=VY();for(let[O,F]of Object.entries(i.components?.schemas??{})){let P=l.getUniqueSchemaId(O,e.logger,e.options.resolveSchemaCollisions);o[P]=fc(F,!1,!1,e,[P],r,e.namespace)}for(let[O,F]of Object.entries(i.channels??{}))if(s[O]||(s[O]={}),F.messages)for(let[P,U]of Object.entries(F.messages))if(a[P]||(a[P]=[]),e.isReferenceObject(U)){let J=e.resolveMessageReference(U);a[P].push({channelId:O,payload:J.payload})}else e.isMessageWithPayload(U)&&a[P].push({channelId:O,payload:U.payload});for(let[O,F]of Object.entries(a))if(F.length===1){let P=F[0],U=P.channelId;s[U]=s[U]||{},s[U][O]=fc(P.payload,!1,!1,e,[O],r,e.namespace)}else{c.push(O);for(let{channelId:P,payload:U}of F){let J=`${P}_${O}`;s[P]||(s[P]={}),s[P][J]=fc(U,!1,!1,e,[J],r,e.namespace)}}let p={},d=VY();for(let[O,F]of Object.entries(s))for(let[P,U]of Object.entries(F)){let J=d.getUniqueSchemaId(P,e.logger,e.options.resolveSchemaCollisions);p[J]=U}let f=new TYe({...o,...p},e),m={};for(let[O,F]of Object.entries(i.servers??{})){let P=Lr(F,Ly.FERN_SERVER_NAME);m[O]={name:P??O,url:fxr(F.protocol,F.host)}}let h={},A=Object.keys(i.channels??{});for(let[O,F]of Object.entries(i.operations??{})){if(Lr(F,Ly.IGNORE))continue;let P;if(F.channel==null||!("$ref"in F.channel)||F.channel.$ref==null)if(A.length===1&&A[0]!=null)P=A[0];else continue;else P=VIp(F);h[P]||(h[P]={subscribe:[],publish:[],__parsedMessages:[]});let U=Lr(F,Ly.FERN_SDK_METHOD_NAME),J=Lr(F,Ly.FERN_DISPLAY_NAME);if(!F.messages||!Array.isArray(F.messages))continue;let $=F.messages.filter(fe=>fe!=null&&fe.$ref!=null).map(fe=>({ref:fe,methodName:U,displayName:J})),ne=h[P];if(ne==null)throw new j({message:`Internal error: channelEvents["${P}"] is unexpectedly undefined for operation ${O}`,code:j.Code.InternalError});if(F.action==="receive")ne.subscribe.push(...$);else if(F.action==="send")ne.publish.push(...$);else throw new j({message:`Operation ${O} has an invalid action: ${F.action}`,code:j.Code.ValidationError})}for(let[O,F]of Object.entries(h)){let P=[];P.push(...XEa({messages:F.subscribe,channelPath:O,origin:"server",messageSchemas:s[O]??{},duplicatedMessageIds:c,context:e})),P.push(...XEa({messages:F.publish,channelPath:O,origin:"client",messageSchemas:s[O]??{},duplicatedMessageIds:c,context:e})),h[O]!=null&&(h[O].__parsedMessages=P)}for(let[O,F]of Object.entries(i.channels??{})){if(Lr(F,Ly.IGNORE))continue;let P=[],U=[],J=[];if(F.parameters!=null)for(let[$,ne]of Object.entries(F.parameters)){let fe=e.isReferenceObject(ne)?e.resolveParameterReference(ne):ne,{type:be,parameterKey:ce}=fe.location!=null?qIp(fe.location):{type:F.address?.includes(`={${$}}`)?"query":"path",parameterKey:$},he=Lr(fe,Ly.FERN_PARAMETER_OPTIONAL),Le=rl(si(O))+rl(si($)),Ne=fe.schema!=null?Wn(fe.schema)?x3(fe.schema,!1,!1,e,[ce],void 0,r,e.namespace):fc(fe.schema,!1,!1,e,[ce],r,e.namespace):fc({...fe,type:"string",title:Le,example:fe.examples?.[0],default:fe.default,enum:fe.enum,required:void 0},!1,!1,e,[ce],r,e.namespace),oe=he?zr.optional({value:Ne,description:void 0,availability:void 0,generatedName:"",title:Le,namespace:void 0,groupName:void 0,nameOverride:void 0,inline:void 0}):Ne,ae={name:ce,description:fe.description,parameterNameOverride:void 0,schema:oe,variableReference:void 0,availability:bw(ne),source:r,explode:void 0,clientDefault:void 0};be==="header"?P.push({...ae,env:void 0}):be==="path"?U.push(ae):(be==="payload"||be==="query")&&J.push(ae)}if(F.bindings?.ws?.query!=null){let $=new Set(J.map(fe=>fe.name)),ne=new Set(F.bindings.ws.query.required??[]);for(let[fe,be]of Object.entries(F.bindings.ws.query.properties??{})){if($.has(fe))continue;if(Wn(be)){let Ne=e.resolveSchemaReference(be),oe=ne.has(fe),[ae,Se]=e.options.coerceOptionalSchemasToNullable?[!1,!oe]:[!oe,!1];J.push({name:fe,schema:x3(be,ae,Se,e,[O,fe],void 0,r,e.namespace),description:Ne.description,parameterNameOverride:void 0,availability:bw(Ne),source:r,explode:void 0,clientDefault:void 0});continue}let ce=ne.has(fe),[he,Le]=e.options.coerceOptionalSchemasToNullable?[!1,!ce]:[!ce,!1];J.push({name:fe,schema:fc(be,he,Le,e,[O,fe],r,e.namespace),description:be.description,parameterNameOverride:void 0,availability:bw(be),source:r,explode:void 0,clientDefault:void 0})}}if(F.bindings?.ws?.headers!=null){let $=new Set(P.map(fe=>fe.name)),ne=new Set(F.bindings.ws.headers.required??[]);for(let[fe,be]of Object.entries(F.bindings.ws.headers.properties??{})){if($.has(fe))continue;if(Wn(be)){let Ne=e.resolveSchemaReference(be),oe=ne.has(fe),[ae,Se]=e.options.coerceOptionalSchemasToNullable?[!1,!oe]:[!oe,!1];P.push({name:fe,schema:x3(be,ae,Se,e,[O,fe],void 0,r,e.namespace),description:Ne.description,parameterNameOverride:void 0,env:void 0,availability:bw(Ne),source:r,clientDefault:void 0});continue}let ce=ne.has(fe),[he,Le]=e.options.coerceOptionalSchemasToNullable?[!1,!ce]:[!ce,!1];P.push({name:fe,schema:fc(be,he,Le,e,[O,fe],r,e.namespace),description:be.description,parameterNameOverride:void 0,env:void 0,availability:bw(be),source:r,clientDefault:void 0})}}if(P.length>0||J.length>0||h[O]!=null&&(h[O].publish!=null||h[O].subscribe!=null)){let $=pxr(F),ne=h[O]?.__parsedMessages??[],fe=[];try{if($.length>0)fe=f.buildWebsocketSessionExamplesForExtension({context:e,extensionExamples:$,handshake:{headers:P,queryParameters:J},source:r,namespace:e.namespace});else{let Ne=[],{examplePublishMessage:oe,exampleSubscribeMessage:ae}=WIp({messages:ne,messageSchemas:s[O]??{}});oe!=null&&Ne.push(oe),ae!=null&&Ne.push(ae);let Se=f.buildWebsocketSessionExample({handshake:{headers:P,queryParameters:J},messages:Ne});Se!=null&&fe.push(Se)}}catch(Ne){e.logger.warn(`Failed to build examples for channel ${O}: ${Kn(Ne)}`)}let be=Lr(F,Ly.FERN_SDK_GROUP_NAME),ce=Lr(F,Ly.FERN_SDK_METHOD_NAME),he=(F.servers?.map(Ne=>GIp(m,Ne))??Object.values(m)).map(Ne=>({...Ne,name:Ne.name})),Le=F.address?.split("?")[0]??dxr(O);u[O]={audiences:Lr(F,kn.AUDIENCES)??[],handshake:{headers:P.map(Ne=>({...Ne,schema:fd(Ne.schema),env:Ne.env})),queryParameters:J.map(Ne=>({...Ne,schema:fd(Ne.schema)})),pathParameters:U.map(Ne=>({...Ne,parameterNameOverride:void 0,schema:fd(Ne.schema)}))},groupName:e.resolveGroupName(typeof be=="string"?[be]:be??[O]),messages:ne,summary:Lr(F,Ly.FERN_DISPLAY_NAME),connectMethodName:ce,servers:he,path:Le,description:F.description,examples:fe,source:r}}else e.logger.warn(`Skipping AsyncAPI channel ${O} as it does not qualify for inclusion (no headers, query params, or operations)`)}let y={...o,...p},I={},w=VY();for(let[O,F]of Object.entries(y)){let P=w.getUniqueSchemaId(O,e.logger,e.options.resolveSchemaCollisions);I[P]=fd(F)}let C=xYe(e.namespace,o),x=Object.values(m).map(O=>({...O,name:O.name})),B=Lr(i,Ly.BASE_PATH);return{groupedSchemas:C,channels:u,servers:x,basePath:B}}function _Ip(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function VIp(e){if(!e.channel)throw new j({message:"Operation is missing required 'channel' field",code:j.Code.ValidationError});if(!e.channel.$ref)throw new j({message:"Operation channel is missing required '$ref' field",code:j.Code.ValidationError});if(!e.channel.$ref.startsWith(JEa))throw new j({message:`Failed to resolve channel path from operation ${e.channel.$ref}`,code:j.Code.ReferenceError});return _Ip(e.channel.$ref.substring(JEa.length))}function qIp(e){let t="https://www.asyncapi.com/docs/reference/specification/v3.0.0#runtimeExpression",[r,n]=e.split("#/");if(r==null||n==null)throw new j({message:`Invalid location format: ${e}; unable to parse message type and parameter key. See ${t} for the expected format.`,code:j.Code.ValidationError});if(!r.startsWith(e4i))throw new j({message:`Invalid location format: ${e}; expected ${e4i} prefix`,code:j.Code.ValidationError});let i=r.substring(e4i.length);if(i!=="header"&&i!=="path"&&i!=="payload")throw new j({message:`Invalid message type: ${i}. Must be one of: header, path, payload`,code:j.Code.ValidationError});return{type:i,parameterKey:n}}function GIp(e,t){if(!t.$ref.startsWith(YEa))throw new j({message:`Failed to resolve server name from server ref ${t.$ref}`,code:j.Code.ReferenceError});let r=t.$ref.substring(YEa.length),n=e[r];if(n==null)throw new j({message:`Failed to find server with name ${r}`,code:j.Code.ReferenceError});return n}function XEa({messages:e,channelPath:t,origin:r,messageSchemas:n,duplicatedMessageIds:i,context:o}){let s=[];return e.forEach((a,c)=>{try{let l=o.resolveMessageReference(a.ref,!0).name;i.includes(l)&&(l=`${t}_${l}`);let p=n[l];p!=null&&s.push({origin:r,name:l??`${r}Message${c+1}`,displayName:a.displayName,body:fd(p),methodName:a.methodName})}catch(u){o.logger.warn(`Skipping message reference ${a.ref.$ref} in channel ${t}: ${Kn(u)}`)}}),s}function WIp({messages:e,messageSchemas:t}){let r=e.find(s=>s.origin==="client")?.name,n=e.find(s=>s.origin==="server")?.name,i=r!=null?t[r]:void 0,o=n!=null?t[n]:void 0;return{examplePublishMessage:i!=null&&r!=null?{type:r,payload:i}:void 0,exampleSubscribeMessage:o!=null&&n!=null?{type:n,payload:o}:void 0}}function $Ea({document:e,taskContext:t,options:r,source:n,asyncApiOptions:i,namespace:o}){let s=[];if(o!=null&&s.push(o),parseFloat(e.asyncapi)<3){let a=e;a.tags?.[0]!=null?s.push(a.tags[0].name):i.naming!=="v2"&&s.push("websocket");let c=new cxr({document:a,taskContext:t,options:r,namespace:o});return KEa({context:c,breadcrumbs:s,source:n,asyncApiOptions:i,document:a})}else{let a=e,c=new mxr({document:a,taskContext:t,options:r,namespace:o});return ZEa({context:c,breadcrumbs:s,source:n,asyncApiOptions:i,document:a})}}jt();ao();function hxr(e){if(e!=null)return e.map(t=>Object.fromEntries(Object.entries(t).map(([r,n])=>[r,n??[]])))}ao();function eva(e){return Lr(e,kn.ASYNC_CONFIG)}var tva="$request.";function rva(e,t){let r=Lr(t,kn.STREAMING);if(r==null)return;if(typeof r=="boolean")return r?{type:"stream",format:"json",terminator:void 0,resumable:!1}:void 0;let n=HIp(e,r);return r["stream-condition"]==null&&r.format!=null?{type:"stream",format:r.format,terminator:r.terminator,resumable:n}:{type:"streamCondition",format:r.format??"json",terminator:r.terminator,streamDescription:r["stream-description"],streamConditionProperty:KIp(r["stream-condition"]),streamRequestName:r["stream-request-name"],responseStream:r["response-stream"],response:r.response,resumable:n}}function HIp(e,t){return typeof t.resumable=="boolean"?t.resumable:t4i(e)??!1}function t4i(e){let t=Lr(e,kn.STREAMING);if(!(t==null||typeof t=="boolean"))return typeof t.resumable=="boolean"?t.resumable:void 0}function KIp(e){return e.startsWith(tva)?e.slice(tva.length):e}_t();function nva(e){let t=e;if(t.cursor!=null)return Vx.cursor({cursor:t.cursor,nextCursor:t.next_cursor,results:t.results});let r=e;if("next_uri"in r)return Vx.uri({nextUri:r.next_uri,results:r.results});let n=e;if("next_path"in n)return Vx.path({nextPath:n.next_path,results:n.results});if("offset"in e){let i=e;return Vx.offset({offset:i.offset,results:i.results,step:i.step,hasNextPage:i["has-next-page"]})}if("type"in e&&e.type==="custom"){let i=e;return Vx.custom({results:i.results})}throw new j({message:"Invalid pagination extension",code:j.Code.ValidationError})}function iva(e,t){let r=Lr(t,kn.PAGINATION);if(r!=null){if(typeof r=="boolean"){let n=Lr(e,kn.PAGINATION);if(typeof n=="boolean")throw new j({message:"Global pagination extension is a boolean, expected an object. Only endpoints may declare a boolean for x-fern-pagination.",code:j.Code.ValidationError});return n==null?void 0:nva(n)}return nva(r)}}function ova(e,t){for(let r of Object.keys(e))if(r.includes("text/event-stream")){let n=e[r];if(n==null)continue;let i=n,o=n.schema??i.itemSchema;return{contentType:r,schema:o??{},examples:BYe(n,t)}}}function sva(e){let t=Object.keys(e);return t.length===1&&t[0]!=null&&t[0].includes("text/event-stream")}function JIp(e){return e.includes("json")||e==="*/*"}function r4i({content:e,context:t}){for(let[r,n]of Object.entries(e))if(gxr({mediaType:r,mediaTypeObject:n,context:t})!=null)return[r,n]}function gxr({mediaType:e,mediaTypeObject:t,context:r}){if(!JIp(e))return;let n=t.schema;return{contentType:e.includes("*")?void 0:e,schema:n??{},examples:BYe(t,r)}}function A2t({content:e,context:t}){let r=r4i({content:e,context:t});if(!r)return;let[n,i]=r;return gxr({mediaType:n,mediaTypeObject:i,context:t})}function ava(e,t){for(let r of Object.keys(e)){let n=e[r];if(n==null)continue;return{schema:n.schema??{},examples:BYe(n,t)}}}function BYe(e,t){let r=[];e.example!=null&&r.push({name:void 0,value:e.example,description:void 0});let n=Lr(e,oO.EXAMPLES);return n!=null&&Object.keys(n).length>0&&r.push(...Object.entries(n).map(([i,o])=>({name:o.summary??i,value:o.value,description:o.description}))),e.examples!=null&&Object.keys(e.examples).length>0&&r.push(...Object.entries(e.examples).map(([i,o])=>{let s=Wn(o)?t.resolveExampleReference(o):o;return{name:s.summary??i,value:s.value,description:s.description}})),r}jt();_t();jt();function cva(e){let t=YIp(e),r={};return n4i({obj:t,occurrences:r,breadcrumbs:[]}),r}function n4i({obj:e,occurrences:t,breadcrumbs:r}){if(e!=null){if(Array.isArray(e)){for(let n of e)n4i({obj:n,occurrences:t,breadcrumbs:r});return}if(typeof e=="object"){if(e.$ref!=null&&typeof e.$ref=="string"){let n=e.$ref;t[n]==null?t[n]=1:t[n]+=1;return}for(let n in e)n4i({obj:e[n],occurrences:t,breadcrumbs:[...r,n]})}}}function YIp(e){return{...e,paths:Object.fromEntries(Object.entries(e.paths??{}).map(([t,r])=>[t,{...r,get:r?.get!=null?y2t(r.get):void 0,put:r?.put!=null?y2t(r.put):void 0,post:r?.post!=null?y2t(r.post):void 0,patch:r?.patch!=null?y2t(r.patch):void 0,delete:r?.delete!=null?y2t(r.delete):void 0}]))}}function y2t(e){return{...e,requestBody:e.requestBody!=null?Wn(e.requestBody)?e.requestBody:XIp(e.requestBody):void 0}}function XIp(e){let t,r;for(let n in e.content){let i=ld.parse(n);i!=null&&(i.isJSON()?t=e.content[n]:i.isMultipart()&&(r=e.content[n]))}return r!=null&&t!=null?{...e,content:{[ld.MULTIPART_FORM_DATA]:r}}:e}var Axr=class{endpoints;parser=new _ce;constructor({context:t,options:r}){this.endpoints=r.filter?.endpoints?new Set(this.validateAndFilterEndpoints({context:t,endpoints:r.filter.endpoints})):void 0}skipEndpoint({method:t,path:r}){return this.endpoints!=null&&!this.endpoints.has(`${t} ${r}`)}hasEndpoints(){return this.endpoints!=null}validateAndFilterEndpoints({context:t,endpoints:r}){let n=[];for(let i of r){let o=this.parser.tryParse(i);if(o==null){t.logger.debug(`Ignoring configured filter endpoint "${i}"; expected format "POST /users/get"`);continue}n.push(`${o.method} ${o.path}`)}return n}};var uva="#/components/parameters/",lva="#/components/responses/",pva="#/components/examples/",fva="#/components/requestBodies/",dva="#/components/securitySchemes/",OYe=class{logger;document;taskContext;authHeaders;refOccurrences;DUMMY;options;source;filter;namespace;schemaNamespaceMapping;constructor({document:t,taskContext:r,authHeaders:n,options:i,source:o,namespace:s}){this.document=t,this.logger=r.logger,this.taskContext=r,this.authHeaders=n,this.refOccurrences=cva(t),this.options=i,this.source=o,this.filter=new Axr({context:r,options:i}),this.DUMMY=this.getDummy(),this.namespace=s,this.schemaNamespaceMapping=this.buildSchemaNamespaceMapping()}getNumberOfOccurrencesForRef(t){return this.refOccurrences[t.$ref]??0}resolveTagsToTagIds(t){let r=[];return this.namespace!=null&&r.push(this.namespace),r.concat(t??[])}resolveTags(t){let r=[];if(this.namespace!=null){let n={type:"namespace",name:this.namespace};r.push(n)}return r.concat(t??[])}resolveGroupName(t){return this.namespace!=null?[{type:"namespace",name:this.namespace},...t]:t}resolveSchemaReference(t){let r=t.$ref.substring(2).split("/").map(i=>i.replace(/~1/g,"/")),n=this.document;for(let i of r){if(typeof n!="object"||n==null)return{"x-fern-type":"unknown"};if(Array.isArray(n)){let o=parseInt(i,10);if(isNaN(o)||o<0||o>=n.length)return{"x-fern-type":"unknown"};n=n[o]}else n=n[i]}return n==null?(this.logger.debug(`Encountered undefined reference: ${t.$ref}`),{"x-fern-type":"unknown"}):(Wn(n)&&(n=this.resolveSchemaReference(n)),n)}resolveParameterReference(t){if(this.document.components==null||this.document.components.parameters==null||!t.$ref.startsWith(uva))throw new j({message:`Failed to resolve ${t.$ref}`,code:j.Code.ReferenceError});let r=t.$ref.substring(uva.length),n=this.document.components.parameters[r];if(n==null)throw new j({message:`${t.$ref} is undefined`,code:j.Code.ReferenceError});return Wn(n)?this.resolveParameterReference(n):n}resolveRequestBodyReference(t){if(this.document.components==null||this.document.components.requestBodies==null||!t.$ref.startsWith(fva))throw new j({message:`Failed to resolve ${t.$ref}`,code:j.Code.ReferenceError});let r=t.$ref.substring(fva.length),n=this.document.components.requestBodies[r];if(n==null)throw new j({message:`${t.$ref} is undefined`,code:j.Code.ReferenceError});return Wn(n)?this.resolveRequestBodyReference(n):n}resolveResponseReference(t){if(this.document.components==null||this.document.components.responses==null||!t.$ref.startsWith(lva))throw new j({message:`Failed to resolve ${t.$ref}`,code:j.Code.ReferenceError});let r=t.$ref.substring(lva.length),n=this.document.components.responses[r];if(n==null)throw new j({message:`${t.$ref} is undefined`,code:j.Code.ReferenceError});return Wn(n)?this.resolveResponseReference(n):n}resolveExampleReference(t){if(this.document.components==null||this.document.components.examples==null||!t.$ref.startsWith(pva))throw new j({message:`Failed to resolve ${t.$ref}`,code:j.Code.ReferenceError});let r=t.$ref.substring(pva.length),n=this.document.components.examples[r];if(n==null)throw new j({message:`${t.$ref} is undefined`,code:j.Code.ReferenceError});return Wn(n)?this.resolveExampleReference(n):n}resolveSecuritySchemeReference(t){if(this.document.components==null||this.document.components.securitySchemes==null||!t.$ref.startsWith(dva))throw new j({message:`Failed to resolve ${t.$ref}`,code:j.Code.ReferenceError});let r=t.$ref.substring(dva.length),n=this.document.components.securitySchemes[r];if(n==null)throw new j({message:`${t.$ref} is undefined`,code:j.Code.ReferenceError});return Wn(n)?this.resolveSecuritySchemeReference(n):n}referenceExists(t){let r=t.substring(2).split("/").map(i=>i.replace(/~1/g,"/")),n=this.document;for(let i of r){if(typeof n!="object"||n==null)return!1;n=n[i]}return!0}getNamespace(t){return this.schemaNamespaceMapping?.get(t)}buildSchemaNamespaceMapping(){let t=new Map;if(!this.document.components?.schemas)return t;for(let[r,n]of Object.entries(this.document.components.schemas))!n||Wn(n)||t.set(r,Lr(n,kn.SDK_NAMESPACE)||this.namespace);return t}};var WNe=class extends OYe{constructor({document:t,taskContext:r,options:n,source:i,namespace:o}){super({document:t,taskContext:r,authHeaders:new Set,options:n,source:i,namespace:o})}getDummy(){return this}markSchemaAsReferencedByNonRequest(t){}markSchemaAsReferencedByRequest(t){}getReferencedSchemas(){return new Set}markReferencedByDiscriminatedUnion(t,r,n){}getReferencesFromDiscriminatedUnion(t){}excludeSchema(t){}isSchemaExcluded(t){return!1}markSchemaWithDiscriminantValue(t,r,n){}getDiscriminatedUnionMetadata(t){}};jt();var xxr=require("fs"),Sxr=require("path");ss();var YCp=Bt.object({lang:Bt.string(),label:Bt.optional(Bt.string()),source:Bt.string()}),l4i=Bt.array(YCp);jt();var wva={README_EXT:"x-readme"};function XCp(e){if(!Array.isArray(e))return!1;for(let t of e)if(!Qo(t)||typeof t.language!="string"||typeof t.code!="string")return!1;return!0}function xva(e){let t=Lr(e,wva.README_EXT);if(!Qo(t))return[];let r=t["code-samples"];if(!XCp(r))return[];let n=[];for(let i of r)n.push({name:i.name,language:i.language,code:i.code,install:i.install,docs:void 0});return n}function ZCp(e){return Qo(e)&&typeof e.$ref=="string"}function $Cp(e,t){if(e!=null){if(typeof e=="string")return e;if(ZCp(e)){let r=(0,Sxr.resolve)(t??process.cwd(),e.$ref);if((0,xxr.existsSync)(r))try{return(0,xxr.readFileSync)(r,"utf-8")}catch{return}}}}function ewp(e,t){if(!Array.isArray(e))return[];let r=[];for(let n of e){if(!Qo(n))continue;let o=$Cp(n.code,t);o!=null&&r.push({...n,code:o})}return r}function Sva(e,t,r){let n=Lr(t,kn.EXAMPLES),i=r.source.type==="openapi"?(0,Sxr.dirname)(r.source.file):void 0,s=(n??[]).map(p=>{if(!Qo(p))return p;let f=p["code-samples"];if(f!=null){let m=ewp(f,i);return{...p,"code-samples":m}}return p}).filter(p=>{let d=zh.serialization.ExampleEndpointCallSchema.parse(p);return d.ok||r.logger.error(`Failed to parse x-fern-example in ${e.path}/${e.method}`),d.ok}),a=l2t(t,oO.REDOCLY_CODE_SAMPLES_KEBAB,l4i,r.logger,[...e.baseBreadcrumbs,`${e.method} ${e.path}`])??[],u=[...l2t(t,oO.REDOCLY_CODE_SAMPLES_CAMEL,l4i,r.logger,[...e.baseBreadcrumbs,`${e.method} ${e.path}`])??[],...a];u.length>0&&s.push({"code-samples":u.map(p=>({name:p.label??p.lang,language:p.lang,code:p.source,install:void 0,docs:void 0}))});let l=xva(t);return l.length>0&&s.push({"code-samples":l}),s.map(i_.unknown)}function Tva(e){let t=Lr(e,kn.AVAILABILITY);if(t==="ga"||t==="generally-available")return ig.GenerallyAvailable;if(t==="beta"||t==="pre-release")return ig.Beta;if(t==="deprecated")return ig.Deprecated;if(t==="alpha")return ig.Alpha;if(t==="preview")return ig.Preview;if(t==="legacy")return ig.Legacy;if(e.deprecated)return ig.Deprecated}function Bva(e){let t=Lr(e,kn.RETRIES);if(t!=null&&t.disabled===!0)return BA.RetriesConfiguration.disabled(t.disabled)}var twp="x-fern-default-url";function Txr(e,t){let r=e.variables!=null&&Object.keys(e.variables).length>0,n=rwp(e);return{url:iwp({url:e.url,variables:e.variables??{}}),description:e.description,name:owp(e,t),audiences:Lr(e,kn.AUDIENCES),urlTemplate:r?e.url:void 0,variables:r&&e.variables!=null?nwp(e.variables):void 0,defaultUrl:r?n:void 0}}function rwp(e){let t=e[twp];if(typeof t=="string")return t.endsWith("/")&&t!=="/"?t.slice(0,-1):t}function nwp(e){return Object.entries(e).map(([t,r])=>({id:t,default:r.default,values:r.enum}))}function iwp({url:e,variables:t}){let r=Object.fromEntries(Object.entries(t).map(([n,i])=>[n,i.default]));for(let[n,i]of Object.entries(r))e=e.replace(`{${n}}`,encodeURIComponent(i));return e}function owp(e,t){let r=Lr(e,[kn.SERVER_NAME_V1,kn.SERVER_NAME_V2]);if(r!=null)return r;if(e.description?.toLowerCase()==="production")return"Production";if(e.description?.toLowerCase()==="sandbox")return"Sandbox";if(t?.groupMultiApiEnvironments&&e.description!=null&&e.description.trim()!==""){let n=e.description.toLowerCase();return n==="prd"?"Production":n==="sbx"?"Sandbox":n==="staging"||n==="stg"?"Staging":n==="development"||n==="dev"?"Development":e.description}}function Ova(e){return Lr(e,kn.PARAMETER_NAME)}function Pva(e){return Lr(e,kn.SDK_VARIABLE)}function Bxr({path:e,httpMethod:t,parameters:r,context:n,requestBreadcrumbs:i,source:o}){let s={pathParameters:[],queryParameters:[],headers:[]};for(let a of r){let c=Wn(a)?n.resolveParameterReference(a):a,u=Lr(a,kn.IGNORE)??Lr(c,kn.IGNORE);if(u!=null&&u){n.logger.debug(`${t.toUpperCase()} ${e} has a parameter marked with x-fern-ignore. Skipping.`);continue}let l=c.required??!1,p=bw(c),d=[...i,c.name],f=My(d,n.options.preserveSchemaIds),m=c.in==="header",[h,A]=n.options.coerceOptionalSchemasToNullable&&!m?[!1,!l]:[!l,!1],y=c.schema!=null?fc(c.schema,h,A,n,d,o,n.namespace,!1,new Set,cwp(c,n)):l?zr.primitive({nameOverride:void 0,generatedName:f,title:void 0,schema:$i.string({default:void 0,pattern:void 0,format:void 0,minLength:void 0,maxLength:void 0,example:u_({schema:c,logger:n.logger})}),description:void 0,availability:p,namespace:void 0,groupName:void 0}):zr.optional({nameOverride:void 0,generatedName:f,title:void 0,value:zr.primitive({nameOverride:void 0,generatedName:f,title:void 0,schema:$i.string({default:void 0,pattern:void 0,format:void 0,minLength:void 0,maxLength:void 0,example:u_({schema:c,logger:n.logger})}),description:void 0,availability:void 0,namespace:void 0,groupName:void 0}),description:void 0,availability:p,namespace:void 0,groupName:void 0,inline:void 0});if(c.in==="header"&&c.schema!=null&&!Wn(c.schema)&&c.schema.default!=null){let C=c.schema.default;typeof C=="string"&&C.length>0&&(y=zr.literal({nameOverride:void 0,generatedName:f,title:void 0,value:Qy.string(C),description:void 0,availability:p,namespace:void 0,groupName:void 0}))}let I=Lr(a,kn.FERN_DEFAULT)??Lr(c,kn.FERN_DEFAULT),w={name:c.name,schema:y,description:c.description,parameterNameOverride:Ova(c),availability:p,source:o,clientDefault:I};c.in==="query"?s.queryParameters.push({...w,explode:awp(c)}):c.in==="path"?s.pathParameters.push({...w,variableReference:Pva(c),explode:uwp(c)}):c.in==="header"?!swp.has(c.name.toLowerCase())&&!n.authHeaders.has(c.name)?s.headers.push({...w,env:void 0}):n.logger.debug(`Ignoring ${c.name} header, in ${t.toUpperCase()} ${e}`):n.logger.warn(`Skipping ${c.in} parameter, ${c.name}, in ${t.toUpperCase()} ${e}`)}return s}var swp=new Set(["user-agent","content-length","content-type","x-forwarded-for","cookie","origin","content-disposition","x-ping-custom-domain"]);function awp(e){let t=e.style??"form",r=e.explode;if(r!==void 0)return t==="form"||t==="deepObject"?r===!0?void 0:r:r===!1?void 0:r}function cwp(e,t){let r=nxr({schema:e,logger:t.logger});return r??u_({schema:e,logger:t.logger})}function uwp(e){let t=e.explode;if(t!==void 0)return t===!1?void 0:t}jt();_t();function lwp({content:e,context:t}){for(let[r,n]of Object.entries(e))if(Rva({mediaType:r,mediaTypeObject:n,context:t}))return[r,n]}function Rva({mediaType:e,mediaTypeObject:t,context:r}){if(ld.parse(e)?.isURLEncoded())return{schema:t.schema,contentType:e,examples:BYe(t,r)}}function pwp({content:e,context:t}){for(let[r,n]of Object.entries(e))if(Fva({mediaType:r,mediaTypeObject:n,context:t}))return[r,n]}function Fva({mediaType:e,mediaTypeObject:t,context:r}){if(ld.parse(e)?.isMultipart())return{schema:t.schema,encoding:t.encoding,examples:BYe(t,r)}}function kva({mediaType:e}){return ld.parse(e)?.isBinary()??!1}function fwp({content:e}){for(let[t,r]of Object.entries(e))if(kva({mediaType:t}))return[t,r]}function dwp(e,t){let r=Wn(e)?p4i(e,t):{id:void 0,schema:e};return Object.entries(r.schema.properties??{}).find(([n,i])=>!Wn(i)&&i.type==="string"&&(i.format==="binary"||i.format==null&&i.contentMediaType==="application/octet-stream"))!=null}function Pxr({content:e,description:t,document:r,context:n,requestBreadcrumbs:i,source:o,namespace:s}){let a=fwp({content:e});if(a){let[d,f]=a;return KY({mediaType:d,mediaTypeObject:f,description:t,document:r,context:n,requestBreadcrumbs:i,source:o,namespace:s})}let c=pwp({content:e,context:n}),u=r4i({content:e,context:n}),l=mwp({json:u,multipart:c,document:r,visitor:{json:([d,f])=>KY({mediaType:d,mediaTypeObject:f,description:t,document:r,context:n,requestBreadcrumbs:i,source:o,namespace:s}),multipart:([d,f])=>KY({mediaType:d,mediaTypeObject:f,description:t,document:r,context:n,requestBreadcrumbs:i,source:o,namespace:s}),neither:()=>{}}});if(l)return l;let p=lwp({content:e,context:n});if(p){let[d,f]=p;return KY({mediaType:d,mediaTypeObject:f,description:t,document:r,context:n,requestBreadcrumbs:i,source:o,namespace:s})}}function mwp({json:e,multipart:t,document:r,visitor:n}){if(!e&&!t)return n.neither();let[,i]=e??[void 0,void 0],[,o]=t??[void 0,void 0];return!i?.schema&&!o?.schema?e&&(i?.example!=null||i?.examples!=null&&Object.keys(i.examples).length>0)?n.json(e):n.neither():i?.schema&&o?.schema?i.schema&&dwp(i.schema,r)?n.multipart(t):n.json(e):i?.schema?n.json(e):o?.schema?n.multipart(t):n.neither()}function KY({mediaType:e,mediaTypeObject:t,description:r,document:n,context:i,requestBreadcrumbs:o,source:s,namespace:a}){let c=hwp({mediaTypeObject:t});if(kva({mediaType:e}))return z2.octetStream({description:r,source:s,sdkMethodName:c,contentType:e});let u=Fva({mediaType:e,mediaTypeObject:t,context:i}),l=u?.schema,p=u?.encoding,d=u?.examples;if(l){let h=Wn(l)?p4i(l,n):{id:void 0,schema:l},A=fc(h.schema,!1,!1,i,o,s,a,!1),y=[];if(A.type==="object"){let I=new Set(h.schema.required??[]);for(let w of A.properties){let C=I.has(w.key),{isFile:x,isOptional:B,isArray:O,description:F}=Oxr({schema:w.schema,isOptional:!C});if(x){let P=Dva(w.key,p);y.push({key:w.key,schema:NY.file({isOptional:B,isArray:O,description:F}),description:F,contentType:P,exploded:!1,encoding:P==null?i.options.defaultFormParameterEncoding:void 0})}else{let P=Dva(w.key,p);y.push({key:w.key,schema:NY.json(w.schema),description:void 0,contentType:P,exploded:p?.[w.key]?.explode,encoding:P==null?i.options.defaultFormParameterEncoding:Awp(P)})}}}return z2.multipart({name:Wn(l)&&i.getNumberOfOccurrencesForRef(l)===1?h.id:void 0,description:h.schema.description,properties:y,source:s,sdkMethodName:c,fullExamples:d})}let f=gxr({mediaType:e,mediaTypeObject:t,context:i});if(f){let h=fc(f.schema,!1,!1,i,o,s,a,!0);return z2.json({description:void 0,schema:h,contentType:f.contentType,fullExamples:f.examples,additionalProperties:!Wn(f.schema)&&f2t(f.schema.additionalProperties,i.options),source:s,sdkMethodName:c})}let m=Rva({mediaType:e,mediaTypeObject:t,context:i});if(m!=null&&m.schema!=null){let h=fc(m.schema,!1,!1,i,o,s,a,!1);return z2.formUrlEncoded({schema:h,description:r,contentType:m.contentType,source:s,fullExamples:m.examples,additionalProperties:!1,sdkMethodName:c})}}function hwp({mediaTypeObject:e}){return Lr(e,kn.SDK_METHOD_NAME)}var gwp={"application/json":"json"};function Awp(e){return e?gwp[e]:void 0}function p4i(e,t){if(!e.$ref.startsWith(qNe))throw new j({message:`Failed to resolve schema reference because of unsupported prefix: ${e.$ref}`,code:j.Code.ReferenceError});let r=vYe(e);if(r==null)throw new j({message:`Failed to resolve schema reference because missing schema id: ${e.$ref}`,code:j.Code.ReferenceError});let n=t.components?.schemas?.[r];if(n==null)throw new j({message:`Failed to resolve schema reference because missing: ${e.$ref}`,code:j.Code.ReferenceError});return Wn(n)?p4i(n,t):{id:r,schema:n}}function Oxr({schema:e,isOptional:t,isArray:r,description:n}){return bwp(e)?Oxr({schema:e.value,isOptional:!0,isArray:r,description:e.description}):Ewp(e)?Oxr({schema:e.value,isOptional:t,isArray:r,description:e.description}):vwp(e)?Oxr({schema:e.value,isOptional:t,isArray:!0,description:e.description}):ywp(e)?{isFile:!0,isOptional:t??!1,isArray:r??!1,description:n??e.description}:{isFile:!1,isOptional:t??!1,isArray:r??!1,description:void 0}}function ywp(e){return e.type==="primitive"&&e.schema.type==="string"&&e.schema.format==="binary"}function bwp(e){return e.type==="optional"}function Ewp(e){return e.type==="nullable"}function vwp(e){return e.type==="array"}function Dva(e,t){return t?.[e]?.contentType}jt();var f4i={400:"BadRequestError",401:"UnauthorizedError",402:"PaymentRequiredError",403:"ForbiddenError",404:"NotFoundError",405:"MethodNotAllowedError",406:"NotAcceptableError",407:"ProxyAuthenticationRequiredError",408:"RequestTimeoutError",409:"ConflictError",410:"GoneError",411:"LengthRequiredError",412:"PreconditionFailedError",413:"ContentTooLargeError",414:"URITooLongError",415:"UnsupportedMediaTypeError",416:"RangeNotSatisfiableError",417:"ExpectationFailedError",418:"ImATeapotError",419:"AuthenticationTimeoutError",420:"MethodFailureError",421:"MisdirectedRequestError",422:"UnprocessableEntityError",423:"LockedError",424:"FailedDependencyError",425:"TooEarlyError",426:"UpgradeRequiredError",428:"PreconditionError",429:"TooManyRequestsError",430:"RequestHeaderFieldsTooLargeError",431:"RequestHeaderFieldsTooLargeError",444:"NoResponseError",449:"RetryWithError",450:"BlockedByWindowsParentalControlsError",451:"UnavailableForLegalReasonsError",498:"InvalidTokenError",499:"ClientClosedRequestError",500:"InternalServerError",501:"NotImplementedError",502:"BadGatewayError",503:"ServiceUnavailableError",504:"GatewayTimeoutError",505:"HTTPVersionNotSupportedError",506:"VariantAlsoNegotiatesError",507:"InsufficientStorageError",508:"LoopDetectedError",509:"BandwidthLimitExceededError",510:"NotExtendedError",511:"NetworkAuthenticationRequiredError"},Nva=new Set(Object.values(f4i));var Iwp=["200","201","202","204"];function Dxr({operationContext:e,responses:t,context:r,responseBreadcrumbs:n,responseStatusCode:i,streamFormat:o,streamTerminator:s,streamResumable:a,source:c}){if(t==null)return{value:void 0,errors:{}};let u=Cwp({responses:t,context:r,source:c,namespace:r.namespace}),l=!1,p=!1,d;for(let f of i!=null?[i]:Iwp){let m=t[f];if(m==null)continue;l=!0;let h=typeof f=="string"?parseInt(f):f;if(d==null){let A=jva({operationContext:e,response:m,context:r,responseBreadcrumbs:n,streamFormat:o,streamTerminator:s,streamResumable:a,source:c,namespace:r.namespace,statusCode:h});A!=null?d=A:h===204&&(p=!0)}else if(h===204){let A=Wn(m)?r.resolveResponseReference(m):m;A2t({context:r,content:A.content??{}})==null&&(p=!0)}}if(p&&d!=null&&d.type==="json"){let f=d.schema;f.type!=="optional"&&(d=Jg.json({...d,schema:zr.optional({value:f,description:f.type==="reference"?f.description:void 0,nameOverride:void 0,generatedName:"",groupName:void 0,namespace:void 0,availability:void 0,title:void 0,inline:void 0})}))}if(d==null&&!l&&t.default!=null&&(d=jva({operationContext:e,response:t.default,context:r,responseBreadcrumbs:n,streamFormat:o,streamTerminator:s,streamResumable:a,source:c,namespace:r.namespace})),d!=null)switch(d.type){case"json":return{value:d,errors:u};case"streamingJson":case"streamingSse":return{value:d,errors:u};case"bytes":case"file":case"text":case"streamingText":return{value:d,errors:u};default:Ce(d)}return{value:void 0,errors:u}}function jva({operationContext:e,streamFormat:t,streamTerminator:r,streamResumable:n,response:i,context:o,responseBreadcrumbs:s,source:a,namespace:c,statusCode:u}){let l=Wn(i)?o.resolveResponseReference(i):i;if(l.content!=null&&Object.entries(l.content).find(([m,h])=>{if(h.schema==null)return!1;let A=Wn(h.schema)?o.resolveSchemaReference(h.schema):h.schema;return A.type==="string"&&(A.format==="binary"||A.format==null&&A.contentMediaType==="application/octet-stream")}))return o.options.useBytesForBinaryResponse&&t==null?Jg.bytes({description:l.description,source:a,statusCode:u}):Jg.file({description:l.description,source:a,statusCode:u});let p=ova(l.content??{},o);if(p!=null&&t!=null)switch(t){case"json":return Jg.streamingJson({statusCode:u,description:l.description,responseProperty:Lr(e.operation,kn.RESPONSE_PROPERTY),terminator:r,resumable:void 0,fullExamples:p.examples,schema:fc(p.schema,!1,!1,o,s,a,c),source:a});case"sse":return Jg.streamingSse({description:l.description,responseProperty:void 0,terminator:r,resumable:n,fullExamples:p.examples,schema:fc(p.schema,!1,!1,o,s,a,c),source:a,statusCode:u})}let d=A2t({context:o,content:l.content??{}});if(d){if(t!=null)switch(t){case"json":return Jg.streamingJson({description:l.description,responseProperty:void 0,terminator:r,resumable:void 0,fullExamples:d.examples,schema:fc(d.schema,!1,!1,o,s,a,c),source:a,statusCode:u});case"sse":return Jg.streamingSse({description:l.description,responseProperty:void 0,terminator:r,resumable:n,fullExamples:d.examples,schema:fc(d.schema,!1,!1,o,s,a,c),source:a,statusCode:u})}return Jg.json({description:l.description,schema:fc(d.schema,!1,!1,o,s,a,c),responseProperty:Lr(e.operation,kn.RESPONSE_PROPERTY),terminator:void 0,resumable:void 0,fullExamples:d.examples,source:a,statusCode:u})}for(let[f,m]of Object.entries(l.content??{})){let h=ld.parse(f);if(h!=null){if(h.isOctetStream()||h.isPDF()||h.isAudio()||h.isImage()||h.isVideo()||h.isMultiPartMixed())return Jg.file({description:l.description,source:a,statusCode:u});if(h.isText()&&!f.includes("event-stream")){let A=m.schema;if(A==null)return Jg.text({description:l.description,source:a,statusCode:u});let y=Wn(A)?o.resolveSchemaReference(A):A;return y.type==="string"&&y.format==="byte"?Jg.file({description:l.description,source:a,statusCode:u}):Jg.text({description:l.description,source:a,statusCode:u})}}}}function Cwp({responses:e,context:t,source:r,namespace:n}){let i={};for(let[o,s]of Object.entries(e)){if(o==="default")continue;let a=parseInt(o);if(a<400||a>600)continue;let c=Wn(s)?t.resolveResponseReference(s):s,u=ava(c.content??{},t),l=f4i[a];if(l==null){t.logger.warn(`No error name found for status code ${o}`);continue}i[a]={statusCode:a,nameOverride:void 0,generatedName:l,description:c.description,schema:fc(u?.schema??{},!1,!1,t,[l,"Body"],r,n),fullExamples:u?.examples,source:r}}return i}function vue({operationContext:e,context:t,responseStatusCode:r,suffix:n,streamFormat:i,streamTerminator:o,streamResumable:s,source:a,streamRequestNameOverride:c}){let{document:u,operation:l,path:p,method:d,baseBreadcrumbs:f,pathItem:m}=e,h=Lr(l,kn.IDEMPOTENT),A=Lr(l,[kn.REQUEST_NAME_V1,kn.REQUEST_NAME_V2]),y=[...f,"Request"],I=Bxr({parameters:[...e.pathItemParameters,...e.operationParameters],context:t,requestBreadcrumbs:y,path:p,httpMethod:d,source:a}),w=/{([^}]+)}/g,C=[...p.matchAll(w)].map(fe=>fe[1]).filter(fe=>fe!==void 0),x=[...p.matchAll(w)].map(fe=>fe[1]);switch(t.options.pathParameterOrder){case zn.PathParameterOrder.SpecOrder:{let fe=x.filter(be=>!I.pathParameters.some(ce=>ce.name===be));if(fe.length>0)for(let be of fe)I.pathParameters.push({name:be??"",variableReference:void 0,parameterNameOverride:void 0,availability:void 0,source:a,schema:zr.primitive({schema:$i.string({default:void 0,example:void 0,format:void 0,maxLength:void 0,minLength:void 0,pattern:void 0}),description:void 0,generatedName:"",nameOverride:void 0,namespace:void 0,groupName:void 0,availability:void 0,title:void 0}),description:void 0,explode:void 0,clientDefault:void 0})}break;case zn.PathParameterOrder.UrlOrder:if(C.length>0){let fe=new Map(I.pathParameters.map(he=>[he.name,he])),be=[],ce=new Set;for(let he of C){let Le=fe.get(he);ce.add(he),Le?be.push(Le):be.push({name:he,variableReference:void 0,parameterNameOverride:void 0,availability:void 0,source:a,schema:zr.primitive({schema:$i.string({default:void 0,example:void 0,format:void 0,maxLength:void 0,minLength:void 0,pattern:void 0}),description:void 0,generatedName:"",nameOverride:void 0,namespace:void 0,groupName:void 0,availability:void 0,title:void 0}),description:void 0,explode:void 0,clientDefault:void 0})}for(let he of I.pathParameters)ce.has(he.name)||be.push(he);I.pathParameters=be}break;default:Ce(t.options.pathParameterOrder)}let B=(()=>{if(e.method==="GET")return[void 0];if(!l.requestBody)return[void 0];let fe=Wn(l.requestBody)?t.resolveRequestBodyReference(l.requestBody):l.requestBody,be=Object.values(fe.content).every(he=>wwp({mediaTypeObject:he})!=null),ce=[];if(be)return ce.push(...Object.entries(fe.content).map(([he,Le])=>{let Ne=KY({mediaType:he,mediaTypeObject:Le,description:fe.description,document:u,context:new WNe({document:t.document,taskContext:t.taskContext,options:t.options,source:t.source,namespace:t.namespace}),requestBreadcrumbs:y,source:a,namespace:t.namespace});return Mva({context:t,convertedParameters:I})&&Ne!=null&&(Ne.type==="json"||Ne.type==="formUrlEncoded")&&Ne.schema.type!=="object"&&l.requestBody!=null?Ne=KY({mediaType:he,mediaTypeObject:Le,description:fe.description,document:u,context:t,requestBreadcrumbs:[...y,"Body"],source:a,namespace:t.namespace}):l.requestBody!=null&&(Ne=KY({mediaType:he,mediaTypeObject:Le,description:fe.description,document:u,context:t,requestBreadcrumbs:[...y],source:a,namespace:t.namespace})),Ne}).filter(he=>he!=null)),ce.length===0?[void 0]:ce;{let he=Pxr({content:fe.content,description:fe.description,document:u,context:new WNe({document:t.document,taskContext:t.taskContext,options:t.options,source:t.source,namespace:t.namespace}),requestBreadcrumbs:y,source:a,namespace:t.namespace});return Mva({context:t,convertedParameters:I})&&he!=null&&(he.type==="json"||he.type==="formUrlEncoded")&&he.schema.type!=="object"&&l.requestBody!=null?he=Pxr({content:fe.content,description:fe.description,document:u,context:t,requestBreadcrumbs:[...y,"Body"],source:a,namespace:t.namespace}):l.requestBody!=null&&(he=Pxr({content:fe.content,description:fe.description,document:u,context:t,requestBreadcrumbs:[...y],source:a,namespace:t.namespace})),[he]}})(),O=B.length>1,F=[...f,"Response"],P=Dxr({operationContext:e,streamFormat:i,streamTerminator:o,streamResumable:s,responses:l.responses,context:t,responseBreadcrumbs:F,responseStatusCode:r,source:a}),U=Bva(l),J=Tva(l),$=Sva(e,l,t),ne=Lr(l,kn.SERVER_NAME_V2);return B.map(fe=>({summary:l.summary,internal:Lr(l,oO.INTERNAL),idempotent:h,audiences:Lr(l,kn.AUDIENCES)??[],operationId:l.operationId!=null&&n!=null?l.operationId+"_"+n:l.operationId,tags:t.resolveTagsToTagIds(l.tags),namespace:t.namespace,sdkName:xwp({operationContext:e,request:fe}),pathParameters:I.pathParameters,queryParameters:I.queryParameters,headers:I.headers,requestNameOverride:c??A??void 0,generatedRequestName:Bwp({baseBreadcrumbs:f,requestBreadcrumbs:y,isMultipleRequests:O,request:fe,context:t}),request:fe,response:P.value,errors:P.errors,servers:ne!=null?[{name:ne,url:void 0,audiences:void 0}]:(l.servers??m.servers??[]).map(be=>Txr(be,{groupMultiApiEnvironments:t.options.groupMultiApiEnvironments})),description:l.description,authed:Twp(l,u),security:Swp(l),availability:J,method:d,path:p,examples:$,pagination:e.pagination,source:a,retries:U}))}function Qva({breadcrumbs:e,request:t}){return t?[...e,t.type]:e}function wwp({mediaTypeObject:e}){return Lr(e,kn.SDK_METHOD_NAME)}function xwp({operationContext:e,request:t}){return!t||!t.sdkMethodName?e.sdkMethodName:e.sdkMethodName?{groupName:[...e.sdkMethodName.groupName],methodName:t.sdkMethodName??e.sdkMethodName.methodName}:{groupName:[],methodName:t.sdkMethodName}}function Swp(e){return hxr(e.security)}function Twp(e,t){return e.security!=null?Object.keys(e.security).length>0:t.security!=null?Object.keys(t.security).length>0:!1}function Mva({context:e,convertedParameters:t}){return e.options.inlinePathParameters&&t.pathParameters.length>0||t.queryParameters.length>0||t.headers.length>0}function Bwp({baseBreadcrumbs:e,requestBreadcrumbs:t,isMultipleRequests:r,request:n,context:i}){let o=r?Qva({breadcrumbs:t,request:n}):t,s=My(o,i.options.preserveSchemaIds),a=i.document.components?.schemas;if(a==null||!Object.keys(a).some(p=>My([p],i.options.preserveSchemaIds)===s))return s;let u=[...e,"Body"],l=r?Qva({breadcrumbs:u,request:n}):u;return My(l,i.options.preserveSchemaIds)}function zva({operationContext:e,context:t,asyncExtension:r,source:n}){let{operation:i,pathItemParameters:o,operationParameters:s}=e,a=r.discriminant.name,c=r.discriminant.value,u=r["response-status-code"],l=Lva({context:t,headerToIgnore:a,parameters:o}),p=Lva({context:t,headerToIgnore:a,parameters:s}),d=vue({operationContext:{...e,pathItemParameters:l,operationParameters:p,operation:{...i,responses:Object.fromEntries(Object.entries(i.responses).filter(([m])=>parseInt(m)!==u))}},context:t,streamFormat:void 0,source:n}),f=vue({operationContext:{...e,pathItemParameters:l,operationParameters:p,baseBreadcrumbs:[...e.baseBreadcrumbs,"async"]},context:t,suffix:"async",responseStatusCode:u,streamFormat:void 0,source:n});return f.forEach(m=>{m.headers.push({name:a,schema:zr.literal({nameOverride:void 0,generatedName:My([a],t.options.preserveSchemaIds),title:void 0,description:void 0,availability:void 0,value:Qy.string(c),namespace:void 0,groupName:void 0}),description:void 0,parameterNameOverride:void 0,env:void 0,availability:void 0,source:n,clientDefault:void 0})}),{sync:d,async:f}}function Lva({context:e,headerToIgnore:t,parameters:r}){return r.filter(n=>{let i=Wn(n)?e.resolveParameterReference(n):n;return!(i.in==="header"&&i.name===t)})}jt();var d4i="stream";function qva({operationContext:e,context:t,streamingExtension:r}){switch(r.type){case"stream":return{streaming:vue({operationContext:e,context:t,streamFormat:r.format,streamTerminator:r.terminator,streamResumable:r.resumable,source:t.source}),nonStreaming:[]};case"streamCondition":{let n=Uva({context:t,operation:e.operation,streamingExtension:r,isStreaming:!0}),i=_va({operation:e.operation,response:r.responseStream}),o=(()=>{if(r.streamRequestName!=null)return r.streamRequestName;if(n?.schemaReference!=null){let l=t.resolveSchemaReference(n.schemaReference),p=Lr(l,kn.TYPE_NAME);if(p!=null)return`${p}Streaming`}})(),s=vue({operationContext:{...e,sdkMethodName:e.sdkMethodName!=null?{groupName:e.sdkMethodName.groupName,methodName:e.sdkMethodName.methodName+"_"+d4i}:void 0,operation:{...e.operation,description:r.streamDescription??e.operation.description,requestBody:n?.requestBody,responses:i},baseBreadcrumbs:[...e.baseBreadcrumbs,d4i]},context:t,streamFormat:r.format,streamTerminator:r.terminator,streamResumable:r.resumable,suffix:d4i,source:t.source,streamRequestNameOverride:o});s.forEach(l=>{l.examples=l.examples.filter(p=>Vva(p,t)!==!1)});let a=Uva({context:t,operation:e.operation,streamingExtension:r,isStreaming:!1}),c=_va({operation:e.operation,response:r.response}),u=vue({streamFormat:void 0,operationContext:{...e,operation:{...e.operation,requestBody:a?.requestBody,responses:c}},context:t,source:t.source});return u.forEach(l=>{l.examples=l.examples.filter(p=>Vva(p,t)!==!0)}),{streaming:s,nonStreaming:u}}default:Ce(r)}}function Uva({context:e,operation:t,streamingExtension:r,isStreaming:n}){if(t.requestBody==null)return;let i=Wn(t.requestBody)?e.resolveRequestBodyReference(t.requestBody):t.requestBody,o=A2t({content:i.content,context:e});if(o==null)return;let s=Wn(o.schema)?e.resolveSchemaReference(o.schema):o.schema;if(s.allOf==null&&s.properties==null)return;let a=s.properties?.[r.streamConditionProperty];a!=null&&Wn(a)&&(a=void 0);let c={...s,properties:{...s.properties,[r.streamConditionProperty]:{...a??{},type:"boolean","x-fern-boolean-literal":n}},title:void 0,required:[...s.required??[],r.streamConditionProperty]};return{requestBody:{content:{[ld.APPLICATION_JSON]:{schema:c}}},schemaReference:Wn(o.schema)?o.schema:void 0}}function _va({operation:e,response:t}){return{...e.responses,200:{description:"",content:{[ld.APPLICATION_JSON]:{schema:t}}}}}function Vva(e,t){return e._visit({unknown:r=>{let n=zh.serialization.ExampleEndpointCallSchema.parse(r);if(n.ok&&n.value.response!=null)return n.value.response.stream!=null},full:()=>{},_other:()=>{}})}var Yva=require("crypto");function Owp(e){switch(e){case"unix-seconds":return BA.WebhookTimestampFormat.UnixSeconds;case"unix-millis":return BA.WebhookTimestampFormat.UnixMillis;case"iso8601":return BA.WebhookTimestampFormat.Iso8601}}function Gva(e){if(e!=null)return{header:e.header,format:e.format!=null?Owp(e.format):void 0,tolerance:e.tolerance}}function Pwp(e){if(e!=null)return{components:e.components.map(t=>{switch(t){case"body":return BA.WebhookPayloadComponent.Body;case"timestamp":return BA.WebhookPayloadComponent.Timestamp;case"notification-url":return BA.WebhookPayloadComponent.NotificationUrl;case"message-id":return BA.WebhookPayloadComponent.MessageId}}),delimiter:e.delimiter,bodySort:Dwp(e["body-sort"])}}function Dwp(e){if(e!=null&&e==="alphabetical")return BA.WebhookPayloadBodySort.Alphabetical}function Rwp(e){if(e!=null)switch(e){case"sha256":return BA.WebhookSignatureAlgorithm.Sha256;case"sha1":return BA.WebhookSignatureAlgorithm.Sha1;case"sha384":return BA.WebhookSignatureAlgorithm.Sha384;case"sha512":return BA.WebhookSignatureAlgorithm.Sha512}}function Wva(e){if(e!=null)switch(e){case"base64":return BA.WebhookSignatureEncoding.Base64;case"hex":return BA.WebhookSignatureEncoding.Hex}}function Fwp(e){if(e!=null)switch(e){case"rsa-sha256":return BA.AsymmetricAlgorithm.RsaSha256;case"rsa-sha384":return BA.AsymmetricAlgorithm.RsaSha384;case"rsa-sha512":return BA.AsymmetricAlgorithm.RsaSha512;case"ecdsa-sha256":return BA.AsymmetricAlgorithm.EcdsaSha256;case"ecdsa-sha384":return BA.AsymmetricAlgorithm.EcdsaSha384;case"ecdsa-sha512":return BA.AsymmetricAlgorithm.EcdsaSha512;case"ed25519":return BA.AsymmetricAlgorithm.Ed25519}}function Kva(e){if(e.type==="hmac")return BA.WebhookSignatureVerification.hmac({header:e.header,algorithm:Rwp(e.algorithm),encoding:Wva(e.encoding),signaturePrefix:e["signature-prefix"],payloadFormat:Pwp(e["payload-format"]),timestamp:Gva(e.timestamp)});if(e.type==="asymmetric"){let t=Fwp(e["asymmetric-algorithm"]);return t==null?void 0:BA.WebhookSignatureVerification.asymmetric({header:e.header,asymmetricAlgorithm:t,encoding:Wva(e.encoding),signaturePrefix:e["signature-prefix"],jwksUrl:e["jwks-url"],keyIdHeader:e["key-id-header"],timestamp:Gva(e.timestamp)})}}function Hva(e){let t=Lr(e,kn.WEBHOOK_SIGNATURE);if(!(t==null||typeof t=="boolean"))return Kva(t)}function Jva(e,t){let r=Lr(t,kn.WEBHOOK_SIGNATURE);return r!=null?typeof r=="boolean"?Hva(e):Kva(r):Hva(e)}function Xva({context:e,operationContext:t,source:r}){let{document:n,operation:i,path:o,method:s,baseBreadcrumbs:a,sdkMethodName:c}=t,u=[...a,"Payload"],l=[...a,"Response"],p=Bxr({parameters:[...t.pathItemParameters,...t.operationParameters],context:e,requestBreadcrumbs:u,path:o,httpMethod:s,source:r});if(s!=="POST"&&s!=="GET")return e.logger.warn(`Skipping webhook ${s.toUpperCase()} ${o}: Only POST and GET methods are currently supported`),[];let d=i.operationId??Nwp({path:o,method:s,sdkMethodName:c}),f=i.responses?Dxr({operationContext:t,streamFormat:void 0,responses:i.responses,context:e,responseBreadcrumbs:l,source:r}):void 0,m=Jva(n,i);if(i.requestBody==null){if(p.queryParameters.length===0)return e.logger.error(`Skipping webhook ${s.toUpperCase()} ${o}: Missing a request body and no query parameters`),[];let A=p.queryParameters.map(w=>({key:w.name,schema:w.schema,readonly:void 0,writeonly:void 0,audiences:[],conflict:{},nameOverride:w.parameterNameOverride,generatedName:My([...u,w.name],e.options.preserveSchemaIds),availability:w.availability})),y=zr.object({description:i.description,properties:A,nameOverride:void 0,generatedName:My(u,e.options.preserveSchemaIds),title:void 0,allOf:[],allOfPropertyConflicts:[],namespace:e.namespace,groupName:void 0,fullExamples:void 0,additionalProperties:!1,availability:void 0,encoding:void 0,source:r,inline:void 0,minProperties:void 0,maxProperties:void 0});return[{summary:i.summary,audiences:Lr(i,kn.AUDIENCES)??[],sdkName:c,namespace:e.namespace,method:s,operationId:d,tags:e.resolveTagsToTagIds(i.tags),headers:p.headers,generatedPayloadName:My(u,e.options.preserveSchemaIds),payload:y,signatureVerification:m,multipartFormData:void 0,response:f?.value,description:i.description,examples:[],source:r}]}let h=Wn(i.requestBody)?e.resolveRequestBodyReference(i.requestBody):i.requestBody;return Object.entries(h.content).map(([A,y])=>KY({mediaType:A,mediaTypeObject:y,description:h.description,document:n,context:e,requestBreadcrumbs:[...a,"Payload"],source:r,namespace:e.namespace})).filter(A=>A!=null).map(A=>{if(A==null||A.type!=="json"&&A.type!=="formUrlEncoded"&&A.type!=="multipart"){e.logger.error(`Skipping webhook ${o} because non-json, non-formUrlEncoded, and non-multipart request body`);return}let y,I;return A.type==="multipart"?(y={name:A.name,properties:A.properties,description:A.description,source:A.source},I=zr.unknown({nameOverride:void 0,generatedName:My(u,e.options.preserveSchemaIds),title:void 0,description:A.description,availability:void 0,namespace:e.namespace,groupName:void 0,example:void 0})):I=A.schema,{summary:i.summary,audiences:Lr(i,kn.AUDIENCES)??[],sdkName:c,namespace:e.namespace,method:s,operationId:d,tags:e.resolveTagsToTagIds(i.tags),headers:p.headers,generatedPayloadName:My(u,e.options.preserveSchemaIds),payload:I,signatureVerification:m,multipartFormData:y,response:f?.value,description:i.description,examples:kwp(A.fullExamples),source:r}}).filter(A=>A!=null)}function kwp(e){if(e==null)return[];let t=[];for(let r of e){let n=fbe(r.value);n!=null&&t.push({description:r.description,name:r.name,payload:n})}return t}function Nwp({path:e,method:t,sdkMethodName:r}){if(r?.methodName!=null)return r.methodName;let n=jwp(e);if(n===e.toLowerCase())return e;let i=(0,Yva.createHash)("sha256").update(e).digest("hex").slice(0,8);return Qwp(`${n}_${t.toLowerCase()}_${i}`)}function jwp(e){return e.replace(/[{$}#]/g,"").replace(/[^a-zA-Z0-9]+/g,"_").replace(/^_+|_+$/g,"").replace(/_+/g,"_").toLowerCase().slice(0,64)}function Qwp(e){return e.split("_").map((t,r)=>r===0?t.toLowerCase():t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function m4i({context:e,pathItemContext:t,operation:r,convertToWebhook:n}){let i=Lr(r,kn.IGNORE);if(i!=null&&i){e.logger.debug(`${t.method.toUpperCase()} ${t.path} is marked with x-fern-ignore. Skipping.`);return}let o=Mwp(r,e),s=iva(e.document,r),a={...t,sdkMethodName:o,baseBreadcrumbs:Lwp({operation:r,sdkMethodName:o,httpMethod:t.method,path:t.path,shouldUseIdiomaticRequestNames:e.options.shouldUseIdiomaticRequestNames}),operation:r,operationParameters:r.parameters??[],pagination:s};if(n)return{type:"webhook",value:Xva({context:e,operationContext:a,source:e.source})};let c=rva(e.document,r);if(c==null&&zwp({operation:r,context:e})&&(c={type:"stream",format:"sse",terminator:void 0,resumable:t4i(e.document)??!1}),c!=null){let p=qva({context:e,operationContext:a,streamingExtension:c});return p!=null?{type:"streaming",streaming:p.streaming,nonStreaming:p.nonStreaming}:void 0}let u=eva(r);if(u!=null){let p=zva({context:e,operationContext:a,asyncExtension:u,source:e.source});return{type:"async",async:p.async,sync:p.sync}}return{type:"http",value:vue({context:e,operationContext:a,streamFormat:void 0,source:e.source})}}function Mwp(e,t){let r=Lr(e,kn.SDK_METHOD_NAME),n=Lr(e,kn.SDK_GROUP_NAME)??[];if(r!=null){let i=typeof n=="string"?[n]:n;return i=t.resolveGroupName(i),{groupName:i,methodName:r}}}function Lwp({sdkMethodName:e,operation:t,httpMethod:r,path:n,shouldUseIdiomaticRequestNames:i}){let o=[];if(e!=null){if(i&&o.push(e.methodName),e.groupName.length>0){let s=e.groupName[e.groupName.length-1];s!=null&&o.push(typeof s=="string"?s:s.name)}i||o.push(e.methodName)}else t.operationId!=null?o.push(t.operationId):o.push(si(`${r}_${n.split("/").join("_")}`));return o}function zwp({operation:e,context:t}){if(e.responses==null)return!1;for(let[r,n]of Object.entries(e.responses)){let i=parseInt(r);if(isNaN(i)||i<200||i>=300)continue;let o=Wn(n)?t.resolveResponseReference(n):n;if(o.content!=null&&sva(o.content))return!0}return!1}function Zva(e,t,r,n){let i=[],o=eIa(t),s={document:r,pathItem:t,path:e,pathItemParameters:t.parameters??[]};for(let a of o){if(n.filter.skipEndpoint({method:a.method,path:e})){n.logger.debug(`Skipping endpoint "${a.method} ${e}"`);continue}let c=Uwp({operation:a.operation}),u=m4i({context:n,pathItemContext:{...s,method:a.method},operation:a.operation,convertToWebhook:c});u&&i.push(u)}return i}function $va(e,t,r,n){let i=[],o=eIa(t),s={document:r,pathItem:t,path:e,pathItemParameters:t.parameters??[]};for(let a of o){if(n.filter.skipEndpoint({method:a.method,path:e})){n.logger.debug(`Skipping endpoint "${a.method} ${e}"`);continue}let c=m4i({context:n,pathItemContext:{...s,method:a.method},operation:a.operation,convertToWebhook:!0});c&&i.push(c)}return i}function eIa(e){let t=[];return e.get!=null&&t.push({method:A1.Get,operation:e.get}),e.post!=null&&t.push({method:A1.Post,operation:e.post}),e.put!=null&&t.push({method:A1.Put,operation:e.put}),e.delete!=null&&t.push({method:A1.Delete,operation:e.delete}),e.patch!=null&&t.push({method:A1.Patch,operation:e.patch}),e.head!=null&&t.push({method:A1.Head,operation:e.head}),t}function Uwp({operation:e}){return Lr(e,[kn.WEBHOOK])??!1}_t();function tIa(e){let t=Lr(e,kn.BASIC_AUTH_USERNAME_VARIABLE_NAME),r=Lr(e,kn.BASIC_AUTH_PASSWORD_VARIABLE_NAME);return{usernameVariable:t,passwordVariable:r}}function rIa(e){return Lr(e,kn.FERN_BASIC_AUTH)}function iIa(e,t,r,n){if(Wn(e)){if(n==null)throw new j({message:`Converting referenced security schemes requires context: ${JSON.stringify(e)}`,code:j.Code.InternalError});let i=n.resolveSecuritySchemeReference(e);return nIa(i,t,r)}return nIa(e,t,r)}function nIa(e,t,r){try{if(e.type==="apiKey"&&e.in==="header"){let n=Lr(e,oO.BEARER_FORMAT),i=Lr(e,kn.FERN_HEADER_AUTH);return g1.header({headerName:e.name,prefix:n!=null?"Bearer":i?.prefix,headerVariableName:i?.name??Lr(e,kn.HEADER_VARIABLE_NAME),headerEnvVar:i?.env,headerPlaceholder:i?.placeholder})}else if(e.type==="http"&&e.scheme?.toLowerCase()==="bearer"){let n=Lr(e,kn.FERN_BEARER_TOKEN);return g1.bearer({tokenVariableName:n?.name??Lr(e,kn.BEARER_TOKEN_VARIABLE_NAME),tokenEnvVar:n?.env,tokenPlaceholder:n?.placeholder})}else if(e.type==="http"&&e.scheme?.toLowerCase()==="basic"){let n=rIa(e),i=tIa(e);return g1.basic({usernameVariableName:n?.username?.name??i.usernameVariable,usernameEnvVar:n?.username?.env,usernamePlaceholder:n?.username?.placeholder,passwordVariableName:n?.password?.name??i.passwordVariable,passwordEnvVar:n?.password?.env,passwordPlaceholder:n?.password?.placeholder})}else{if(e.type==="openIdConnect")return g1.bearer({tokenVariableName:void 0,tokenEnvVar:void 0,tokenPlaceholder:void 0});if(e.type==="oauth2")return g1.oauth({scopesEnum:_wp(e,t)})}}catch(n){r.logger.debug(`Error converting security scheme: ${n?.message}`)}r.logger.debug(`Skipping security scheme: ${JSON.stringify(e,null)} - not currently supported. Please reach out to Fern support team!`)}function _wp(e,t){let r=e.flows.authorizationCode?.scopes??e.flows.clientCredentials?.scopes??e.flows.implicit?.scopes??e.flows.password?.scopes;if(r!=null){let n=lbe({nameOverride:void 0,generatedName:"OauthScope",title:void 0,enumValues:Object.keys(r),fernEnum:Object.fromEntries(Object.entries(r).map(([o,s])=>[o,{description:s}])),_default:void 0,description:void 0,availability:void 0,enumVarNames:void 0,wrapAsOptional:!1,wrapAsNullable:!1,namespace:void 0,groupName:void 0,context:void 0,source:t,inline:void 0}),i=fd(n);if(i.type==="enum")return i}}function oIa(e){return Lr(e,kn.BASE_PATH)}ss();var Vwp=Bt.record(Bt.string(),Bt.object({summary:Bt.string().optional(),description:Bt.string().optional()}));function sIa({document:e,context:t}){return l2t(e,kn.GROUPS,Vwp,t.logger)}function aIa({context:e,document:t}){return Lr(t,kn.FERN_VERSION)??void 0}function cIa(e){let t=Lr(e,kn.FERN_GLOBAL_HEADERS),r=[];for(let n of t??[])r.push({header:n.header,name:n.name,optional:n.optional,env:n.env,clientDefault:n["x-fern-default"],schema:n.type!=null?p2t({fernType:n.type,description:void 0,availability:void 0,generatedName:n.name??n.header,title:void 0,namespace:void 0,groupName:void 0,nameOverride:void 0}):void 0});return r}function uIa(e){let t=Lr(e,kn.FERN_IDEMPOTENCY_HEADERS),r=[];for(let n of t??[])r.push({...n,schema:n.type!=null?p2t({fernType:n.type,description:void 0,availability:void 0,generatedName:n.name??n.header,title:void 0,namespace:void 0,groupName:void 0,nameOverride:void 0}):void 0});return r}_t();function lIa(e,t){let r=Lr(e,kn.SDK_VARIABLES);return r==null?{}:Object.fromEntries(Object.entries(r).map(([n,i])=>{if(i.type==="string")return[n,{nameOverride:void 0,generatedName:My([n],t),title:i.title,schema:Yl.string({default:CYe(i),pattern:i.pattern,format:i.format,minLength:i.minLength,maxLength:i.maxLength}),description:i.description,availability:void 0,namespace:void 0,groupName:void 0}];throw new j({message:`Variable ${n} has unsupported schema ${JSON.stringify(i)}`,code:j.Code.ValidationError})}))}var qwp="webhooks";function pIa(e){return Lr(e,qwp)??{}}var w2t=class extends OYe{nonRequestReferencedSchemas=new Set;twoOrMoreRequestsReferencedSchemas=new Set;singleRequestReferencedSchemas=new Set;discriminatedUnionReferences={};discriminatedUnionMetadata={};schemasToExclude=new Set;constructor({document:t,taskContext:r,authHeaders:n,options:i,source:o,namespace:s}){super({document:t,taskContext:r,authHeaders:n,options:i,source:o,namespace:s})}getDummy(){return new WNe({document:this.document,taskContext:this.taskContext,options:this.options,source:this.source,namespace:this.namespace})}markSchemaAsReferencedByNonRequest(t){this.nonRequestReferencedSchemas.add(t)}markSchemaAsReferencedByRequest(t){this.singleRequestReferencedSchemas.has(t)?this.twoOrMoreRequestsReferencedSchemas.add(t):this.singleRequestReferencedSchemas.add(t)}getReferencedSchemas(){return new Set([...this.nonRequestReferencedSchemas,...this.twoOrMoreRequestsReferencedSchemas])}markReferencedByDiscriminatedUnion(t,r,n){let i=this.discriminatedUnionReferences[t.$ref];i!=null?(i.discriminants.add(r),i.numReferences+=n):this.discriminatedUnionReferences[t.$ref]={discriminants:new Set([r]),numReferences:n}}getReferencesFromDiscriminatedUnion(t){return this.discriminatedUnionReferences[t.$ref]}markSchemaWithDiscriminantValue(t,r,n){let i=this.discriminatedUnionMetadata[t.$ref];i!=null?i.discriminants.set(r,n):this.discriminatedUnionMetadata[t.$ref]={discriminants:new Map([[r,n]])}}getDiscriminatedUnionMetadata(t){return this.discriminatedUnionMetadata[t.$ref]}excludeSchema(t){this.schemasToExclude.add(t)}isSchemaExcluded(t){return this.schemasToExclude.has(t)}};function fIa(e){return Lr(e,kn.RESOLUTIONS)}function dIa({openapi:e}){let t=fIa(e);if(t==null)return e;let r={};for(let n of t){let i=`#/components/schemas/${n.name}`;for(let o of n.resolutions)e=Gwp({openapi:e,schemaReference:o,schemaName:n.name}),e=mIa({openapi:e,replaceReference:o,schemaReference:i,replacedReferences:r}),r={...r,...Object.fromEntries(n.resolutions.map(s=>[i,s]))}}return e}function Gwp({openapi:e,schemaReference:t,schemaName:r}){let n=t.replace("#/","").split("/").map(o=>o.replaceAll("~1","/")),i=e;for(let o of n){let s=i[o];if(s==null)return e;i=s}return e.components==null&&(e.components={}),e.components.schemas==null&&(e.components.schemas={}),e.components.schemas[r]=i,e}function mIa({openapi:e,replaceReference:t,schemaReference:r,replacedReferences:n}){let i=Object.keys(n).filter(c=>t.startsWith(c)).sort((c,u)=>u.length-c.length)[0];if(i!=null){let c=n[i];if(c!=null){let u=r.replace(i,c);return mIa({openapi:e,replaceReference:t,schemaReference:u,replacedReferences:{}})}}let o=t.replace("#/","").split("/").map(c=>c.replaceAll("~1","/")),s=e;for(let c of o.slice(0,-1)){let u=s[c];if(u==null)return e;s=u}let a=o[o.length-1];return a==null||(s[a]={$ref:r}),e}function gIa({openApi:e,taskContext:t,options:r,source:n,namespace:i}){e=dIa({openapi:e}),axr();let o=new w2t({document:e,taskContext:t,authHeaders:new Set,options:r,source:n,namespace:i}),s=Object.fromEntries(Object.entries(e.components?.securitySchemes??{}).map(([J,$])=>{let ne=iIa($,n,t,o);return ne==null?null:[J,ne]}).filter(J=>J!==null)),a=hxr(e.security?.filter(J=>J!=null)),c=new Set(Object.entries(s).map(([J,$])=>$.type==="basic"||$.type==="bearer"||$.type==="oauth"?"Authorization":$.type==="header"?$.headerName:null).filter(J=>J!=null)),u=lIa(e,r.preserveSchemaIds),l=cIa(e),p=uIa(e),d=r.audiences??[],f=[],m=[],h=new w2t({document:e,taskContext:t,authHeaders:c,options:r,source:n,namespace:i});h.filter.hasEndpoints()&&t.logger.debug("Endpoint filter applied..."),Object.entries(e.paths??{}).forEach(([J,$])=>{if($==null)return;let ne=Zva(J,$,e,h);for(let fe of ne){let be=hIa({operation:fe});if(!(d.length>0&&!d.some(ce=>be.includes(ce))))switch(fe.type){case"async":f.push(...fe.sync),f.push(...fe.async);break;case"http":f.push(...fe.value);break;case"streaming":f.push(...fe.streaming),fe.nonStreaming&&f.push(...fe.nonStreaming);break;case"webhook":m.push(...fe.value);break;default:Ce(fe)}}}),Object.entries(pIa(e)).forEach(([J,$])=>{if($==null)return;t.logger.debug(`Converting path ${J}`);let ne=$va(J,$,e,h);for(let fe of ne){let be=hIa({operation:fe});d.length>0&&!d.some(ce=>be.includes(ce))||m.push(...fe.value)}});let A=Object.fromEntries(Object.entries(e.components?.schemas??{}).map(([J,$])=>{let ne=Lr($,kn.SDK_NAMESPACE);if(!Wn($)){let fe=Lr($,kn.IGNORE);if(fe!=null&&fe)return[];if(Nva.has(J))return[J,fc({...$,"x-fern-type-name":`${J}Body`},!1,!1,h,[J],n,ne??i)]}return[J,fc($,!1,!1,h,[J],n,ne??i)]}).filter(J=>J.length>0)),y=Wwp(A,h,n),I=Kwp(y,h),w=VY(),C={};for(let[J,$]of Object.entries(I)){let ne=fd($);if(h.isSchemaExcluded(J))continue;let fe=w.getUniqueSchemaId(J,h.logger,r.resolveSchemaCollisions);C[fe]=ne}let x=new dbe(I,h.nonRequestReferencedSchemas,h),B=m.map(J=>{let ne=J.examples;if(!r.disableExamples&&ne.length===0){let fe=x.buildExample({schema:J.payload,exampleId:void 0,example:void 0,skipReadonly:!1,options:{ignoreOptionals:!1,isParameter:!1}});fe!=null&&(ne=[{name:void 0,description:void 0,payload:fe}])}return{...J,payload:fd(J.payload),examples:ne}}),O=new lxr(I,h,l),F=f.map(J=>{let $=J.examples,ne=$;if(!r.disableExamples&&($.length===0||$.every(g2t))){let ce=O.buildEndpointExample(J);ce.length>0&&(ne=[...ce,...$.filter(he=>!g2t(he))])}let fe=J.request,be=J.response;return{...J,request:fe?.type==="json"||fe?.type==="formUrlEncoded"?{...fe,schema:fd(fe.schema)}:fe,response:be?.type==="json"?{...be,schema:fd(be.schema)}:be,queryParameters:J.queryParameters.map(ce=>({description:ce.description,name:ce.name,schema:fd(ce.schema),parameterNameOverride:ce.parameterNameOverride,explode:ce.explode,availability:ce.availability,source:ce.source,clientDefault:ce.clientDefault})),pathParameters:J.pathParameters.map(ce=>({description:ce.description,name:ce.name,schema:fd(ce.schema),parameterNameOverride:ce.parameterNameOverride,variableReference:ce.variableReference,availability:ce.availability,source:ce.source,clientDefault:ce.clientDefault})),headers:J.headers.map(ce=>({description:ce.description,name:ce.name,schema:fd(ce.schema),parameterNameOverride:ce.parameterNameOverride,env:ce.env,availability:ce.availability,source:ce.source,clientDefault:ce.clientDefault})),examples:ne,errors:Ip(J.errors,ce=>{let he=ce.fullExamples?.map(Le=>{let Ne=fbe(Le.value);if(Ne!=null)return{name:Le.name,description:Le.description,example:Ne}}).filter(Ha);if(he?.length===0){let Le=x.buildExample({schema:ce.schema,example:void 0,exampleId:void 0,skipReadonly:!1,options:{ignoreOptionals:!1,isParameter:!1}});Le!=null&&he.push({name:void 0,description:void 0,example:Le})}return{generatedName:ce.generatedName,nameOverride:ce.nameOverride,schema:fd(ce.schema),description:ce.description,source:ce.source,examples:he}}),retries:J.retries}});O.finalize();let P=sIa({document:e,context:h});return{apiVersion:aIa({context:h,document:e}),basePath:oIa(e),title:e.info.title??"",description:e.info.description,groups:Object.fromEntries(Object.entries(P??{}).map(([J,$])=>[J,{summary:$.summary??void 0,description:$.description??void 0}])),servers:(e.servers??[]).map(J=>Txr(J,{groupMultiApiEnvironments:r.groupMultiApiEnvironments})),websocketServers:[],tags:{tagsById:Object.fromEntries((e.tags??[]).map(J=>[J.name,{id:J.name,description:J.description}])),orderedTagIds:e.tags?.map(J=>J.name)},endpoints:F,webhooks:B,channels:{},groupedSchemas:xYe(i,C),securitySchemes:s,security:a,hasEndpointsMarkedInternal:F.some(J=>J.internal),nonRequestReferencedSchemas:h.getReferencedSchemas(),variables:u,globalHeaders:l,idempotencyHeaders:p}}function Wwp(e,t,r){if(t.options.removeDiscriminantsFromSchemas===zn.RemoveDiscriminantsFromSchemas.Never)return e;let n=Hwp(e,t),i={};for(let[o,s]of Object.entries(e)){if(s.type!=="object"){i[o]=s;continue}let a={$ref:`#/components/schemas/${o}`},c=t.getReferencesFromDiscriminatedUnion(a);if(c==null){i[o]=s;continue}if(t.getReferencedSchemas().has(o)){i[o]=s;continue}let l={...s,type:"object",properties:s.properties.filter(d=>!c.discriminants.has(d.key)),allOfPropertyConflicts:s.allOfPropertyConflicts.filter(d=>!c.discriminants.has(d.propertyKey)),source:r};i[o]=l;let p=h4i({schema:s,schemas:e});for(let d of[...new Set(p)]){if(n.has(d))continue;let f=i[d]??e[d];f==null||f.type!=="object"||(i[d]={...f,type:"object",properties:f.properties.filter(m=>!c.discriminants.has(m.key)),allOfPropertyConflicts:f.allOfPropertyConflicts.filter(m=>!c.discriminants.has(m.propertyKey))})}}return i}function Hwp(e,t){let r=new Set;for(let[n,i]of Object.entries(e)){if(i.type!=="object")continue;let o={$ref:`#/components/schemas/${n}`};if(t.getReferencesFromDiscriminatedUnion(o)==null)for(let s of h4i({schema:i,schemas:e}))r.add(s)}return r}function Kwp(e,t){let r={};for(let[n,i]of Object.entries(e)){if(i.type!=="object"){r[n]=i;continue}let o={$ref:`#/components/schemas/${n}`},s=t.getDiscriminatedUnionMetadata(o);if(s==null){r[n]=i;continue}let a=[];for(let u of i.properties)if(s.discriminants.has(u.key)){let l=s.discriminants.get(u.key);l!=null&&a.push({...u,schema:zr.literal({nameOverride:void 0,generatedName:My([i.generatedName,l],t.options.preserveSchemaIds),title:void 0,value:Qy.string(l),namespace:void 0,groupName:void 0,description:void 0,availability:i.availability})})}else a.push(u);let c={...i,type:"object",properties:a};r[n]=c}return r}function h4i({schema:e,schemas:t}){let r=[];for(let n of e.allOf){r.push(n.schema);let i=t[n.schema];i!=null&&i.type==="object"&&r.push(...h4i({schema:i,schemas:t}))}return r}function Rxr(e){return[...new Set(e)]}function hIa({operation:e}){let t=[];switch(e.type){case"async":t=Rxr(e.async.flatMap(r=>r.audiences));break;case"http":t=Rxr(e.value.flatMap(r=>r.audiences));break;case"streaming":t=Rxr(e.streaming.flatMap(r=>r.audiences));break;case"webhook":t=Rxr(e.value.flatMap(r=>r.audiences));break;default:Ce(e)}return t}function uje({context:e,documents:t,options:r}){let n={apiVersion:void 0,title:void 0,description:void 0,basePath:void 0,servers:[],websocketServers:[],tags:{tagsById:{},orderedTagIds:void 0},hasEndpointsMarkedInternal:!1,endpoints:[],webhooks:[],channels:{},groupedSchemas:{rootSchemas:{},namespacedSchemas:{}},variables:{},nonRequestReferencedSchemas:new Set,securitySchemes:{},security:void 0,globalHeaders:[],idempotencyHeaders:[],groups:{}},i=0;for(let o of t)try{let s=o.source!=null?o.source:mD.openapi({file:"<memory>"});switch(o.type){case"openapi":{let a=gIa({taskContext:e,openApi:o.value,options:c_({options:o.settings,overrides:r}),source:s,namespace:o.namespace});n=$wp(n,a,c_({options:o.settings,overrides:r})),i++;break}case"asyncapi":{let a=$Ea({document:o.value,taskContext:e,options:c_({options:o.settings,overrides:r}),source:s,asyncApiOptions:Jwp({options:o.settings}),namespace:o.namespace});a.servers!=null&&(n.websocketServers=[...n.websocketServers,...a.servers.map(c=>({...c,audiences:void 0,description:void 0,defaultUrl:void 0,urlTemplate:void 0,variables:void 0}))]),a.channels!=null&&(n.channels={...n.channels,...a.channels}),a.groupedSchemas!=null&&(n.groupedSchemas=Fxr(n.groupedSchemas,a.groupedSchemas,r)),a.basePath!=null&&(n.basePath=a.basePath),i++;break}default:Ce(o)}}catch(s){e.logger.error(`Failed to parse ${o.type} document ${o.type==="openapi"?o.value.info?.title:o.source?.file}`),s instanceof Error&&e.logger.error(s.message,s.stack?`
3029
3029
  `+s.stack:"")}return n}function Jwp({options:e,overrides:t}){return{naming:t?.naming??e?.asyncApiNaming??gEa.naming}}function kxr(e){let t=String(e.description||e.name||e["x-fern-server-name"]||"default").trim(),r=t.toUpperCase();return r==="PRODUCTION"||r==="PRD"||r==="PROD"?"PRD":r==="SANDBOX"||r==="SBX"?"SBX":r==="STAGING"||r==="STG"?"STG":r==="PERFORMANCE"||r==="PRF"||r==="PERF"?"PRF":r==="E2E"||r==="E_2_E"?"E2E":r==="QAL"||r==="QUALITY"?"QAL":t}function A4i(e){try{let n=new URL(e).hostname.split("."),i=new Set(["api","www","service","services","example","com","org","net","io"]);for(let s of n){let a=s.split("-")[0],c=a&&a.length>2?a:s;if(c&&!i.has(c.toLowerCase())&&c.length>2)return c.toLowerCase()}let o=n[0];return o&&o.length>0?o.toLowerCase():"api"}catch{let t=e.match(/https?:\/\/([^./-]+)/);return t&&t[1]?t[1].toLowerCase():"api"}}function g4i(e,t){let r=e??[],n=t??[];if(r.length===0&&n.length===0)return;let i=new Map;for(let o of[...r,...n]){let s=Object.keys(o).sort(),a={};for(let u of s)a[u]=o[u]??[];let c=JSON.stringify(a);i.has(c)||i.set(c,o)}return Array.from(i.values())}function Ywp(e,t){if(Zwp(e))return!0;if(e.length===0||t.length===0||e.length!==t.length)return!1;let r=new Map;for(let o of e){if(o.type==="grouped")continue;let s=kxr(o);r.set(s,o.url)}let n=!0,i=!0;for(let o of t){if(o.type==="grouped")continue;let s=kxr(o),a=r.get(s);a?a===o.url&&(i=!1):n=!1}return n&&i}function y4i(e){return e.defaultUrl??e.url}function Xwp(e){if(e.length===0||!e[0])return"api";let t=e[0];return t.type==="grouped"?Object.keys(t.urls)[0]??"api":A4i(y4i(t))}function Zwp(e){return e.some(t=>t.type==="grouped")}function $wp(e,t,r){if(!(r?.groupMultiApiEnvironments===!0))return{apiVersion:e.apiVersion??t.apiVersion,title:e.title??t.title,description:e.description??t.description,basePath:e.basePath??t.basePath,servers:[...e.servers,...t.servers],websocketServers:[...e.websocketServers,...t.websocketServers],tags:{tagsById:{...e.tags.tagsById,...t.tags.tagsById},orderedTagIds:e.tags.orderedTagIds==null&&t.tags.orderedTagIds==null?void 0:[...e.tags.orderedTagIds??[],...t.tags.orderedTagIds??[]]},hasEndpointsMarkedInternal:e.hasEndpointsMarkedInternal||t.hasEndpointsMarkedInternal,endpoints:[...e.endpoints,...t.endpoints],webhooks:[...e.webhooks,...t.webhooks],channels:{...e.channels,...t.channels},groupedSchemas:Fxr(e.groupedSchemas,t.groupedSchemas,r),variables:{...e.variables,...t.variables},nonRequestReferencedSchemas:new Set([...e.nonRequestReferencedSchemas,...t.nonRequestReferencedSchemas]),securitySchemes:{...e.securitySchemes,...t.securitySchemes},security:g4i(e.security,t.security),globalHeaders:e.globalHeaders!=null?[...e.globalHeaders,...t.globalHeaders??[]]:void 0,idempotencyHeaders:e.idempotencyHeaders!=null?[...e.idempotencyHeaders,...t.idempotencyHeaders??[]]:void 0,groups:{...e.groups,...t.groups}};if(Ywp(e.servers,t.servers)){let o=[],s=[],a=Xwp(t.servers),c=new Map;for(let p of e.servers)if(p.type==="grouped"){let d=p.name??"default";c.has(d)||c.set(d,{});let f=c.get(d);if(f)for(let[m,h]of Object.entries(p.urls))f[m]=h}else{let d=A4i(y4i(p)),f=kxr(p);c.has(f)||c.set(f,{});let m=c.get(f);m&&(m[d]={url:p.url,audiences:p.audiences,defaultUrl:p.defaultUrl,urlTemplate:p.urlTemplate,variables:p.variables})}for(let p of t.servers){let d=kxr(p);c.has(d)||c.set(d,{});let f=c.get(d);f&&(f[a]={url:p.url,audiences:p.audiences,defaultUrl:p.defaultUrl,urlTemplate:p.urlTemplate,variables:p.variables})}for(let[p,d]of c.entries()){let f={type:"grouped",name:p,description:`${p} environment`,urls:d};o.push(f)}let u=e.endpoints.map(p=>{let d=p.__apiName;if(d)return{...p,type:"multi-api",apiName:d,servers:[{name:d,url:void 0,audiences:void 0}]};let f=e.servers[0],m=f!=null&&f.type!=="grouped"?A4i(y4i(f)):"api";return{...p,type:"multi-api",apiName:m,servers:[{name:m,url:void 0,audiences:void 0}]}}),l=t.endpoints.map(p=>({...p,type:"multi-api",apiName:a,servers:[{name:a,url:void 0,audiences:void 0}]}));return s=[...u,...l],{apiVersion:e.apiVersion??t.apiVersion,title:e.title??t.title,description:e.description??t.description,basePath:e.basePath??t.basePath,servers:o,websocketServers:[...e.websocketServers,...t.websocketServers],tags:{tagsById:{...e.tags.tagsById,...t.tags.tagsById},orderedTagIds:e.tags.orderedTagIds==null&&t.tags.orderedTagIds==null?void 0:[...e.tags.orderedTagIds??[],...t.tags.orderedTagIds??[]]},hasEndpointsMarkedInternal:e.hasEndpointsMarkedInternal||t.hasEndpointsMarkedInternal,endpoints:s.map(p=>{if(p.type==="multi-api"){let{type:m,apiName:h,servers:A,...y}=p;return{...y,__apiName:h,servers:A}}let{type:d,...f}=p;return f}),webhooks:[...e.webhooks,...t.webhooks],channels:{...e.channels,...t.channels},groupedSchemas:Fxr(e.groupedSchemas,t.groupedSchemas,r),variables:{...e.variables,...t.variables},nonRequestReferencedSchemas:new Set([...e.nonRequestReferencedSchemas,...t.nonRequestReferencedSchemas]),securitySchemes:{...e.securitySchemes,...t.securitySchemes},security:g4i(e.security,t.security),globalHeaders:e.globalHeaders!=null?[...e.globalHeaders,...t.globalHeaders??[]]:void 0,idempotencyHeaders:e.idempotencyHeaders!=null?[...e.idempotencyHeaders,...t.idempotencyHeaders??[]]:void 0,groups:{...e.groups,...t.groups}}}return{apiVersion:e.apiVersion??t.apiVersion,title:e.title??t.title,description:e.description??t.description,basePath:e.basePath??t.basePath,servers:[...e.servers,...t.servers],websocketServers:[...e.websocketServers,...t.websocketServers],tags:{tagsById:{...e.tags.tagsById,...t.tags.tagsById},orderedTagIds:e.tags.orderedTagIds==null&&t.tags.orderedTagIds==null?void 0:[...e.tags.orderedTagIds??[],...t.tags.orderedTagIds??[]]},hasEndpointsMarkedInternal:e.hasEndpointsMarkedInternal||t.hasEndpointsMarkedInternal,endpoints:[...e.endpoints,...t.endpoints],webhooks:[...e.webhooks,...t.webhooks],channels:{...e.channels,...t.channels},groupedSchemas:Fxr(e.groupedSchemas,t.groupedSchemas,r),variables:{...e.variables,...t.variables},nonRequestReferencedSchemas:new Set([...e.nonRequestReferencedSchemas,...t.nonRequestReferencedSchemas]),securitySchemes:{...e.securitySchemes,...t.securitySchemes},security:g4i(e.security,t.security),globalHeaders:e.globalHeaders!=null?[...e.globalHeaders,...t.globalHeaders??[]]:void 0,idempotencyHeaders:e.idempotencyHeaders!=null?[...e.idempotencyHeaders,...t.idempotencyHeaders??[]]:void 0,groups:{...e.groups,...t.groups}}}function Fxr(e,t,r){let n=VY(),i=r?.resolveSchemaCollisions??!1,o={...e.rootSchemas};for(let[s,a]of Object.entries(t.rootSchemas)){let c=n.getUniqueSchemaId(s,void 0,i);o[c]=a}e.rootSchemas=o;for(let[s,a]of Object.entries(t.namespacedSchemas))if(e.namespacedSchemas[s]!=null){let c=e.namespacedSchemas[s];for(let[u,l]of Object.entries(a)){let p=n.getUniqueSchemaId(u,void 0,i);c[p]=l}}else e.namespacedSchemas[s]=a;return e}var RDa=we(MBr(),1),LBr={config:new RDa.Config({apis:{},styleguide:{plugins:[Gzi],rules:{struct:"warn"}}},void 0),dereference:!1,removeUnusedComponents:!1,keepUrlRefs:!1};function j9({options:e,overrides:t}={}){return{...c_({options:e,overrides:t}),...DNe({options:e,overrides:t})}}var n7p={shouldUseTitleAsName:"useTitlesAsName",shouldUseUndiscriminatedUnionsWithLiterals:["shouldUseUndiscriminatedUnionsWithLiterals","discriminatedUnionV2"],shouldUseIdiomaticRequestNames:"shouldUseIdiomaticRequestNames",asyncApiMessageNaming:"asyncApiNaming",shouldUseOptionalAdditionalProperties:"optionalAdditionalProperties",coerceEnumsToLiterals:"coerceEnumsToLiterals",objectQueryParameters:"objectQueryParameters",respectReadonlySchemas:"respectReadonlySchemas",respectNullableSchemas:"respectNullableSchemas",onlyIncludeReferencedSchemas:"onlyIncludeReferencedSchemas",inlinePathParameters:"inlinePathParameters",useBytesForBinaryResponse:"useBytesForBinaryResponse",respectForwardCompatibleEnums:"respectForwardCompatibleEnums",filter:"filter",defaultFormParameterEncoding:"defaultFormParameterEncoding",exampleGeneration:"exampleGeneration",additionalPropertiesDefaultsTo:"additionalPropertiesDefaultsTo",typeDatesAsStrings:"typeDatesAsStrings",preserveSingleSchemaOneOf:"preserveSingleSchemaOneOf",inlineAllOfSchemas:"inlineAllOfSchemas",resolveAliases:"resolveAliases",groupMultiApiEnvironments:"groupMultiApiEnvironments",groupEnvironmentsByHost:"groupEnvironmentsByHost",multiServerStrategy:"multiServerStrategy",inferDefaultEnvironment:"inferDefaultEnvironment",wrapReferencesToNullableInOptional:"wrapReferencesToNullableInOptional",coerceOptionalSchemasToNullable:"coerceOptionalSchemasToNullable",removeDiscriminantsFromSchemas:"removeDiscriminantsFromSchemas",defaultIntegerFormat:"defaultIntegerFormat",pathParameterOrder:"pathParameterOrder",resolveSchemaCollisions:"resolveSchemaCollisions",inferForwardCompatible:"inferForwardCompatible",coerceConstsTo:"coerceConstsTo",shouldInferDiscriminatedUnionBaseProperties:"shouldInferDiscriminatedUnionBaseProperties"};function i7p(e,t,r){r!==void 0&&(e[t]=r)}function zBr(e){let t={};if(e!=null)for(let[r,n]of Object.entries(n7p)){let i=e[r],o=Array.isArray(n)?n:[n];for(let s of o)i7p(t,s,i)}return j9({options:t})}function zXe(e){if(e.settings==null&&e.apiOverride?.auth==null&&e.apiOverride?.["auth-schemes"]==null&&e.apiOverride?.headers==null)return;let t={detectGlobalHeaders:!0};return e.settings?.unions==="v1"&&(t.discriminatedUnionV2=!0),e.apiOverride?.auth!=null&&(t.auth=e.apiOverride.auth),e.apiOverride?.["auth-schemes"]!=null&&(t.authSchemes=e.apiOverride["auth-schemes"]),e.apiOverride?.headers!=null&&(t.headers=e.apiOverride.headers),t}function $2(e){return e.swagger!=null}function n7i(e){return e.openapi!=null}jt();Ry();ao();function Hbe(e,t={}){return{...Object.fromEntries(P0(e.namedDefinitionFiles).map(([r,n])=>[r,{...n,defaultUrl:t.defaultURL}])),...P0(e.importedDefinitions).reduce((r,[n,i])=>({...r,...NPt(Hbe(i.definition,{defaultURL:i.url}),(o,s)=>zv(n,oa.of(s)))}),{})}}jt();Ry();ao();function jkt(e,t={}){return{...Object.fromEntries(P0(e.packageMarkers).map(([r,n])=>[r,{...n,defaultUrl:t.defaultURL}])),...P0(e.importedDefinitions).reduce((r,[n,i])=>({...r,...NPt(jkt(i.definition,{defaultURL:i.url}),(o,s)=>zv(n,oa.of(s)))}),{})}}function zue(e){return{...jkt(e),...Hbe(e)}}function C_(e,t){return zue(e.definition)[t]?.contents}jt();Ry();function eC(e,t){for(let[r,n]of P0(zue(e.definition)))t(r,n.contents,{isPackageMarker:YS(r)===ed,defaultUrl:n.defaultUrl})}jt();function Lje(e,t){for(let[r,n]of P0(jkt(e.definition)))t(r,n.contents)}jt();_t();var FDa=we(require("path"),1);async function UBr({schema:e,value:t,context:r,filepathBeingParsed:n}){let i=await e.safeParseAsync(t);if(i.success)return i.data;let o=i.error.errors.map(a=>{let c=a.path.length>0?`${a.message} at "${o7p(a.path)}"`:a.message;return Pj({content:c,prefix:" - "})}),s=[`Failed to parse file: ${FDa.default.relative(process.cwd(),n)}`,...o].join(`
3030
- `);return r.failAndThrow(s,void 0,{code:j.Code.ConfigError})}function o7p(e){return e.reduce((t,r)=>typeof r=="number"?t+"["+r+"]":t+(t===""?"":".")+r,"")}or();_t();var kDa=we(require("path"),1),s7p={dependencies:{}};async function NDa({absolutePathToWorkspace:e,rawDependenciesConfiguration:t,context:r}){if(t==null)return s7p;let n={};for(let[i,o]of Object.entries(t.dependencies))if(c7p(o)){let s=Yt.of(kDa.default.join(e,o));await cr(s)?n[i]={type:"local",absoluteFilepath:s,path:o}:r.failWithoutThrowing(`Path to ${i} dependency does not exist: ${s}`,void 0,{code:j.Code.ConfigError})}else{let a=i.substring(1).split("/"),c=a[0],u=a[1];c!=null&&u!=null?n[i]={type:"version",organization:c,apiName:u,version:o}:r.failWithoutThrowing(`Failed to parse dependency: ${i}`,void 0,{code:j.Code.ConfigError})}return r.getResult()===zf.Failure&&r.failAndThrow(void 0,void 0,{code:j.Code.ConfigError}),{dependencies:n}}var a7p=/^\.\.\/.*$/;function c7p(e){return a7p.test(e)}or();var QDa=require("fs/promises");ks();ss();var jDa=Bt.object({dependencies:Bt.record(Bt.string(),Bt.string())});async function MDa({absolutePathToWorkspace:e,context:t}){let r=nt(e,ke.of(rfa));if(!await cr(r))return;let n=await(0,QDa.readFile)(r),i=Or.load(n.toString());return await UBr({schema:jDa,value:i,context:t,filepathBeingParsed:r})}async function i7i({absolutePathToWorkspace:e,context:t}){let r=await MDa({absolutePathToWorkspace:e,context:t});return NDa({absolutePathToWorkspace:e,rawDependenciesConfiguration:r,context:t})}jt();_t();qBr();function HDa(e={accentPrimary:void 0,background:void 0},t){e.accentPrimary=e.accentPrimary??e.accentPrimaryDeprecated;let r=WBr(e);switch(r){case"dark":return{type:"dark",...GBr(e,t,"dark")};case"light":return{type:"light",...GBr(e,t,"light")};case"darkAndLight":return{type:"darkAndLight",dark:GBr(e,t,"dark"),light:GBr(e,t,"light")};default:Ce(r)}}function WBr({background:e,accentPrimary:t,accentPrimaryDeprecated:r}){if(t=t??r,typeof e=="string"&&typeof t=="string")return ms(e).isDark()?"dark":"light";if(e!=null){if(typeof e=="string")return ms(e).isDark()?"dark":"light";if(e.dark!=null&&e.light!=null)return"darkAndLight"}if(t!=null){if(typeof t=="string")return ms(t).isLight()?"dark":"light";if(t.dark!=null&&t.light!=null)return"darkAndLight"}if(t!=null&&e!=null){if(e.dark!=null&&t.dark!=null)return"dark";if(e.light!=null&&t.light!=null)return"light"}return"darkAndLight"}function GBr(e,t,r){let n=x1(e.accentPrimary??e.accentPrimaryDeprecated,t,"accent-primary",r)??ms.random(),i=x1(e.background,t,"background",r);return{accentPrimary:n.toRgb(),background:i?.toRgb(),border:x1(e.border,t,"border",r)?.toRgb(),sidebarBackground:x1(e.sidebarBackground,t,"sidebar-background",r)?.toRgb(),headerBackground:x1(e.headerBackground,t,"header-background",r)?.toRgb(),cardBackground:x1(e.cardBackground,t,"card-background",r)?.toRgb(),accent1:x1(e.accent1,t,"accent-1",r)?.toRgb(),accent2:x1(e.accent2,t,"accent-2",r)?.toRgb(),accent3:x1(e.accent3,t,"accent-3",r)?.toRgb(),accent4:x1(e.accent4,t,"accent-4",r)?.toRgb(),accent5:x1(e.accent5,t,"accent-5",r)?.toRgb(),accent6:x1(e.accent6,t,"accent-6",r)?.toRgb(),accent7:x1(e.accent7,t,"accent-7",r)?.toRgb(),accent8:x1(e.accent8,t,"accent-8",r)?.toRgb(),accent9:x1(e.accent9,t,"accent-9",r)?.toRgb(),accent10:x1(e.accent10,t,"accent-10",r)?.toRgb(),accent11:x1(e.accent11,t,"accent-11",r)?.toRgb(),accent12:x1(e.accent12,t,"accent-12",r)?.toRgb(),logo:void 0,backgroundImage:void 0}}function Mkt(e,t,r){if(e==null)return;let n=typeof e=="string"?e:e[r];if(n==null&&t==="accent-primary"&&typeof e!="string"&&(n=e[r==="dark"?"light":"dark"]),n!=null)return n}function x1(e,t,r,n){let i=Mkt(e,r,n);if(i==null)return;let o=ms(i);return o.isValid()||t.failAndThrow(`'${typeof e=="string"?r:`colors.${r}.${n}`}' should be a hex color of the format #FFFFFF`,void 0,{code:j.Code.ConfigError}),o}jt();or();var JDa=require("fs/promises");ao();var KDa=100;async function F7p({files:e,absolutePathToFernFolder:t}){let r=await Promise.all(e.map(async n=>{let i=await(0,JDa.readFile)(n,"utf-8");return[ME(t,n),i]}));return Object.fromEntries(r)}async function YDa({files:e,absolutePathToFernFolder:t}){let r={};for(let n=0;n<e.length;n+=KDa){let i=e.slice(n,n+KDa),o=await F7p({files:i,absolutePathToFernFolder:t});Object.assign(r,o)}return r}function _ue({landingPage:e,navigation:t}){return pU([e?.absolutePath,...k7p(t)])}function k7p(e){switch(e.type){case"tabbed":return e.items.flatMap(t=>t.child.type==="layout"?t.child.layout.flatMap(r=>HBr({item:r})):t.child.type==="variants"?t.child.variants.flatMap(r=>r.layout.flatMap(n=>HBr({item:n}))):t.child.type==="changelog"?t.child.changelog:[]);case"untabbed":return e.items.flatMap(t=>HBr({item:t}));case"versioned":return e.versions.flatMap(t=>_ue({landingPage:t.landingPage,navigation:t.navigation}));case"productgroup":return e.products.flatMap(t=>t.type==="external"?[]:_ue({landingPage:t.landingPage,navigation:t.navigation}));default:Ce(e)}}function HBr({item:e}){switch(e.type){case"apiSection":return pU([e.overviewAbsolutePath,...e.navigation.flatMap(t=>XDa({item:t}))]);case"link":return[];case"page":return[e.absolutePath];case"section":return pU([e.overviewAbsolutePath,...e.contents.flatMap(t=>HBr({item:t}))]);case"changelog":return e.changelog;case"librarySection":return[];default:Ce(e)}}function XDa({item:e}){return e.type==="page"?[e.absolutePath]:e.type==="package"||e.type==="section"?pU([e.overviewAbsolutePath,...e.contents.flatMap(t=>XDa({item:t}))]):[]}jt();lg();or();_t();var dpe=require("fs/promises");ks();var iW=we(require("path"),1);or();var rso=require("fs/promises"),Eec=we(N_(),1);function Skr({name:e}){return e.replace(/\.(md|mdx)$/i,"").toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"")}function nso({name:e}){return e.replace(/\.(md|mdx)$/i,"").replace(/[-_]/g," ").replace(/\b\w/g,t=>t.toUpperCase())}async function Tkr({absolutePath:e,readFileFn:t=(r,n)=>(0,rso.readFile)(r,n)}){try{let r=await t(e,"utf-8"),{data:n}=(0,Eec.default)(r),i;if(n.position!=null){let c=typeof n.position=="string"?parseFloat(n.position):n.position;typeof c=="number"&&Number.isFinite(c)&&(i=c)}let o=typeof n.title=="string"&&n.title.trim().length>0?n.title.trim():void 0,s=n.hidden===!0?!0:void 0,a=n.noindex===!0?!0:void 0;return{position:i,title:o,hidden:s,noindex:a}}catch{return{position:void 0,title:void 0,hidden:void 0,noindex:void 0}}}function bec({frontmatterTitle:e,useFrontmatterTitles:t,fallbackName:r}){return t&&e!=null?e:nso({name:r})}async function iso({directoryPath:e,titleSource:t,getDir:r=k0,readFileFn:n=(i,o)=>(0,rso.readFile)(i,o)}){let i=await r(e),o=t==="frontmatter",s=i.filter(d=>d.type==="file"&&!d.name.startsWith("_")&&(d.name.toLowerCase().endsWith(".md")||d.name.toLowerCase().endsWith(".mdx"))),a=i.filter(d=>d.type==="directory"&&!d.name.startsWith("_")),c=await Promise.all(s.map(d=>Tkr({absolutePath:d.absolutePath,readFileFn:n}))),u=s.map((d,f)=>{let m=c[f];return{type:"page",title:bec({frontmatterTitle:m?.title,useFrontmatterTitles:o,fallbackName:d.name}),absolutePath:d.absolutePath,slug:Skr({name:d.name}),icon:void 0,hidden:m?.hidden,noindex:m?.noindex,viewers:void 0,orphaned:void 0,featureFlags:void 0,availability:void 0}}),l=await Promise.all(a.map(async d=>{let f=await iso({directoryPath:d.absolutePath,titleSource:t,getDir:r,readFileFn:n}),m=f.find(I=>I.type==="page"&&(I.slug==="index"||I.absolutePath.toLowerCase().endsWith("/index.mdx")||I.absolutePath.toLowerCase().endsWith("/index.md"))),h=m?f.filter(I=>I!==m):f,A=m?.type==="page"?await Tkr({absolutePath:m.absolutePath,readFileFn:n}):void 0;return{section:{type:"section",title:bec({frontmatterTitle:A?.title,useFrontmatterTitles:o,fallbackName:d.name}),slug:Skr({name:d.name}),icon:void 0,contents:h,collapsed:void 0,collapsible:void 0,collapsedByDefault:void 0,hidden:A?.hidden,skipUrlSlug:!1,overviewAbsolutePath:m?.type==="page"?m.absolutePath:void 0,viewers:void 0,orphaned:void 0,featureFlags:void 0,availability:void 0},position:A?.position}})),p=[...u.map((d,f)=>({item:d,title:d.type==="page"?d.title:"",position:c[f]?.position})),...l.map(d=>({item:d.section,title:d.section.type==="section"?d.section.title:"",position:d.position}))];return p.sort((d,f)=>{let m=typeof d.position=="number",h=typeof f.position=="number";if(m&&!h)return-1;if(!m&&h)return 1;if(typeof d.position=="number"&&typeof f.position=="number"){let A=d.position-f.position;return A!==0?A:d.title.localeCompare(f.title,void 0,{sensitivity:"base"})}return d.title.localeCompare(f.title,void 0,{sensitivity:"base"})}),p.map(d=>d.item)}function wkf(e){return!e||e.startsWith("<")?!1:e.startsWith(".")||e.includes("/")||e.includes("\\")||e.includes(":")}function K0(e,t){if(e)return wkf(e)?e0(e,t):e}async function yMe({rawDocsConfiguration:e,absolutePathToFernFolder:t,absoluteFilepathToDocsConfig:r,context:n}){let{instances:i,title:o,tabs:s,products:a,versions:c,navigation:u,navbarLinks:l,footerLinks:p,defaultLanguage:d,metadata:f,redirects:m,logo:h,favicon:A,backgroundImage:y,colors:I,typography:w,layout:C,integrations:x,css:B,js:O,aiChat:F,aiSearch:P,agents:U,pageActions:J,experimental:$}=e,ne=CMt(e.landingPage,r),fe=e.settings?.folderTitleSource,be=Mkf({tabs:s,products:a,versions:c,navigation:u,absolutePathToFernFolder:t,absolutePathToConfig:r,context:n,folderTitleSource:fe}),ce=be.then(b=>YDa({files:_ue({navigation:b,landingPage:ne}),absolutePathToFernFolder:t})),he=xkf(h,r),Le=e0(A,r),Ne=Skf(y,r),oe=w!=null?Lkf({rawTypography:w,absoluteFilepathToDocsConfig:r}):void 0,ae=Tkf(B,r),Se=Pkf(O,r),Ie=aNf(f,r,n),je=jkf({rawPath:e.integrations?.context7,absoluteFilepathToDocsConfig:r,context:n}),qe=oso({rawPath:U?.llmsTxt,absoluteFilepathToDocsConfig:r}),pt=oso({rawPath:U?.llmsFullTxt,absoluteFilepathToDocsConfig:r}),bt=oso({rawPath:U?.robotsTxt,absoluteFilepathToDocsConfig:r}),st=e.translations?.map(b=>oy.DocsYmlSchemas.normalizeTranslationConfig(b)).find(b=>b.default===!0)?.lang??(e.translations?.[0]!=null?oy.DocsYmlSchemas.normalizeTranslationConfig(e.translations[0]).lang:void 0),Ut=ce.then(b=>uNf({translations:e.translations,defaultLocale:st,pages:b,absolutePathToFernFolder:t,context:n})),ir=lNf({translations:e.translations,defaultLocale:st,absolutePathToFernFolder:t,context:n}),[Ae,le,Qe,He,xe,Fe,vt,gt,Je,Zt,Nt,er]=await Promise.all([be,ce,oe,ae,Se,Ie,je,qe,pt,bt,Ut,ir]),Vn=kkf(e.theme),ar=Vn?.tabs!=null&&typeof Vn.tabs=="object"?Vn.tabs:void 0,Ri=ar?.placement??C?.tabsPlacement??"sidebar",g=ar?.alignment??"left";return Ri==="sidebar"&&g==="center"&&n.logger.warn("Tabs alignment 'center' is not supported when tabs placement is 'sidebar'. The alignment will be ignored."),{title:o,instances:i,roles:e.roles,libraries:Zkf(e.libraries),pages:le,translationPages:Nt,translationNavigationOverlays:er,landingPage:ne,navigation:Ae,navbarLinks:Sec(l,r),footerLinks:sNf(p),defaultLanguage:d,languages:e.languages,translations:e.translations,announcement:e.announcement,metadata:Fe,redirects:m?.map(b=>({...b,permanent:b?.permanent})),logo:he,favicon:Le,backgroundImage:Ne,colors:HDa(I,n),typography:Qe,layout:Qkf(C,ar?.alignment,ar?.placement),settings:Nkf(e.settings),context7File:vt,llmsTxtFile:gt,llmsFullTxtFile:Je,robotsTxtFile:Zt,theme:Vn,globalTheme:e.globalTheme,analyticsConfig:{...e.analytics,intercom:e.analytics?.intercom?{...e.analytics.intercom,appId:e.analytics.intercom.appId,apiBase:e.analytics.intercom.apiBase}:void 0,fullstory:e.analytics?.fullstory,posthog:e.analytics?.posthog?{...e.analytics.posthog,apiKey:e.analytics.posthog.apiKey,endpoint:e.analytics.posthog.endpoint}:void 0,segment:e.analytics?.segment,gtm:e.analytics?.gtm,ga4:e.analytics?.ga4,amplitude:void 0,mixpanel:void 0,hotjar:void 0,koala:void 0,logrocket:void 0,pirsch:void 0,plausible:void 0,fathom:void 0,clearbit:void 0,heap:void 0},integrations:x!=null?{intercom:x.intercom??void 0}:void 0,css:He,js:xe,aiChatConfig:P??F,agents:U,pageActions:Dkf(J,r),header:e0(e.header,r),footer:e0(e.footer,r),experimental:$}}function xkf(e,t){return e!=null?{dark:e0(e.dark,t),light:e0(e.light,t),height:e.height,href:e.href!=null?hn.Url(e.href):void 0,rightText:e.rightText}:void 0}function Skf(e,t){if(e!=null)if(typeof e=="string"){let r=e0(e,t);return{dark:r,light:r}}else{let r=e0(e.dark,t),n=e0(e.light,t);return{dark:r,light:n}}}async function Tkf(e,t){if(e==null)return;let r=typeof e=="string"?[e]:e;return{inline:await Promise.all(r.map(async n=>(await(0,dpe.readFile)(e0(n,t))).toString()))}}function Bkf(e){return Object.hasOwn(e,"url")}function Okf(e){return Object.hasOwn(e,"path")}async function Pkf(e,t){let r=[],n=[];if(e==null)return{files:[]};let i=Array.isArray(e)?e:[e];for(let o of i)typeof o=="string"?n.push({absolutePath:e0(o,t)}):Bkf(o)?r.push({strategy:o.strategy,url:hn.Url(o.url)}):Okf(o)&&n.push({absolutePath:e0(o.path,t),strategy:o.strategy});return{remote:r,files:n}}function Dkf(e,t){return e==null?void 0:{default:e.default!=null?Rkf(e.default):void 0,options:{askAi:e.options?.askAi??!0,copyPage:e.options?.copyPage??!0,viewAsMarkdown:e.options?.viewAsMarkdown??!0,openAi:e.options?.chatgpt??!0,claude:e.options?.claude??!0,cursor:e.options?.cursor??!0,claudeCode:e.options?.claudeCode??!0,vscode:e.options?.vscode??!1,custom:(e.options?.custom??[]).map(n=>Fkf(n,t))}}}function Rkf(e){switch(e){case"copy-page":return"copyPage";case"view-as-markdown":return"viewAsMarkdown";case"ask-ai":return"askAi";case"chatgpt":return"openAi";case"claude":return"claude";case"cursor":return"cursor";case"claude-code":return"claudeCode";case"vscode":return"vscode";default:Ce(e)}}function Fkf(e,t){return{title:e.title,subtitle:e.subtitle,url:e.url,icon:K0(e.icon,t),default:e.default}}function kkf(e){if(e==null)return;let t;if(e.tabs!=null&&typeof e.tabs=="object"){let r=e.tabs;t={style:r.style??"default",alignment:r.alignment,placement:r.placement}}else t=e.tabs??"default";return{sidebar:e.sidebar??"default",tabs:t,body:e.body??"default",pageActions:e.pageActions??"default",footerNav:e.footerNav??"default",languageSwitcher:e.languageSwitcher??"default",productSwitcher:e.productSwitcher??"default"}}function Nkf(e){if(e!=null)return{darkModeCode:e.darkModeCode??!1,defaultSearchFilters:e.defaultSearchFilters??!1,language:e.language??"en",disableSearch:e.disableSearch??!1,hide404Page:e.hide404Page??!1,httpSnippets:e.httpSnippets??!0,searchText:e.searchText??void 0,useJavascriptAsTypescript:e.useJavascriptAsTypescript??!1,disableExplorerProxy:e.disableExplorerProxy??!1,disableEnvironmentEditing:e.disableEnvironmentEditing??!1,disableAnalytics:e.disableAnalytics??!1,websocketOneofDisplay:e.websocketOneofDisplay??void 0}}async function oso({rawPath:e,absoluteFilepathToDocsConfig:t}){if(e==null)return;let r=e0(e,t);return await(0,dpe.readFile)(r,"utf8"),r}async function jkf({rawPath:e,absoluteFilepathToDocsConfig:t,context:r}){if(e==null)return;let n=e0(e,t),i=await(0,dpe.readFile)(n,"utf8");try{JSON.parse(i)}catch(o){r.failAndThrow(`Invalid JSON in Context7 config file: ${e}`,o instanceof Error?o.message:String(o),{code:j.Code.ConfigError})}return n}function Qkf(e,t,r){if(e==null&&t==null&&r==null)return;let n=t==="center"?"CENTER":"LEFT",i=r==="header"?"HEADER":r==="sidebar"?"SIDEBAR":void 0;return e==null?{...i!=null?{tabsPlacement:i}:{},tabsAlignment:n}:{pageWidth:e.pageWidth?.trim().toLowerCase()==="full"?{type:"full"}:Bkr(e.pageWidth),contentWidth:Bkr(e.contentWidth),sidebarWidth:Bkr(e.sidebarWidth),headerHeight:Bkr(e.headerHeight),searchbarPlacement:e.searchbarPlacement==="header"?"HEADER":e.searchbarPlacement==="header-tabs"?"HEADER_TABS":"SIDEBAR",switcherPlacement:!e.switcherPlacement||e.switcherPlacement==="header"?"HEADER":"SIDEBAR",tabsPlacement:i??(e.tabsPlacement==="header"?"HEADER":"SIDEBAR"),contentAlignment:e.contentAlignment==="left"?"LEFT":"CENTER",headerPosition:e.headerPosition==="static"?"ABSOLUTE":"FIXED",disableHeader:e.disableHeader??!1,hideNavLinks:e.hideNavLinks??!1,hideFeedback:e.hideFeedback??!1,mobileToc:e.mobileToc??!1,tabsAlignment:n}}function Bkr(e){if(e==null)return;let t=e.trim().toLowerCase(),r=t.match(/^(\d+)px$/);if(r!=null&&r[1]!=null)return{type:"px",value:parseFloat(r[1])};let n=t.match(/^(\d+)rem$/);if(n!=null&&n[1]!=null)return{type:"rem",value:parseFloat(n[1])}}async function vec({versions:e,absolutePathToFernFolder:t,context:r,folderTitleSource:n}){let i=[];for(let o of e){let s=Hi(t,o.path),a=Or.load((await(0,dpe.readFile)(s)).toString()),c=[],u=c3(a,[],c);c.length>0&&r.logger.warn(`Version file ${o.path} contained null/undefined sections that were ignored: ${c.map(d=>d.join(".")).join(", ")}`);let l=oy.RawSchemas.Serializer.VersionFileConfig.parseOrThrow(u),p=await cso({tabs:l.tabs,rawNavigationConfig:l.navigation,absolutePathToFernFolder:t,absolutePathToConfig:s,context:r,folderTitleSource:n});i.push({landingPage:CMt(l.landingPage,s),version:o.displayName,navigation:p,availability:o.availability,slug:o.slug,hidden:o.hidden,viewers:k1(o.viewers),orphaned:o.orphaned,featureFlags:F1(o.featureFlag),announcement:o.announcement})}return{type:"versioned",versions:i}}async function Mkf({tabs:e,products:t,versions:r,navigation:n,absolutePathToFernFolder:i,absolutePathToConfig:o,context:s,folderTitleSource:a}){if(n!=null)return await cso({tabs:e,rawNavigationConfig:n,absolutePathToFernFolder:i,absolutePathToConfig:o,context:s,folderTitleSource:a});if(t!=null){let c=[];for(let u of t){let l=u.image!=null?Hi(i,u.image):void 0;if("path"in u){let p,d=Hi(i,u.path),f=Or.load((await(0,dpe.readFile)(d)).toString()),m=[],h=c3(f,[],m);m.length>0&&s.logger.warn(`Product file ${u.path} contained null/undefined sections that were ignored: ${m.map(y=>y.join(".")).join(", ")}`);let A=oy.RawSchemas.Serializer.ProductFileConfig.parseOrThrow(h);u.versions!=null&&u.versions.length>0?p=await vec({versions:u.versions,absolutePathToFernFolder:i,context:s,folderTitleSource:a}):p=await cso({tabs:A.tabs,rawNavigationConfig:A.navigation,absolutePathToFernFolder:i,absolutePathToConfig:d,context:s,folderTitleSource:a}),c.push({type:"internal",landingPage:CMt(A.landingPage,d),product:u.displayName,navigation:p,slug:u.slug,subtitle:u.subtitle,icon:K0(u.icon,o)||"fa-solid fa-code",image:l,viewers:k1(u.viewers),orphaned:u.orphaned,featureFlags:F1(u.featureFlag),announcement:u.announcement})}else if("href"in u&&u.href!=null)c.push({type:"external",product:u.displayName,href:u.href,target:u.target,subtitle:u.subtitle,icon:K0(u.icon,o)||"fa-solid fa-code",image:l,viewers:k1(u.viewers),orphaned:u.orphaned,featureFlags:F1(u.featureFlag)});else throw new j({message:"Invalid product configuration: product must have either 'path' or valid 'href' property",code:j.Code.ConfigError})}return{type:"productgroup",products:c}}else if(r!=null)return await vec({versions:r,absolutePathToFernFolder:i,context:s,folderTitleSource:a});throw new j({message:"Unexpected. Docs have neither navigation or versions defined.",code:j.Code.ConfigError})}function F1(e){if(e!=null)return typeof e=="string"?[{flag:e,match:!0,fallbackValue:void 0}]:Array.isArray(e)?e.map(t=>({flag:t.flag,match:t.match,fallbackValue:t.fallbackValue})):[{flag:e.flag,match:e.match??!0,fallbackValue:e.fallbackValue}]}async function Lkf({rawTypography:e,absoluteFilepathToDocsConfig:t}){return{headingsFont:e.headingsFont!=null?await sso({rawFontConfig:e.headingsFont,absoluteFilepathToDocsConfig:t}):void 0,bodyFont:e.bodyFont!=null?await sso({rawFontConfig:e.bodyFont,absoluteFilepathToDocsConfig:t}):void 0,codeFont:e.codeFont!=null?await sso({rawFontConfig:e.codeFont,absoluteFilepathToDocsConfig:t}):void 0}}async function sso({rawFontConfig:e,absoluteFilepathToDocsConfig:t}){return{name:e.name,variants:await zkf(e,t),display:e.display,fallback:e.fallback,fontVariationSettings:e.fontVariationSettings}}function zkf(e,t){let r=[];return e.path!=null&&r.push({path:e.path,weight:e.weight,style:e.style}),e.paths?.forEach(n=>{typeof n=="string"?r.push({path:n,weight:e.weight,style:e.style}):r.push({path:n.path,weight:n.weight??e.weight,style:n.style??e.style})}),Promise.all(r.map(async n=>({absolutePath:e0(n.path,t),weight:Ukf(n.weight),style:n.style})))}function Ukf(e){return e==null?void 0:typeof e=="number"?[e.toString()]:e.split(/\D+/).filter(r=>r!==""&&["100","200","300","400","500","600","700","800","900"].includes(r))}async function _kf({tabs:e,item:t,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o}){let s=e[t.tab];if(s==null)throw new j({message:`Tab ${t.tab} is not defined in the tabs config.`,code:j.Code.ConfigError});if(oNf(t)){let a=await Promise.all(t.variants.map(async c=>{let u=await Promise.all(c.layout.map(l=>Dkr({rawConfig:l,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o})));return{title:c.title,subtitle:c.subtitle,icon:K0(c.icon,n),layout:u,slug:c.slug,skipUrlSlug:c.skipSlug,hidden:c.hidden,default:c.default,viewers:k1(c.viewers),orphaned:c.orphaned,featureFlags:F1(c.featureFlag)}}));return{title:s.displayName,icon:K0(s.icon,n),slug:s.slug,skipUrlSlug:s.skipSlug,hidden:s.hidden,child:{type:"variants",variants:a},viewers:k1(s.viewers),orphaned:s.orphaned,featureFlags:F1(s.featureFlag)}}if(iNf(t)){let a=await Promise.all(t.layout.map(c=>Dkr({rawConfig:c,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o})));return{title:s.displayName,icon:K0(s.icon,n),slug:s.slug,skipUrlSlug:s.skipSlug,hidden:s.hidden,child:{type:"layout",layout:a},viewers:k1(s.viewers),orphaned:s.orphaned,featureFlags:F1(s.featureFlag)}}if(s.href!=null)return{title:s.displayName,icon:K0(s.icon,n),slug:s.slug,skipUrlSlug:s.skipSlug,hidden:s.hidden,child:{type:"link",href:s.href,target:s.target},viewers:k1(s.viewers),orphaned:s.orphaned,featureFlags:F1(s.featureFlag)};if(s.changelog!=null)return{title:s.displayName,icon:K0(s.icon,n),slug:s.slug,skipUrlSlug:s.skipSlug,hidden:s.hidden,child:{type:"changelog",changelog:await e1(e0(s.changelog,n),"{md,mdx}")},viewers:k1(s.viewers),orphaned:s.orphaned,featureFlags:F1(s.featureFlag)};Ce(s)}async function cso({tabs:e={},rawNavigationConfig:t,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o}){return nNf(t)?{type:"tabbed",items:await Promise.all(t.map(a=>_kf({tabs:e,item:a,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o})))}:{type:"untabbed",items:await Promise.all(t.map(s=>Dkr({rawConfig:s,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o})))}}var Vkf="Changelog";async function qkf({rawConfig:e,absolutePathToFernFolder:t,absolutePathToConfig:r,context:n,folderTitleSource:i}){let o=e0(e.folder,r);await cr(o)||n.failAndThrow(`Folder not found: ${e.folder}`,void 0,{code:j.Code.ConfigError}),uso({context:n,sectionTitle:e.folder,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0});let s=e.titleSource??i,a=await iso({directoryPath:o,titleSource:s}),c=a.find(m=>m.type==="page"&&(m.slug==="index"||m.absolutePath.toLowerCase().endsWith("/index.mdx")||m.absolutePath.toLowerCase().endsWith("/index.md"))),u=c?a.filter(m=>m!==c):a,l=iW.default.basename(o),p=s==="frontmatter"&&c?.type==="page"?(await Tkr({absolutePath:c.absolutePath})).title:void 0,d=e.title??p??nso({name:l}),f=e.slug??Skr({name:l});return{type:"section",title:d,icon:K0(e.icon,r),contents:u,slug:f,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0,hidden:e.hidden??void 0,skipUrlSlug:e.skipSlug??!1,overviewAbsolutePath:c?.type==="page"?c.absolutePath:void 0,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag),availability:e.availability}}async function Dkr({rawConfig:e,absolutePathToFernFolder:t,absolutePathToConfig:r,context:n,folderTitleSource:i}){if(wec(e))return CMt(e,r);if(Wkf(e))return uso({context:n,sectionTitle:e.section,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0}),{type:"section",title:e.section,icon:K0(e.icon,r),contents:await Promise.all(e.contents.map(o=>Dkr({rawConfig:o,absolutePathToFernFolder:t,absolutePathToConfig:r,context:n,folderTitleSource:i}))),slug:e.slug??void 0,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0,hidden:e.hidden??void 0,skipUrlSlug:e.skipSlug??!1,overviewAbsolutePath:e0(e.path,r),viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag),availability:e.availability};if(Hkf(e))return{type:"apiSection",openrpc:e.openrpc,title:e.api,icon:K0(e.icon,r),apiName:e.apiName??void 0,audiences:e.audiences!=null?{type:"select",audiences:wMt(e.audiences)??[]}:{type:"all"},availability:e.availability,showErrors:e.displayErrors??!0,tagDescriptionPages:e.tagDescriptionPages??!1,snippetsConfiguration:e.snippets!=null?Gkf({rawConfig:e.snippets}):void 0,postman:e.postman,navigation:e.layout?.flatMap(o=>Pkr(o,r,n))??[],overviewAbsolutePath:e0(e.summary,r),collapsed:e.collapsed??void 0,hidden:e.hidden??void 0,slug:e.slug,skipUrlSlug:e.skipSlug??!1,flattened:e.flattened??!1,alphabetized:e.alphabetized??!1,paginated:e.paginated??!1,playground:e.playground,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)};if(xec(e))return{type:"link",text:e.link,url:e.href,icon:K0(e.icon,r),target:e.target};if(Kkf(e))return{type:"changelog",changelog:await e1(e0(e.changelog,r),"{md,mdx}"),hidden:e.hidden??!1,icon:K0(e.icon,r),title:e.title??Vkf,slug:e.slug,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)};if(Jkf(e))return await qkf({rawConfig:e,absolutePathToFernFolder:t,absolutePathToConfig:r,context:n,folderTitleSource:i});if(Ykf(e))return{type:"librarySection",libraryName:e.library,title:e.title??void 0,slug:e.slug??void 0,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)};Ce(e)}function CMt(e,t){if(e!=null)return{type:"page",title:e.page,absolutePath:e0(e.path,t),slug:e.slug,icon:K0(e.icon,t),hidden:e.hidden,noindex:e.noindex,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag),availability:e.availability}}function Pkr(e,t,r){return typeof e=="string"?[{type:"item",value:e}]:wec(e)?[CMt(e,t)]:xec(e)?[{type:"link",text:e.link,url:e.href,icon:K0(e.icon,t),target:e.target}]:$kf(e)?(r!=null&&uso({context:r,sectionTitle:e.section,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0}),[{type:"section",title:e.section,referencedSubpackages:e.referencedPackages??[],overviewAbsolutePath:e0(e.summary,t),contents:e.contents?.flatMap(n=>Pkr(n,t,r))??[],slug:e.slug,hidden:e.hidden,skipUrlSlug:e.skipSlug,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0,availability:e.availability,icon:K0(e.icon,t),playground:e.playground,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)}]):eNf(e)?[{type:"endpoint",endpoint:e.endpoint,title:e.title,icon:K0(e.icon,t),slug:e.slug,hidden:e.hidden,availability:e.availability,playground:e.playground,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)}]:tNf(e)?[{type:"operation",operation:e.operation,title:e.title,slug:e.slug,hidden:e.hidden,availability:e.availability,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)}]:Object.entries(e).map(([n,i])=>rNf(i)?{type:"package",title:i.title,package:n,overviewAbsolutePath:e0(i.summary,t),contents:i.contents?.flatMap(o=>Pkr(o,t,r))??[],slug:i.slug,hidden:i.hidden,skipUrlSlug:i.skipSlug,icon:K0(i.icon,t),playground:i.playground,availability:i.availability,viewers:k1(i.viewers),orphaned:i.orphaned,featureFlags:F1(i.featureFlag)}:{type:"package",title:void 0,package:n,overviewAbsolutePath:void 0,contents:i.flatMap(o=>Pkr(o,t,r)),hidden:!1,slug:void 0,skipUrlSlug:!1,icon:void 0,playground:void 0,availability:void 0,viewers:void 0,orphaned:void 0,featureFlags:void 0})}function Gkf({rawConfig:e}){return{python:e.python,typescript:e.typescript,go:e.go,java:e.java,ruby:e.ruby,csharp:e.csharp,php:e.php,swift:e.swift}}function wec(e){return Qo(e)&&typeof e.page=="string"&&typeof e.path=="string"}function Wkf(e){return e.section!=null}function Hkf(e){return e.api!=null}function xec(e){return oy.RawSchemas,Qo(e)&&typeof e.link=="string"&&typeof e.href=="string"}function Kkf(e){return Qo(e)&&typeof e.changelog=="string"}function Jkf(e){return Qo(e)&&typeof e.folder=="string"}function Ykf(e){return Qo(e)&&typeof e.library=="string"}function Xkf(e){return"git"in e}function Zkf(e){if(e==null)return;let t={};for(let[r,n]of Object.entries(e)){if(!Xkf(n.input))throw new j({message:`Library '${r}' uses 'path' input which is not yet supported. Please use 'git' input.`,code:j.Code.ConfigError});t[r]={input:{git:n.input.git,subpath:n.input.subpath},output:{path:n.output.path},lang:n.lang}}return t}function $kf(e){return Qo(e)&&typeof e.section=="string"&&Array.isArray(e.contents)}function eNf(e){return Qo(e)&&typeof e.endpoint=="string"}function tNf(e){return Qo(e)&&typeof e.operation=="string"}function rNf(e){return!Array.isArray(e)}function e0(e,t){if(e!=null)return Hi(Fn(t),e)}function nNf(e){return Array.isArray(e)&&e.length>0&&e[0].tab!=null}function iNf(e){return"layout"in e&&Array.isArray(e.layout)}function oNf(e){return"variants"in e&&Array.isArray(e.variants)}function Sec(e,t){return e?.map(r=>{if(r.type==="github"){let i=r.value;return typeof i=="string"?{type:"github",url:hn.Url(i),viewers:void 0,target:void 0}:{type:"github",url:hn.Url(i.url),viewers:aso(i.viewers),target:i.target}}let n=aso(r.viewers);return r.type==="dropdown"?{type:"dropdown",text:r.text,icon:K0(r.icon,t),rightIcon:K0(r.rightIcon,t),rounded:r.rounded,viewers:n,links:r.links?.map(i=>({href:i.href,target:i.target,url:hn.Url(i.url??i.href??"/"),text:i.text,icon:K0(i.icon,t),rightIcon:K0(i.rightIcon,t),rounded:i.rounded,viewers:aso(i.viewers)}))??[]}:{type:r.type,text:r.text,url:hn.Url(r.href??r.url??"/"),target:r.target,icon:K0(r.icon,t),rightIcon:K0(r.rightIcon,t),rounded:r.rounded,viewers:n}})}function aso(e){if(e!=null)return Array.isArray(e)?e.map(t=>hn.docs.v1.commons.RoleId(t)):[hn.docs.v1.commons.RoleId(e)]}function sNf(e){if(e==null)return;let t=[];if(Object.keys(e).forEach(r=>{let n=e[r];n!=null&&t.push({type:r,value:hn.Url(n)})}),t.length!==0)return t}async function aNf(e,t,r){if(e!=null)return cNf(e,r),{"og:site_name":e.ogSiteName,"og:title":e.ogTitle,"og:description":e.ogDescription,"og:url":e.ogUrl,"og:image":await Okr(e.ogImage,t),"og:image:width":e.ogImageWidth,"og:image:height":e.ogImageHeight,"og:locale":e.ogLocale,"og:logo":await Okr(e.ogLogo,t),"twitter:title":e.twitterTitle,"twitter:description":e.twitterDescription,"twitter:image":await Okr(e.twitterImage,t),"twitter:handle":e.twitterHandle,"twitter:site":e.twitterSite,"twitter:url":e.twitterUrl,"twitter:card":e.twitterCard,"og:dynamic":e.ogDynamic,"og:dynamic:background-image":await Okr(e.ogDynamicBackgroundImage,t),"og:dynamic:text-color":e.ogDynamicTextColor,"og:dynamic:background-color":e.ogDynamicBackgroundColor,"og:dynamic:logo-color":e.ogDynamicLogoColor,"og:dynamic:show-logo":e.ogDynamicShowLogo,"og:dynamic:show-section":e.ogDynamicShowSection,"og:dynamic:show-description":e.ogDynamicShowDescription,"og:dynamic:show-url":e.ogDynamicShowUrl,"og:dynamic:show-gradient":e.ogDynamicShowGradient,nofollow:void 0,noindex:void 0,canonicalHost:e.canonicalHost}}function cNf(e,t){let r=e.ogDynamic===!0,n=[["og:dynamic:background-image",e.ogDynamicBackgroundImage],["og:dynamic:text-color",e.ogDynamicTextColor],["og:dynamic:background-color",e.ogDynamicBackgroundColor],["og:dynamic:logo-color",e.ogDynamicLogoColor],["og:dynamic:show-logo",e.ogDynamicShowLogo],["og:dynamic:show-section",e.ogDynamicShowSection],["og:dynamic:show-description",e.ogDynamicShowDescription],["og:dynamic:show-url",e.ogDynamicShowUrl],["og:dynamic:show-gradient",e.ogDynamicShowGradient]];if(r&&e.ogImage!=null&&t.logger.warn("[metadata] `og:image` is only applied to the homepage when `og:dynamic: true`. All other pages show the dynamically generated image. Remove `og:image` to rely entirely on dynamic generation, or set `og:dynamic: false` to use `og:image` site-wide."),r&&e.twitterImage!=null&&t.logger.warn("[metadata] `twitter:image` is only applied to the homepage when `og:dynamic: true`. All other pages show the dynamically generated image."),!r){let i=n.filter(([,o])=>o!=null).map(([o])=>o);i.length>0&&t.logger.warn(`[metadata] The following settings require \`og:dynamic: true\` and will be ignored: ${i.map(o=>`\`${o}\``).join(", ")}.`)}r&&e.ogDynamicShowLogo===!1&&e.ogDynamicLogoColor!=null&&t.logger.warn("[metadata] `og:dynamic:logo-color` has no effect because `og:dynamic:show-logo: false`. Remove one or the other."),e.ogImage==null&&(e.ogImageWidth!=null||e.ogImageHeight!=null)&&t.logger.warn("[metadata] `og:image:width` / `og:image:height` have no effect without `og:image`."),r&&typeof e.ogDynamicTextColor=="string"&&typeof e.ogDynamicBackgroundColor=="string"&&e.ogDynamicTextColor.trim().toLowerCase()===e.ogDynamicBackgroundColor.trim().toLowerCase()&&t.logger.warn(`[metadata] \`og:dynamic:text-color\` and \`og:dynamic:background-color\` are both set to \`${e.ogDynamicTextColor}\`, which will make text invisible in generated OG images.`)}async function Okr(e,t){if(e==null)return;if(e.startsWith("http"))return{type:"url",value:e};let r=e0(e,t);return await cr(r)?{type:"filepath",value:r}:{type:"url",value:e}}function k1(e){if(e!=null){if(typeof e=="string")return[hn.docs.v1.commons.RoleId(e)];if(e.length!==0)return e.map(hn.docs.v1.commons.RoleId)}}function wMt(e){if(e!=null){if(typeof e=="string")return[e];if(e.length!==0)return e}}function uso({context:e,sectionTitle:t,collapsed:r,collapsible:n,collapsedByDefault:i}){n!=null&&r!=null&&e.failAndThrow(`Section "${t}": cannot use both "collapsible" and the deprecated "collapsed" property. Please use "collapsible" and "collapsed-by-default" instead.`,void 0,{code:j.Code.ConfigError}),i!=null&&n!==!0&&e.failAndThrow(`Section "${t}": "collapsed-by-default" requires "collapsible: true". "collapsed-by-default" has no effect on a non-collapsible section.`,void 0,{code:j.Code.ConfigError})}async function uNf({translations:e,defaultLocale:t,pages:r,absolutePathToFernFolder:n,context:i}){if(e==null||e.length===0)return;let o=iW.default.join(n,"translations"),s={},a=e.map(c=>oy.DocsYmlSchemas.normalizeTranslationConfig(c));return await Promise.all(a.map(async({lang:c})=>{if(c===t)return;let u=iW.default.join(o,c);if(!await cr(u)){i.failAndThrow(`Translation directory for locale "${c}" not found.
3030
+ `);return r.failAndThrow(s,void 0,{code:j.Code.ConfigError})}function o7p(e){return e.reduce((t,r)=>typeof r=="number"?t+"["+r+"]":t+(t===""?"":".")+r,"")}or();_t();var kDa=we(require("path"),1),s7p={dependencies:{}};async function NDa({absolutePathToWorkspace:e,rawDependenciesConfiguration:t,context:r}){if(t==null)return s7p;let n={};for(let[i,o]of Object.entries(t.dependencies))if(c7p(o)){let s=Yt.of(kDa.default.join(e,o));await cr(s)?n[i]={type:"local",absoluteFilepath:s,path:o}:r.failWithoutThrowing(`Path to ${i} dependency does not exist: ${s}`,void 0,{code:j.Code.ConfigError})}else{let a=i.substring(1).split("/"),c=a[0],u=a[1];c!=null&&u!=null?n[i]={type:"version",organization:c,apiName:u,version:o}:r.failWithoutThrowing(`Failed to parse dependency: ${i}`,void 0,{code:j.Code.ConfigError})}return r.getResult()===zf.Failure&&r.failAndThrow(void 0,void 0,{code:j.Code.ConfigError}),{dependencies:n}}var a7p=/^\.\.\/.*$/;function c7p(e){return a7p.test(e)}or();var QDa=require("fs/promises");ks();ss();var jDa=Bt.object({dependencies:Bt.record(Bt.string(),Bt.string())});async function MDa({absolutePathToWorkspace:e,context:t}){let r=nt(e,ke.of(rfa));if(!await cr(r))return;let n=await(0,QDa.readFile)(r),i=Or.load(n.toString());return await UBr({schema:jDa,value:i,context:t,filepathBeingParsed:r})}async function i7i({absolutePathToWorkspace:e,context:t}){let r=await MDa({absolutePathToWorkspace:e,context:t});return NDa({absolutePathToWorkspace:e,rawDependenciesConfiguration:r,context:t})}jt();_t();qBr();function HDa(e={accentPrimary:void 0,background:void 0},t){e.accentPrimary=e.accentPrimary??e.accentPrimaryDeprecated;let r=WBr(e);switch(r){case"dark":return{type:"dark",...GBr(e,t,"dark")};case"light":return{type:"light",...GBr(e,t,"light")};case"darkAndLight":return{type:"darkAndLight",dark:GBr(e,t,"dark"),light:GBr(e,t,"light")};default:Ce(r)}}function WBr({background:e,accentPrimary:t,accentPrimaryDeprecated:r}){if(t=t??r,typeof e=="string"&&typeof t=="string")return ms(e).isDark()?"dark":"light";if(e!=null){if(typeof e=="string")return ms(e).isDark()?"dark":"light";if(e.dark!=null&&e.light!=null)return"darkAndLight"}if(t!=null){if(typeof t=="string")return ms(t).isLight()?"dark":"light";if(t.dark!=null&&t.light!=null)return"darkAndLight"}if(t!=null&&e!=null){if(e.dark!=null&&t.dark!=null)return"dark";if(e.light!=null&&t.light!=null)return"light"}return"darkAndLight"}function GBr(e,t,r){let n=x1(e.accentPrimary??e.accentPrimaryDeprecated,t,"accent-primary",r)??ms.random(),i=x1(e.background,t,"background",r);return{accentPrimary:n.toRgb(),background:i?.toRgb(),border:x1(e.border,t,"border",r)?.toRgb(),sidebarBackground:x1(e.sidebarBackground,t,"sidebar-background",r)?.toRgb(),headerBackground:x1(e.headerBackground,t,"header-background",r)?.toRgb(),cardBackground:x1(e.cardBackground,t,"card-background",r)?.toRgb(),accent1:x1(e.accent1,t,"accent-1",r)?.toRgb(),accent2:x1(e.accent2,t,"accent-2",r)?.toRgb(),accent3:x1(e.accent3,t,"accent-3",r)?.toRgb(),accent4:x1(e.accent4,t,"accent-4",r)?.toRgb(),accent5:x1(e.accent5,t,"accent-5",r)?.toRgb(),accent6:x1(e.accent6,t,"accent-6",r)?.toRgb(),accent7:x1(e.accent7,t,"accent-7",r)?.toRgb(),accent8:x1(e.accent8,t,"accent-8",r)?.toRgb(),accent9:x1(e.accent9,t,"accent-9",r)?.toRgb(),accent10:x1(e.accent10,t,"accent-10",r)?.toRgb(),accent11:x1(e.accent11,t,"accent-11",r)?.toRgb(),accent12:x1(e.accent12,t,"accent-12",r)?.toRgb(),logo:void 0,backgroundImage:void 0}}function Mkt(e,t,r){if(e==null)return;let n=typeof e=="string"?e:e[r];if(n==null&&t==="accent-primary"&&typeof e!="string"&&(n=e[r==="dark"?"light":"dark"]),n!=null)return n}function x1(e,t,r,n){let i=Mkt(e,r,n);if(i==null)return;let o=ms(i);return o.isValid()||t.failAndThrow(`'${typeof e=="string"?r:`colors.${r}.${n}`}' should be a hex color of the format #FFFFFF`,void 0,{code:j.Code.ConfigError}),o}jt();or();var JDa=require("fs/promises");ao();var KDa=100;async function F7p({files:e,absolutePathToFernFolder:t}){let r=await Promise.all(e.map(async n=>{let i=await(0,JDa.readFile)(n,"utf-8");return[ME(t,n),i]}));return Object.fromEntries(r)}async function YDa({files:e,absolutePathToFernFolder:t}){let r={};for(let n=0;n<e.length;n+=KDa){let i=e.slice(n,n+KDa),o=await F7p({files:i,absolutePathToFernFolder:t});Object.assign(r,o)}return r}function _ue({landingPage:e,navigation:t}){return pU([e?.absolutePath,...k7p(t)])}function k7p(e){switch(e.type){case"tabbed":return e.items.flatMap(t=>t.child.type==="layout"?t.child.layout.flatMap(r=>HBr({item:r})):t.child.type==="variants"?t.child.variants.flatMap(r=>r.layout.flatMap(n=>HBr({item:n}))):t.child.type==="changelog"?t.child.changelog:[]);case"untabbed":return e.items.flatMap(t=>HBr({item:t}));case"versioned":return e.versions.flatMap(t=>_ue({landingPage:t.landingPage,navigation:t.navigation}));case"productgroup":return e.products.flatMap(t=>t.type==="external"?[]:_ue({landingPage:t.landingPage,navigation:t.navigation}));default:Ce(e)}}function HBr({item:e}){switch(e.type){case"apiSection":return pU([e.overviewAbsolutePath,...e.navigation.flatMap(t=>XDa({item:t}))]);case"link":return[];case"page":return[e.absolutePath];case"section":return pU([e.overviewAbsolutePath,...e.contents.flatMap(t=>HBr({item:t}))]);case"changelog":return e.changelog;case"librarySection":return[];default:Ce(e)}}function XDa({item:e}){return e.type==="page"?[e.absolutePath]:e.type==="package"||e.type==="section"?pU([e.overviewAbsolutePath,...e.contents.flatMap(t=>XDa({item:t}))]):[]}jt();lg();or();_t();var dpe=require("fs/promises");ks();var iW=we(require("path"),1);or();var rso=require("fs/promises"),Eec=we(N_(),1);function Skr({name:e}){return e.replace(/\.(md|mdx)$/i,"").toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"")}function nso({name:e}){return e.replace(/\.(md|mdx)$/i,"").replace(/[-_]/g," ").replace(/\b\w/g,t=>t.toUpperCase())}async function Tkr({absolutePath:e,readFileFn:t=(r,n)=>(0,rso.readFile)(r,n)}){try{let r=await t(e,"utf-8"),{data:n}=(0,Eec.default)(r),i;if(n.position!=null){let c=typeof n.position=="string"?parseFloat(n.position):n.position;typeof c=="number"&&Number.isFinite(c)&&(i=c)}let o=typeof n.title=="string"&&n.title.trim().length>0?n.title.trim():void 0,s=n.hidden===!0?!0:void 0,a=n.noindex===!0?!0:void 0;return{position:i,title:o,hidden:s,noindex:a}}catch{return{position:void 0,title:void 0,hidden:void 0,noindex:void 0}}}function bec({frontmatterTitle:e,useFrontmatterTitles:t,fallbackName:r}){return t&&e!=null?e:nso({name:r})}async function iso({directoryPath:e,titleSource:t,getDir:r=k0,readFileFn:n=(i,o)=>(0,rso.readFile)(i,o)}){let i=await r(e),o=t==="frontmatter",s=i.filter(d=>d.type==="file"&&!d.name.startsWith("_")&&(d.name.toLowerCase().endsWith(".md")||d.name.toLowerCase().endsWith(".mdx"))),a=i.filter(d=>d.type==="directory"&&!d.name.startsWith("_")),c=await Promise.all(s.map(d=>Tkr({absolutePath:d.absolutePath,readFileFn:n}))),u=s.map((d,f)=>{let m=c[f];return{type:"page",title:bec({frontmatterTitle:m?.title,useFrontmatterTitles:o,fallbackName:d.name}),absolutePath:d.absolutePath,slug:Skr({name:d.name}),icon:void 0,hidden:m?.hidden,noindex:m?.noindex,viewers:void 0,orphaned:void 0,featureFlags:void 0,availability:void 0}}),l=await Promise.all(a.map(async d=>{let f=await iso({directoryPath:d.absolutePath,titleSource:t,getDir:r,readFileFn:n}),m=f.find(I=>I.type==="page"&&(I.slug==="index"||I.absolutePath.toLowerCase().endsWith("/index.mdx")||I.absolutePath.toLowerCase().endsWith("/index.md"))),h=m?f.filter(I=>I!==m):f,A=m?.type==="page"?await Tkr({absolutePath:m.absolutePath,readFileFn:n}):void 0;return{section:{type:"section",title:bec({frontmatterTitle:A?.title,useFrontmatterTitles:o,fallbackName:d.name}),slug:Skr({name:d.name}),icon:void 0,contents:h,collapsed:void 0,collapsible:void 0,collapsedByDefault:void 0,hidden:A?.hidden,skipUrlSlug:!1,overviewAbsolutePath:m?.type==="page"?m.absolutePath:void 0,viewers:void 0,orphaned:void 0,featureFlags:void 0,availability:void 0},position:A?.position}})),p=[...u.map((d,f)=>({item:d,title:d.type==="page"?d.title:"",position:c[f]?.position})),...l.map(d=>({item:d.section,title:d.section.type==="section"?d.section.title:"",position:d.position}))];return p.sort((d,f)=>{let m=typeof d.position=="number",h=typeof f.position=="number";if(m&&!h)return-1;if(!m&&h)return 1;if(typeof d.position=="number"&&typeof f.position=="number"){let A=d.position-f.position;return A!==0?A:d.title.localeCompare(f.title,void 0,{sensitivity:"base"})}return d.title.localeCompare(f.title,void 0,{sensitivity:"base"})}),p.map(d=>d.item)}function wkf(e){return!e||e.startsWith("<")?!1:e.startsWith(".")||e.includes("/")||e.includes("\\")||e.includes(":")}function K0(e,t){if(e)return wkf(e)?e0(e,t):e}async function yMe({rawDocsConfiguration:e,absolutePathToFernFolder:t,absoluteFilepathToDocsConfig:r,context:n}){let{instances:i,title:o,tabs:s,products:a,versions:c,navigation:u,navbarLinks:l,footerLinks:p,defaultLanguage:d,metadata:f,redirects:m,logo:h,favicon:A,backgroundImage:y,colors:I,typography:w,layout:C,integrations:x,css:B,js:O,aiChat:F,aiSearch:P,agents:U,pageActions:J,experimental:$}=e,ne=CMt(e.landingPage,r),fe=e.settings?.folderTitleSource,be=Mkf({tabs:s,products:a,versions:c,navigation:u,absolutePathToFernFolder:t,absolutePathToConfig:r,context:n,folderTitleSource:fe}),ce=be.then(b=>YDa({files:_ue({navigation:b,landingPage:ne}),absolutePathToFernFolder:t})),he=xkf(h,r),Le=e0(A,r),Ne=Skf(y,r),oe=w!=null?Lkf({rawTypography:w,absoluteFilepathToDocsConfig:r}):void 0,ae=Tkf(B,r),Se=Pkf(O,r),Ie=aNf(f,r,n),je=jkf({rawPath:e.integrations?.context7,absoluteFilepathToDocsConfig:r,context:n}),qe=oso({rawPath:U?.llmsTxt,absoluteFilepathToDocsConfig:r}),pt=oso({rawPath:U?.llmsFullTxt,absoluteFilepathToDocsConfig:r}),bt=oso({rawPath:U?.robotsTxt,absoluteFilepathToDocsConfig:r}),st=e.translations?.map(b=>oy.DocsYmlSchemas.normalizeTranslationConfig(b)).find(b=>b.default===!0)?.lang??(e.translations?.[0]!=null?oy.DocsYmlSchemas.normalizeTranslationConfig(e.translations[0]).lang:void 0),Ut=ce.then(b=>uNf({translations:e.translations,defaultLocale:st,pages:b,absolutePathToFernFolder:t,context:n})),ir=lNf({translations:e.translations,defaultLocale:st,absolutePathToFernFolder:t,context:n}),[Ae,le,Qe,He,xe,Fe,vt,gt,Je,Zt,Nt,er]=await Promise.all([be,ce,oe,ae,Se,Ie,je,qe,pt,bt,Ut,ir]),Vn=kkf(e.theme),ar=Vn?.tabs!=null&&typeof Vn.tabs=="object"?Vn.tabs:void 0,Ri=ar?.placement??C?.tabsPlacement??"sidebar",g=ar?.alignment??"left";return Ri==="sidebar"&&g==="center"&&n.logger.warn("Tabs alignment 'center' is not supported when tabs placement is 'sidebar'. The alignment will be ignored."),{title:o,instances:i,roles:e.roles,libraries:Zkf(e.libraries),pages:le,translationPages:Nt,translationNavigationOverlays:er,landingPage:ne,navigation:Ae,navbarLinks:Sec(l,r),footerLinks:sNf(p),defaultLanguage:d,languages:e.languages,translations:e.translations,announcement:e.announcement,metadata:Fe,redirects:m?.map(b=>({...b,permanent:b?.permanent})),logo:he,favicon:Le,backgroundImage:Ne,colors:HDa(I,n),typography:Qe,layout:Qkf(C,ar?.alignment,ar?.placement),settings:Nkf(e.settings),context7File:vt,llmsTxtFile:gt,llmsFullTxtFile:Je,robotsTxtFile:Zt,theme:Vn,globalTheme:e.globalTheme,analyticsConfig:{...e.analytics,intercom:e.analytics?.intercom?{...e.analytics.intercom,appId:e.analytics.intercom.appId,apiBase:e.analytics.intercom.apiBase}:void 0,fullstory:e.analytics?.fullstory,posthog:e.analytics?.posthog?{...e.analytics.posthog,apiKey:e.analytics.posthog.apiKey,endpoint:e.analytics.posthog.endpoint}:void 0,segment:e.analytics?.segment,gtm:e.analytics?.gtm,ga4:e.analytics?.ga4,amplitude:void 0,mixpanel:void 0,hotjar:void 0,koala:void 0,logrocket:void 0,pirsch:void 0,plausible:void 0,fathom:void 0,clearbit:void 0,heap:void 0},integrations:x!=null?{intercom:x.intercom??void 0}:void 0,css:He,js:xe,aiChatConfig:P??F,agents:U,pageActions:Dkf(J,r),header:e0(e.header,r),footer:e0(e.footer,r),experimental:$}}function xkf(e,t){return e!=null?{dark:e0(e.dark,t),light:e0(e.light,t),height:e.height,href:e.href!=null?hn.Url(e.href):void 0,rightText:e.rightText}:void 0}function Skf(e,t){if(e!=null)if(typeof e=="string"){let r=e0(e,t);return{dark:r,light:r}}else{let r=e0(e.dark,t),n=e0(e.light,t);return{dark:r,light:n}}}async function Tkf(e,t){if(e==null)return;let r=typeof e=="string"?[e]:e;return{inline:await Promise.all(r.map(async n=>(await(0,dpe.readFile)(e0(n,t))).toString()))}}function Bkf(e){return Object.hasOwn(e,"url")}function Okf(e){return Object.hasOwn(e,"path")}async function Pkf(e,t){let r=[],n=[];if(e==null)return{files:[]};let i=Array.isArray(e)?e:[e];for(let o of i)typeof o=="string"?n.push({absolutePath:e0(o,t)}):Bkf(o)?r.push({strategy:o.strategy,url:hn.Url(o.url)}):Okf(o)&&n.push({absolutePath:e0(o.path,t),strategy:o.strategy});return{remote:r,files:n}}function Dkf(e,t){return e==null?void 0:{default:e.default!=null?Rkf(e.default):void 0,options:{askAi:e.options?.askAi??!0,copyPage:e.options?.copyPage??!0,viewAsMarkdown:e.options?.viewAsMarkdown??!0,openAi:e.options?.chatgpt??!0,claude:e.options?.claude??!0,cursor:e.options?.cursor??!0,claudeCode:e.options?.claudeCode??!0,vscode:e.options?.vscode??!1,custom:(e.options?.custom??[]).map(n=>Fkf(n,t))}}}function Rkf(e){switch(e){case"copy-page":return"copyPage";case"view-as-markdown":return"viewAsMarkdown";case"ask-ai":return"askAi";case"chatgpt":return"openAi";case"claude":return"claude";case"cursor":return"cursor";case"claude-code":return"claudeCode";case"vscode":return"vscode";default:Ce(e)}}function Fkf(e,t){return{title:e.title,subtitle:e.subtitle,url:e.url,icon:K0(e.icon,t),default:e.default}}function kkf(e){if(e==null)return;let t;if(e.tabs!=null&&typeof e.tabs=="object"){let r=e.tabs;t={style:r.style??"default",alignment:r.alignment,placement:r.placement}}else t=e.tabs??"default";return{sidebar:e.sidebar??"default",tabs:t,body:e.body??"default",pageActions:e.pageActions??"default",footerNav:e.footerNav??"default",languageSwitcher:e.languageSwitcher??"default",productSwitcher:e.productSwitcher??"default"}}function Nkf(e){if(e!=null)return{darkModeCode:e.darkModeCode??!1,defaultSearchFilters:e.defaultSearchFilters??!1,language:e.language??"en",disableSearch:e.disableSearch??!1,hide404Page:e.hide404Page??!1,httpSnippets:e.httpSnippets??!0,searchText:e.searchText??void 0,useJavascriptAsTypescript:e.useJavascriptAsTypescript??!1,disableExplorerProxy:e.disableExplorerProxy??!1,disableEnvironmentEditing:e.disableEnvironmentEditing??!1,disableAnalytics:e.disableAnalytics??!1,websocketOneofDisplay:e.websocketOneofDisplay??void 0}}async function oso({rawPath:e,absoluteFilepathToDocsConfig:t}){if(e==null)return;let r=e0(e,t);return await(0,dpe.readFile)(r,"utf8"),r}async function jkf({rawPath:e,absoluteFilepathToDocsConfig:t,context:r}){if(e==null)return;let n=e0(e,t),i=await(0,dpe.readFile)(n,"utf8");try{JSON.parse(i)}catch(o){r.failAndThrow(`Invalid JSON in Context7 config file: ${e}`,o instanceof Error?o.message:String(o),{code:j.Code.ConfigError})}return n}function Qkf(e,t,r){if(e==null&&t==null&&r==null)return;let n=t==="center"?"CENTER":"LEFT",i=r==="header"?"HEADER":r==="sidebar"?"SIDEBAR":void 0;return e==null?{...i!=null?{tabsPlacement:i}:{},tabsAlignment:n}:{pageWidth:e.pageWidth?.trim().toLowerCase()==="full"?{type:"full"}:Bkr(e.pageWidth),contentWidth:Bkr(e.contentWidth),sidebarWidth:Bkr(e.sidebarWidth),headerHeight:Bkr(e.headerHeight),searchbarPlacement:e.searchbarPlacement==="header"?"HEADER":e.searchbarPlacement==="header-tabs"?"HEADER_TABS":"SIDEBAR",switcherPlacement:!e.switcherPlacement||e.switcherPlacement==="header"?"HEADER":"SIDEBAR",tabsPlacement:i??(e.tabsPlacement==="header"?"HEADER":"SIDEBAR"),contentAlignment:e.contentAlignment==="left"?"LEFT":"CENTER",headerPosition:e.headerPosition==="static"?"ABSOLUTE":"FIXED",disableHeader:e.disableHeader??!1,hideNavLinks:e.hideNavLinks??!1,hideFeedback:e.hideFeedback??!1,mobileToc:e.mobileToc??!1,tabsAlignment:n}}function Bkr(e){if(e==null)return;let t=e.trim().toLowerCase(),r=t.match(/^(\d+)px$/);if(r!=null&&r[1]!=null)return{type:"px",value:parseFloat(r[1])};let n=t.match(/^(\d+)rem$/);if(n!=null&&n[1]!=null)return{type:"rem",value:parseFloat(n[1])}}async function vec({versions:e,absolutePathToFernFolder:t,context:r,folderTitleSource:n}){let i=[];for(let o of e){let s=Hi(t,o.path),a;try{a=Or.load((await(0,dpe.readFile)(s)).toString())}catch(d){throw d instanceof Or.YAMLException?new j({message:`Failed to parse version file ${o.path}: ${d.message}`,code:j.Code.ParseError}):d}let c=[],u=c3(a,[],c);c.length>0&&r.logger.warn(`Version file ${o.path} contained null/undefined sections that were ignored: ${c.map(d=>d.join(".")).join(", ")}`);let l=oy.RawSchemas.Serializer.VersionFileConfig.parseOrThrow(u),p=await cso({tabs:l.tabs,rawNavigationConfig:l.navigation,absolutePathToFernFolder:t,absolutePathToConfig:s,context:r,folderTitleSource:n});i.push({landingPage:CMt(l.landingPage,s),version:o.displayName,navigation:p,availability:o.availability,slug:o.slug,hidden:o.hidden,viewers:k1(o.viewers),orphaned:o.orphaned,featureFlags:F1(o.featureFlag),announcement:o.announcement})}return{type:"versioned",versions:i}}async function Mkf({tabs:e,products:t,versions:r,navigation:n,absolutePathToFernFolder:i,absolutePathToConfig:o,context:s,folderTitleSource:a}){if(n!=null)return await cso({tabs:e,rawNavigationConfig:n,absolutePathToFernFolder:i,absolutePathToConfig:o,context:s,folderTitleSource:a});if(t!=null){let c=[];for(let u of t){let l=u.image!=null?Hi(i,u.image):void 0;if("path"in u){let p,d=Hi(i,u.path),f;try{f=Or.load((await(0,dpe.readFile)(d)).toString())}catch(y){throw y instanceof Or.YAMLException?new j({message:`Failed to parse product file ${u.path}: ${y.message}`,code:j.Code.ParseError}):y}let m=[],h=c3(f,[],m);m.length>0&&s.logger.warn(`Product file ${u.path} contained null/undefined sections that were ignored: ${m.map(y=>y.join(".")).join(", ")}`);let A=oy.RawSchemas.Serializer.ProductFileConfig.parseOrThrow(h);u.versions!=null&&u.versions.length>0?p=await vec({versions:u.versions,absolutePathToFernFolder:i,context:s,folderTitleSource:a}):p=await cso({tabs:A.tabs,rawNavigationConfig:A.navigation,absolutePathToFernFolder:i,absolutePathToConfig:d,context:s,folderTitleSource:a}),c.push({type:"internal",landingPage:CMt(A.landingPage,d),product:u.displayName,navigation:p,slug:u.slug,subtitle:u.subtitle,icon:K0(u.icon,o)||"fa-solid fa-code",image:l,viewers:k1(u.viewers),orphaned:u.orphaned,featureFlags:F1(u.featureFlag),announcement:u.announcement})}else if("href"in u&&u.href!=null)c.push({type:"external",product:u.displayName,href:u.href,target:u.target,subtitle:u.subtitle,icon:K0(u.icon,o)||"fa-solid fa-code",image:l,viewers:k1(u.viewers),orphaned:u.orphaned,featureFlags:F1(u.featureFlag)});else throw new j({message:"Invalid product configuration: product must have either 'path' or valid 'href' property",code:j.Code.ConfigError})}return{type:"productgroup",products:c}}else if(r!=null)return await vec({versions:r,absolutePathToFernFolder:i,context:s,folderTitleSource:a});throw new j({message:"Unexpected. Docs have neither navigation or versions defined.",code:j.Code.ConfigError})}function F1(e){if(e!=null)return typeof e=="string"?[{flag:e,match:!0,fallbackValue:void 0}]:Array.isArray(e)?e.map(t=>({flag:t.flag,match:t.match,fallbackValue:t.fallbackValue})):[{flag:e.flag,match:e.match??!0,fallbackValue:e.fallbackValue}]}async function Lkf({rawTypography:e,absoluteFilepathToDocsConfig:t}){return{headingsFont:e.headingsFont!=null?await sso({rawFontConfig:e.headingsFont,absoluteFilepathToDocsConfig:t}):void 0,bodyFont:e.bodyFont!=null?await sso({rawFontConfig:e.bodyFont,absoluteFilepathToDocsConfig:t}):void 0,codeFont:e.codeFont!=null?await sso({rawFontConfig:e.codeFont,absoluteFilepathToDocsConfig:t}):void 0}}async function sso({rawFontConfig:e,absoluteFilepathToDocsConfig:t}){return{name:e.name,variants:await zkf(e,t),display:e.display,fallback:e.fallback,fontVariationSettings:e.fontVariationSettings}}function zkf(e,t){let r=[];return e.path!=null&&r.push({path:e.path,weight:e.weight,style:e.style}),e.paths?.forEach(n=>{typeof n=="string"?r.push({path:n,weight:e.weight,style:e.style}):r.push({path:n.path,weight:n.weight??e.weight,style:n.style??e.style})}),Promise.all(r.map(async n=>({absolutePath:e0(n.path,t),weight:Ukf(n.weight),style:n.style})))}function Ukf(e){return e==null?void 0:typeof e=="number"?[e.toString()]:e.split(/\D+/).filter(r=>r!==""&&["100","200","300","400","500","600","700","800","900"].includes(r))}async function _kf({tabs:e,item:t,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o}){let s=e[t.tab];if(s==null)throw new j({message:`Tab ${t.tab} is not defined in the tabs config.`,code:j.Code.ConfigError});if(oNf(t)){let a=await Promise.all(t.variants.map(async c=>{let u=await Promise.all(c.layout.map(l=>Dkr({rawConfig:l,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o})));return{title:c.title,subtitle:c.subtitle,icon:K0(c.icon,n),layout:u,slug:c.slug,skipUrlSlug:c.skipSlug,hidden:c.hidden,default:c.default,viewers:k1(c.viewers),orphaned:c.orphaned,featureFlags:F1(c.featureFlag)}}));return{title:s.displayName,icon:K0(s.icon,n),slug:s.slug,skipUrlSlug:s.skipSlug,hidden:s.hidden,child:{type:"variants",variants:a},viewers:k1(s.viewers),orphaned:s.orphaned,featureFlags:F1(s.featureFlag)}}if(iNf(t)){let a=await Promise.all(t.layout.map(c=>Dkr({rawConfig:c,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o})));return{title:s.displayName,icon:K0(s.icon,n),slug:s.slug,skipUrlSlug:s.skipSlug,hidden:s.hidden,child:{type:"layout",layout:a},viewers:k1(s.viewers),orphaned:s.orphaned,featureFlags:F1(s.featureFlag)}}if(s.href!=null)return{title:s.displayName,icon:K0(s.icon,n),slug:s.slug,skipUrlSlug:s.skipSlug,hidden:s.hidden,child:{type:"link",href:s.href,target:s.target},viewers:k1(s.viewers),orphaned:s.orphaned,featureFlags:F1(s.featureFlag)};if(s.changelog!=null)return{title:s.displayName,icon:K0(s.icon,n),slug:s.slug,skipUrlSlug:s.skipSlug,hidden:s.hidden,child:{type:"changelog",changelog:await e1(e0(s.changelog,n),"{md,mdx}")},viewers:k1(s.viewers),orphaned:s.orphaned,featureFlags:F1(s.featureFlag)};Ce(s)}async function cso({tabs:e={},rawNavigationConfig:t,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o}){return nNf(t)?{type:"tabbed",items:await Promise.all(t.map(a=>_kf({tabs:e,item:a,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o})))}:{type:"untabbed",items:await Promise.all(t.map(s=>Dkr({rawConfig:s,absolutePathToFernFolder:r,absolutePathToConfig:n,context:i,folderTitleSource:o})))}}var Vkf="Changelog";async function qkf({rawConfig:e,absolutePathToFernFolder:t,absolutePathToConfig:r,context:n,folderTitleSource:i}){let o=e0(e.folder,r);await cr(o)||n.failAndThrow(`Folder not found: ${e.folder}`,void 0,{code:j.Code.ConfigError}),uso({context:n,sectionTitle:e.folder,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0});let s=e.titleSource??i,a=await iso({directoryPath:o,titleSource:s}),c=a.find(m=>m.type==="page"&&(m.slug==="index"||m.absolutePath.toLowerCase().endsWith("/index.mdx")||m.absolutePath.toLowerCase().endsWith("/index.md"))),u=c?a.filter(m=>m!==c):a,l=iW.default.basename(o),p=s==="frontmatter"&&c?.type==="page"?(await Tkr({absolutePath:c.absolutePath})).title:void 0,d=e.title??p??nso({name:l}),f=e.slug??Skr({name:l});return{type:"section",title:d,icon:K0(e.icon,r),contents:u,slug:f,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0,hidden:e.hidden??void 0,skipUrlSlug:e.skipSlug??!1,overviewAbsolutePath:c?.type==="page"?c.absolutePath:void 0,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag),availability:e.availability}}async function Dkr({rawConfig:e,absolutePathToFernFolder:t,absolutePathToConfig:r,context:n,folderTitleSource:i}){if(wec(e))return CMt(e,r);if(Wkf(e))return uso({context:n,sectionTitle:e.section,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0}),{type:"section",title:e.section,icon:K0(e.icon,r),contents:await Promise.all(e.contents.map(o=>Dkr({rawConfig:o,absolutePathToFernFolder:t,absolutePathToConfig:r,context:n,folderTitleSource:i}))),slug:e.slug??void 0,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0,hidden:e.hidden??void 0,skipUrlSlug:e.skipSlug??!1,overviewAbsolutePath:e0(e.path,r),viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag),availability:e.availability};if(Hkf(e))return{type:"apiSection",openrpc:e.openrpc,title:e.api,icon:K0(e.icon,r),apiName:e.apiName??void 0,audiences:e.audiences!=null?{type:"select",audiences:wMt(e.audiences)??[]}:{type:"all"},availability:e.availability,showErrors:e.displayErrors??!0,tagDescriptionPages:e.tagDescriptionPages??!1,snippetsConfiguration:e.snippets!=null?Gkf({rawConfig:e.snippets}):void 0,postman:e.postman,navigation:e.layout?.flatMap(o=>Pkr(o,r,n))??[],overviewAbsolutePath:e0(e.summary,r),collapsed:e.collapsed??void 0,hidden:e.hidden??void 0,slug:e.slug,skipUrlSlug:e.skipSlug??!1,flattened:e.flattened??!1,alphabetized:e.alphabetized??!1,paginated:e.paginated??!1,playground:e.playground,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)};if(xec(e))return{type:"link",text:e.link,url:e.href,icon:K0(e.icon,r),target:e.target};if(Kkf(e))return{type:"changelog",changelog:await e1(e0(e.changelog,r),"{md,mdx}"),hidden:e.hidden??!1,icon:K0(e.icon,r),title:e.title??Vkf,slug:e.slug,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)};if(Jkf(e))return await qkf({rawConfig:e,absolutePathToFernFolder:t,absolutePathToConfig:r,context:n,folderTitleSource:i});if(Ykf(e))return{type:"librarySection",libraryName:e.library,title:e.title??void 0,slug:e.slug??void 0,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)};Ce(e)}function CMt(e,t){if(e!=null)return{type:"page",title:e.page,absolutePath:e0(e.path,t),slug:e.slug,icon:K0(e.icon,t),hidden:e.hidden,noindex:e.noindex,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag),availability:e.availability}}function Pkr(e,t,r){return typeof e=="string"?[{type:"item",value:e}]:wec(e)?[CMt(e,t)]:xec(e)?[{type:"link",text:e.link,url:e.href,icon:K0(e.icon,t),target:e.target}]:$kf(e)?(r!=null&&uso({context:r,sectionTitle:e.section,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0}),[{type:"section",title:e.section,referencedSubpackages:e.referencedPackages??[],overviewAbsolutePath:e0(e.summary,t),contents:e.contents?.flatMap(n=>Pkr(n,t,r))??[],slug:e.slug,hidden:e.hidden,skipUrlSlug:e.skipSlug,collapsed:e.collapsed??void 0,collapsible:e.collapsible??void 0,collapsedByDefault:e.collapsedByDefault??void 0,availability:e.availability,icon:K0(e.icon,t),playground:e.playground,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)}]):eNf(e)?[{type:"endpoint",endpoint:e.endpoint,title:e.title,icon:K0(e.icon,t),slug:e.slug,hidden:e.hidden,availability:e.availability,playground:e.playground,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)}]:tNf(e)?[{type:"operation",operation:e.operation,title:e.title,slug:e.slug,hidden:e.hidden,availability:e.availability,viewers:k1(e.viewers),orphaned:e.orphaned,featureFlags:F1(e.featureFlag)}]:Object.entries(e).map(([n,i])=>rNf(i)?{type:"package",title:i.title,package:n,overviewAbsolutePath:e0(i.summary,t),contents:i.contents?.flatMap(o=>Pkr(o,t,r))??[],slug:i.slug,hidden:i.hidden,skipUrlSlug:i.skipSlug,icon:K0(i.icon,t),playground:i.playground,availability:i.availability,viewers:k1(i.viewers),orphaned:i.orphaned,featureFlags:F1(i.featureFlag)}:{type:"package",title:void 0,package:n,overviewAbsolutePath:void 0,contents:i.flatMap(o=>Pkr(o,t,r)),hidden:!1,slug:void 0,skipUrlSlug:!1,icon:void 0,playground:void 0,availability:void 0,viewers:void 0,orphaned:void 0,featureFlags:void 0})}function Gkf({rawConfig:e}){return{python:e.python,typescript:e.typescript,go:e.go,java:e.java,ruby:e.ruby,csharp:e.csharp,php:e.php,swift:e.swift}}function wec(e){return Qo(e)&&typeof e.page=="string"&&typeof e.path=="string"}function Wkf(e){return e.section!=null}function Hkf(e){return e.api!=null}function xec(e){return oy.RawSchemas,Qo(e)&&typeof e.link=="string"&&typeof e.href=="string"}function Kkf(e){return Qo(e)&&typeof e.changelog=="string"}function Jkf(e){return Qo(e)&&typeof e.folder=="string"}function Ykf(e){return Qo(e)&&typeof e.library=="string"}function Xkf(e){return"git"in e}function Zkf(e){if(e==null)return;let t={};for(let[r,n]of Object.entries(e)){if(!Xkf(n.input))throw new j({message:`Library '${r}' uses 'path' input which is not yet supported. Please use 'git' input.`,code:j.Code.ConfigError});t[r]={input:{git:n.input.git,subpath:n.input.subpath},output:{path:n.output.path},lang:n.lang}}return t}function $kf(e){return Qo(e)&&typeof e.section=="string"&&Array.isArray(e.contents)}function eNf(e){return Qo(e)&&typeof e.endpoint=="string"}function tNf(e){return Qo(e)&&typeof e.operation=="string"}function rNf(e){return!Array.isArray(e)}function e0(e,t){if(e!=null)return Hi(Fn(t),e)}function nNf(e){return Array.isArray(e)&&e.length>0&&e[0].tab!=null}function iNf(e){return"layout"in e&&Array.isArray(e.layout)}function oNf(e){return"variants"in e&&Array.isArray(e.variants)}function Sec(e,t){return e?.map(r=>{if(r.type==="github"){let i=r.value;return typeof i=="string"?{type:"github",url:hn.Url(i),viewers:void 0,target:void 0}:{type:"github",url:hn.Url(i.url),viewers:aso(i.viewers),target:i.target}}let n=aso(r.viewers);return r.type==="dropdown"?{type:"dropdown",text:r.text,icon:K0(r.icon,t),rightIcon:K0(r.rightIcon,t),rounded:r.rounded,viewers:n,links:r.links?.map(i=>({href:i.href,target:i.target,url:hn.Url(i.url??i.href??"/"),text:i.text,icon:K0(i.icon,t),rightIcon:K0(i.rightIcon,t),rounded:i.rounded,viewers:aso(i.viewers)}))??[]}:{type:r.type,text:r.text,url:hn.Url(r.href??r.url??"/"),target:r.target,icon:K0(r.icon,t),rightIcon:K0(r.rightIcon,t),rounded:r.rounded,viewers:n}})}function aso(e){if(e!=null)return Array.isArray(e)?e.map(t=>hn.docs.v1.commons.RoleId(t)):[hn.docs.v1.commons.RoleId(e)]}function sNf(e){if(e==null)return;let t=[];if(Object.keys(e).forEach(r=>{let n=e[r];n!=null&&t.push({type:r,value:hn.Url(n)})}),t.length!==0)return t}async function aNf(e,t,r){if(e!=null)return cNf(e,r),{"og:site_name":e.ogSiteName,"og:title":e.ogTitle,"og:description":e.ogDescription,"og:url":e.ogUrl,"og:image":await Okr(e.ogImage,t),"og:image:width":e.ogImageWidth,"og:image:height":e.ogImageHeight,"og:locale":e.ogLocale,"og:logo":await Okr(e.ogLogo,t),"twitter:title":e.twitterTitle,"twitter:description":e.twitterDescription,"twitter:image":await Okr(e.twitterImage,t),"twitter:handle":e.twitterHandle,"twitter:site":e.twitterSite,"twitter:url":e.twitterUrl,"twitter:card":e.twitterCard,"og:dynamic":e.ogDynamic,"og:dynamic:background-image":await Okr(e.ogDynamicBackgroundImage,t),"og:dynamic:text-color":e.ogDynamicTextColor,"og:dynamic:background-color":e.ogDynamicBackgroundColor,"og:dynamic:logo-color":e.ogDynamicLogoColor,"og:dynamic:show-logo":e.ogDynamicShowLogo,"og:dynamic:show-section":e.ogDynamicShowSection,"og:dynamic:show-description":e.ogDynamicShowDescription,"og:dynamic:show-url":e.ogDynamicShowUrl,"og:dynamic:show-gradient":e.ogDynamicShowGradient,nofollow:void 0,noindex:void 0,canonicalHost:e.canonicalHost}}function cNf(e,t){let r=e.ogDynamic===!0,n=[["og:dynamic:background-image",e.ogDynamicBackgroundImage],["og:dynamic:text-color",e.ogDynamicTextColor],["og:dynamic:background-color",e.ogDynamicBackgroundColor],["og:dynamic:logo-color",e.ogDynamicLogoColor],["og:dynamic:show-logo",e.ogDynamicShowLogo],["og:dynamic:show-section",e.ogDynamicShowSection],["og:dynamic:show-description",e.ogDynamicShowDescription],["og:dynamic:show-url",e.ogDynamicShowUrl],["og:dynamic:show-gradient",e.ogDynamicShowGradient]];if(r&&e.ogImage!=null&&t.logger.warn("[metadata] `og:image` is only applied to the homepage when `og:dynamic: true`. All other pages show the dynamically generated image. Remove `og:image` to rely entirely on dynamic generation, or set `og:dynamic: false` to use `og:image` site-wide."),r&&e.twitterImage!=null&&t.logger.warn("[metadata] `twitter:image` is only applied to the homepage when `og:dynamic: true`. All other pages show the dynamically generated image."),!r){let i=n.filter(([,o])=>o!=null).map(([o])=>o);i.length>0&&t.logger.warn(`[metadata] The following settings require \`og:dynamic: true\` and will be ignored: ${i.map(o=>`\`${o}\``).join(", ")}.`)}r&&e.ogDynamicShowLogo===!1&&e.ogDynamicLogoColor!=null&&t.logger.warn("[metadata] `og:dynamic:logo-color` has no effect because `og:dynamic:show-logo: false`. Remove one or the other."),e.ogImage==null&&(e.ogImageWidth!=null||e.ogImageHeight!=null)&&t.logger.warn("[metadata] `og:image:width` / `og:image:height` have no effect without `og:image`."),r&&typeof e.ogDynamicTextColor=="string"&&typeof e.ogDynamicBackgroundColor=="string"&&e.ogDynamicTextColor.trim().toLowerCase()===e.ogDynamicBackgroundColor.trim().toLowerCase()&&t.logger.warn(`[metadata] \`og:dynamic:text-color\` and \`og:dynamic:background-color\` are both set to \`${e.ogDynamicTextColor}\`, which will make text invisible in generated OG images.`)}async function Okr(e,t){if(e==null)return;if(e.startsWith("http"))return{type:"url",value:e};let r=e0(e,t);return await cr(r)?{type:"filepath",value:r}:{type:"url",value:e}}function k1(e){if(e!=null){if(typeof e=="string")return[hn.docs.v1.commons.RoleId(e)];if(e.length!==0)return e.map(hn.docs.v1.commons.RoleId)}}function wMt(e){if(e!=null){if(typeof e=="string")return[e];if(e.length!==0)return e}}function uso({context:e,sectionTitle:t,collapsed:r,collapsible:n,collapsedByDefault:i}){n!=null&&r!=null&&e.failAndThrow(`Section "${t}": cannot use both "collapsible" and the deprecated "collapsed" property. Please use "collapsible" and "collapsed-by-default" instead.`,void 0,{code:j.Code.ConfigError}),i!=null&&n!==!0&&e.failAndThrow(`Section "${t}": "collapsed-by-default" requires "collapsible: true". "collapsed-by-default" has no effect on a non-collapsible section.`,void 0,{code:j.Code.ConfigError})}async function uNf({translations:e,defaultLocale:t,pages:r,absolutePathToFernFolder:n,context:i}){if(e==null||e.length===0)return;let o=iW.default.join(n,"translations"),s={},a=e.map(c=>oy.DocsYmlSchemas.normalizeTranslationConfig(c));return await Promise.all(a.map(async({lang:c})=>{if(c===t)return;let u=iW.default.join(o,c);if(!await cr(u)){i.failAndThrow(`Translation directory for locale "${c}" not found.
3031
3031
  Expected a directory at: ${u}
3032
3032
  Create the directory and add translated versions of your documentation pages.
3033
3033
  The directory should mirror the same relative paths referenced in your docs.yml navigation.
@@ -3223,7 +3223,7 @@ ${cNc.default.cursorShow}`)}releaseCursor(){this.extraLinesUnderPrompt>0&&cwo(th
3223
3223
  `+Y3e.default.red(">> ")+t),this.screen.render(r,n)}getMaskedValue(t){return this.status==="answered"?this.opt.mask?Y3e.default.cyan(ANc(t,this.opt.mask)):Y3e.default.italic(Y3e.default.dim("[hidden]")):this.opt.mask?ANc(t,this.opt.mask):Y3e.default.italic(Y3e.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 s7r=we(lS(),1);var gjc=we(Vwo(),1),i7r=require("child_process"),yot=require("fs"),n7r=we(require("path"),1),Ajc=we(require("os"),1),yjc=require("crypto"),Txo=we(mjc(),1);var e7r=class extends Error{originalError;constructor(t){super(`Failed to create temporary file. ${t.message}`),this.originalError=t}};var D_t=class extends Error{originalError;constructor(t){super(`Failed to launch editor. ${t.message}`),this.originalError=t}};var t7r=class extends Error{originalError;constructor(t){super(`Failed to read temporary file. ${t.message}`),this.originalError=t}};var r7r=class extends Error{originalError;constructor(t){super(`Failed to remove temporary file. ${t.message}`),this.originalError=t}};function o7r(e="",t,r){let n=new Bxo(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 hjc(e){return e?e.replace(/[^a-zA-Z0-9_.-]/g,"_"):""}function Dzd(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 Bxo=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=Dzd(t).map(i=>i.replace("\\ "," ")),n=r.shift();this.editor={args:r,bin:n}}createTemporaryFile(){try{let t=this.fileOptions.dir??Ajc.default.tmpdir(),r=(0,yjc.randomUUID)(),n=hjc(this.fileOptions.prefix),i=hjc(this.fileOptions.postfix),o=`${n}${r}${i}`,s=n7r.default.resolve(t,o),a=n7r.default.resolve(t)+n7r.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,yot.writeFileSync)(this.tempFile,this.text,c)}catch(t){throw new e7r(t)}}readTemporaryFile(){try{let t=(0,yot.readFileSync)(this.tempFile);if(t.length===0)this.text="";else{let r=(0,gjc.detect)(t)??"utf8";Txo.default.encodingExists(r)||(r="utf8"),this.text=Txo.default.decode(t,r)}}catch(t){throw new t7r(t)}}removeTemporaryFile(){try{(0,yot.unlinkSync)(this.tempFile)}catch(t){throw new r7r(t)}}launchEditor(){try{let t=(0,i7r.spawnSync)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"});this.lastExitStatus=t.status??0}catch(t){throw new D_t(t)}}launchEditorAsync(t){try{(0,i7r.spawn)(this.editor.bin,this.editor.args.concat([this.tempFile]),{stdio:"inherit"}).on("exit",n=>{this.lastExitStatus=n,setImmediate(t)})}catch(r){throw new D_t(r)}}};var bjc=we(mz(),1);var R_t=class extends pS{_run(t){this.done=t,this.editorResult=new bjc.Subject;let r=qO(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"?s7r.default.dim("Received"):s7r.default.dim("Press <enter> to launch your preferred editor."),t&&(r=s7r.default.red(">> ")+t),this.screen.render(n,r)}startExternalEditor(){this.rl.pause(),o7r(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 wjc=require("stream");var Ijc=we(require("readline"),1),Cjc=we(vjc(),1),eze=class{constructor(t){this.rl||=Ijc.default.createInterface(Fzd(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 Fzd(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 Cjc.default;return r.pipe(e.output||process.stdout),{terminal:!0,...e,input:t,output:r}}var F_t=class extends eze{constructor(t={}){super(t),this.log=new wjc.Writable({write:(r,n,i)=>{this.writeLog(r),i()}}),this.bottomBar=t.bottomBar||"",this.render()}render(){return this.write(this.bottomBar),this}clean(){return g_t(this.rl,this.bottomBar.split(`
3224
3224
  `).length),this}updateBottomBar(t){return g_t(this.rl,1),this.rl.output.unmute(),this.clean(),this.bottomBar=t,this.render(),this.rl.output.mute(),this}writeLog(t){return this.rl.output.unmute(),this.clean(),this.rl.output.write(this.enforceLF(t.toString())),this.render(),this.rl.output.mute(),this}enforceLF(t){return/[\n\r]$/.test(t)?t:t+`
3225
3225
  `}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&&B8r(this.rl,t.length+this.rl.line.length),this.rl.output.write(t)}};var Vd=we(mz(),1),Tjc=we(HUt(),1);var a7r=we(mz(),1),xjc=we(HUt(),1),c7r=function(e,t,r){return typeof e[t]!="function"?(0,a7r.of)(e):(0,a7r.from)((0,xjc.default)(e[t])(r).then(n=>(e[t]=n,e)))};var Sjc={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}},bot=class extends eze{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,Vd.from)(t):(0,Vd.isObservable)(t)?n=t:Object.values(t).every(i=>typeof i=="object"&&!Array.isArray(i)&&i!=null)?n=(0,Vd.from)(Object.entries(t).map(([i,o])=>({name:i,...o}))):n=(0,Vd.from)([t]),this.process=n.pipe((0,Vd.concatMap)(this.processQuestion.bind(this)),(0,Vd.publish)()),this.process.connect(),this.process.pipe((0,Vd.reduce)((i,o)=>(Sjc.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,Vd.defer)(()=>(0,Vd.of)(t).pipe((0,Vd.concatMap)(this.setDefaultType.bind(this)),(0,Vd.concatMap)(this.filterIfRunnable.bind(this)),(0,Vd.concatMap)(()=>c7r(t,"message",this.answers)),(0,Vd.concatMap)(()=>c7r(t,"default",this.answers)),(0,Vd.concatMap)(()=>c7r(t,"choices",this.answers)),(0,Vd.concatMap)(this.fetchAnswer.bind(this))))}fetchAnswer(t){let r=this.prompts[t.type];return this.activePrompt=new r(t,this.rl,this.answers),(0,Vd.defer)(()=>(0,Vd.from)(this.activePrompt.run().then(n=>({name:t.name,answer:n}))))}setDefaultType(t){return this.prompts[t.type]||(t.type="input"),(0,Vd.defer)(()=>(0,Vd.of)(t))}filterIfRunnable(t){if(t.askAnswered!==!0&&Sjc.get(this.answers,t.name)!==void 0)return Vd.EMPTY;if(t.when===!1)return Vd.EMPTY;if(typeof t.when!="function")return(0,Vd.of)(t);let{answers:r}=this;return(0,Vd.defer)(()=>(0,Vd.from)((0,Tjc.default)(t.when)(r).then(n=>{if(n)return t})).pipe((0,Vd.filter)(n=>n!=null)))}};function Bjc(e){let t=function(r,n){let i;try{i=new bot(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",y_t),this.registerPrompt("input",J3e),this.registerPrompt("number",b_t),this.registerPrompt("confirm",E_t),this.registerPrompt("rawlist",v_t),this.registerPrompt("expand",I_t),this.registerPrompt("checkbox",C_t),this.registerPrompt("password",w_t),this.registerPrompt("editor",R_t)},t.restoreDefaultPrompts(),t}var Pxo=Bjc();function Nzd(e,t){Pxo.registerPrompt(e,t)}function jzd(){Pxo.restoreDefaultPrompts()}var Qzd={prompt:Pxo,ui:{BottomBar:F_t,Prompt:bot},createPromptModule:Bjc,registerPrompt:Nzd,restoreDefaultPrompts:jzd,Separator:a6},tp=Qzd;var Eot=require("path");function Pjc(){let e=Mzd();return async t=>{for(let r of t)r.module=e(r.filename);return t}}function Mzd(e=process.argv[1]?(0,Eot.dirname)(process.argv[1]):process.cwd(),t=Eot.sep==="\\"){let r=t?Ojc(e):e;return n=>{if(!n)return;let i=t?Ojc(n):n,{dir:o,base:s,ext:a}=Eot.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 Ojc(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var Dxo=e=>{if("flags"in e){let t=Djc(e.flags),r=Rjc(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([i,o])=>[i,Rxo(o)])),n=Object.fromEntries(Object.entries(t).map(([i,o])=>[i,Lzd(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function Lzd(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 Djc=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,k_t(r)]).filter(([,t])=>t!==void 0)),Rjc=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?Rxo(n):void 0]}))};var k_t=e=>e===void 0?void 0:e.variant??e.enabled,Rxo=e=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};function Fjc(){return"CompressionStream"in globalThis}async function u7r(e,t=!0){try{let n=new Blob([e],{type:"text/plain"}).stream().pipeThrough(new CompressionStream("gzip"));return await new Response(n).blob()}catch(r){return t&&console.error("Failed to gzip compress data",r),null}}var l7r="0123456789abcdef",p7r=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+=l7r.charAt(this.bytes[r]>>>4),t+=l7r.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+=l7r.charAt(this.bytes[r]>>>4),t+=l7r.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}},Fxo=class{constructor(t){this.timestamp=0,this.counter=0,this.random=t??zzd()}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 p7r.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,p7r.ofInner(t)}},zzd=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),kjc,tCe=()=>Uzd().toString(),Uzd=()=>(kjc||(kjc=new Fxo)).generate();var u6=(function(e){return e.AnonymousId="anonymous_id",e.DistinctId="distinct_id",e.Props="props",e.EnablePersonProcessing="enable_person_processing",e.PersonMode="person_mode",e.FeatureFlagDetails="feature_flag_details",e.FeatureFlags="feature_flags",e.FeatureFlagPayloads="feature_flag_payloads",e.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",e.BootstrapFeatureFlags="bootstrap_feature_flags",e.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",e.OverrideFeatureFlags="override_feature_flags",e.Queue="queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionStartTimestamp="session_start_timestamp",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version",e.SessionReplay="session_replay",e.SurveyLastSeenDate="survey_last_seen_date",e.SurveysSeen="surveys_seen",e.Surveys="surveys",e.RemoteConfig="remote_config",e.FlagsEndpointWasHit="flags_endpoint_was_hit",e.DeviceId="device_id",e})({});var _zd=["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"],Njc=function(e,t=[]){if(!e)return!1;let r=e.toLowerCase();return _zd.concat(t).some(n=>{let i=n.toLowerCase();return r.indexOf(i)!==-1})};var qzd=Array.isArray,jjc=Object.prototype,tY0=jjc.hasOwnProperty,kxo=jjc.toString,Nxo=qzd||function(e){return kxo.call(e)==="[object Array]"};var jxo=e=>e===Object(e)&&!Nxo(e);var N_t=e=>e===void 0,j_t=e=>kxo.call(e)=="[object String]",Qjc=e=>j_t(e)&&e.trim().length===0;var Mjc=e=>kxo.call(e)=="[object Number]"&&e===e;var Qxo=e=>e instanceof Error;function f7r(e){return e===null||typeof e!="object"}function tze(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function Ljc(e){return tze(e,"ErrorEvent")}function vot(e){return typeof Event<"u"&&Gzd(e,Event)}function zjc(e){return tze(e,"Object")}function Gzd(e,t){try{return e instanceof t}catch{return!1}}function Q_t(e,t,r,n,i){return t>r&&(n.warn("min cannot be greater than max."),t=r),Mjc(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),Q_t(i||r,t,r,n))}var Wzd=864e5,d7r=class{constructor(t){this._buckets={},this._onBucketRateLimited=t._onBucketRateLimited,this._bucketSize=Q_t(t.bucketSize,0,100,t._logger),this._refillRate=Q_t(t.refillRate,0,this._bucketSize,t._logger),this._refillInterval=Q_t(t.refillInterval,0,Wzd,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 m7r=class{add(t){let r=tCe();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 Hzd(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var Ujc=(e,t,r)=>{function n(o,...s){t(()=>{let a=r[o];a(e,...s)})}return{info:(...o)=>{n("log",...o)},warn:(...o)=>{n("warn",...o)},error:(...o)=>{n("error",...o)},critical:(...o)=>{r.error(e,...o)},createLogger:o=>Ujc(`${e} ${o}`,t,r)}},Kzd=e=>e();function _jc(e,t=Kzd){return Ujc(e,t,Hzd())}var Cot="Mobile",g7r="iOS",Iot="Android",Vjc="Tablet",dY0=Iot+" "+Vjc;var Jzd="Apple",mY0=Jzd+" Watch",qjc="Safari",A7r="BlackBerry",Gjc="Samsung",Yzd=Gjc+"Browser",Xzd=Gjc+" Internet",y7r="Chrome",Zzd=y7r+" OS",$zd=y7r+" "+g7r,Wjc="Internet Explorer",e4d=Wjc+" "+Cot,Lxo="Opera",hY0=Lxo+" Mini",Hjc="Edge",t4d="Microsoft "+Hjc,zxo="Firefox",r4d=zxo+" "+g7r,Uxo="Nintendo",_xo="PlayStation",h7r="Xbox",n4d=Iot+" "+Cot,i4d=Cot+" "+qjc,M_t="Windows",o4d=M_t+" Phone";var Kjc="Generic",gY0=Kjc+" "+Cot.toLowerCase(),AY0=Kjc+" "+Vjc.toLowerCase(),s4d="Konqueror",Bk="(\\d+(\\.\\d+)?)",Mxo=new RegExp("Version/"+Bk),yY0=new RegExp(h7r,"i"),bY0=new RegExp(_xo+" \\w+","i"),EY0=new RegExp(Uxo+" \\w+","i"),a4d=new RegExp(A7r+"|PlayBook|BB10","i"),c4d={"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 vY0={[e4d]:[new RegExp("rv:"+Bk)],[t4d]:[new RegExp(Hjc+"?\\/"+Bk)],[y7r]:[new RegExp("("+y7r+"|CrMo)\\/"+Bk)],[$zd]:[new RegExp("CriOS\\/"+Bk)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+Bk)],[qjc]:[Mxo],[i4d]:[Mxo],[Lxo]:[new RegExp("("+Lxo+"|OPR)\\/"+Bk)],[zxo]:[new RegExp(zxo+"\\/"+Bk)],[r4d]:[new RegExp("FxiOS\\/"+Bk)],[s4d]:[new RegExp("Konqueror[:/]?"+Bk,"i")],[A7r]:[new RegExp(A7r+" "+Bk),Mxo],[n4d]:[new RegExp("android\\s"+Bk,"i")],[Xzd]:[new RegExp(Yzd+"\\/"+Bk)],[Wjc]:[new RegExp("(rv:|MSIE )"+Bk)],Mozilla:[new RegExp("rv:"+Bk)]};var IY0=[[new RegExp(h7r+"; "+h7r+" (.*?)[);]","i"),e=>[h7r,e&&e[1]||""]],[new RegExp(Uxo,"i"),[Uxo,""]],[new RegExp(_xo,"i"),[_xo,""]],[a4d,[A7r,""]],[new RegExp(M_t,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[o4d,""];if(new RegExp(Cot).test(t)&&!/IEMobile\b/.test(t))return[M_t+" "+Cot,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let n=r[1],i=c4d[n]||"";return/arm/i.test(t)&&(i="RT"),[M_t,i]}return[M_t,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,e=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[g7r,t.join(".")]}return[g7r,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,e=>{let t="";return e&&e.length>=3&&(t=N_t(e[2])?e[3]:e[2]),["watchOS",t]}],[new RegExp("("+Iot+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Iot+")","i"),e=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[Iot,t.join(".")]}return[Iot,""]}],[/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/,[Zzd,""]],[/Linux|debian/i,["Linux",""]]];var Jjc="utf8";function Yjc(e,t){if(!e||typeof e!="string"||u4d(e))throw new Error(t)}function u4d(e){return e.trim().length===0}function Xjc(e){return e?.replace(/\/+$/,"")}async function Zjc(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 b7r(){return new Date().toISOString()}function wfe(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}var $jc=e=>e instanceof Error;function Vxo(e){return Promise.all(e.map(t=>(t??Promise.resolve()).then(r=>({status:"fulfilled",value:r}),r=>({status:"rejected",reason:r}))))}var E7r=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 rze=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()}},wot=class extends Error{constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};async function eQc(e){if(e instanceof rze){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 qxo(e){return typeof e=="object"&&(e instanceof rze||e instanceof wot)}function tQc(e){return typeof e=="object"&&e instanceof rze&&e.status===413}var L_t=class{constructor(t,r={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new m7r,this._events=new E7r,this._isInitialized=!1,Yjc(t,"You must pass your PostHog project's api key."),this.apiKey=t,this.host=Xjc(r.host||"https://us.i.posthog.com"),this.flushAt=r.flushAt?Math.max(r.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,r.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,r.maxQueueSize??1e3),this.flushInterval=r.flushInterval??1e4,this.preloadFeatureFlags=r.preloadFeatureFlags??!0,this.defaultOptIn=r.defaultOptIn??!0,this.disableSurveys=r.disableSurveys??!1,this._retryOptions={retryCount:r.fetchRetryCount??3,retryDelay:r.fetchRetryDelay??3e3,retryCheck:qxo},this.requestTimeout=r.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=r.featureFlagsRequestTimeoutMs??3e3,this.remoteConfigRequestTimeoutMs=r.remoteConfigRequestTimeoutMs??3e3,this.disableGeoip=r.disableGeoip??!0,this.disabled=r.disabled??!1,this.historicalMigration=r?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this._logger=_jc("[PostHog]",this.logMsgIfDebug.bind(this)),this.evaluationContexts=r?.evaluationContexts??r?.evaluationEnvironments,r?.evaluationEnvironments&&!r?.evaluationContexts&&this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version."),this.disableCompression=!Fjc()||(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(u6.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(u6.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(u6.OptedOut,!0)})}on(t,r){return this._events.on(t,r)}debug(t=!0){if(this.removeDebugCallback?.(),t){let r=this.on("*",(n,i)=>this._logger.info(n,i));this.removeDebugCallback=()=>{r(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(t){return{distinct_id:t.distinct_id,event:t.event,properties:{...t.properties||{},...this.getCommonEventProperties()}}}addPendingPromise(t){return this.promiseQueue.add(t)}identifyStateless(t,r,n){this.wrap(()=>{let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};this.enqueue("identify",i,n)})}async identifyStatelessImmediate(t,r,n){let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};await this.sendImmediate("identify",i,n)}captureStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({distinct_id:t,event:r,properties:n});this.enqueue("capture",o,i)})}async captureStatelessImmediate(t,r,n,i){let o=this.buildPayload({distinct_id:t,event:r,properties:n});await this.sendImmediate("capture",o,i)}aliasStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});this.enqueue("alias",o,i)})}async aliasStatelessImmediate(t,r,n,i){let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});await this.sendImmediate("alias",o,i)}groupIdentifyStateless(t,r,n,i,o,s){this.wrap(()=>{let a=this.buildPayload({distinct_id:o||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{},...s||{}}});this.enqueue("capture",a,i)})}async getRemoteConfig(){await this._initPromise;let t=this.host;t==="https://us.i.posthog.com"?t="https://us-assets.i.posthog.com":t==="https://eu.i.posthog.com"&&(t="https://eu-assets.i.posthog.com");let r=`${t}/array/${this.apiKey}/config`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(r,n,{retryCount:0},this.remoteConfigRequestTimeoutMs).then(i=>i.json()).catch(i=>{this._logger.error("Remote config could not be loaded",i),this._events.emit("error",i)})}async getFlags(t,r={},n={},i={},o={},s=!1){await this._initPromise;let a=s?"&config=true":"",c=`${this.host}/flags/?v=2${a}`,u={token:this.apiKey,distinct_id:t,groups:r,person_properties:n,group_properties:i,...o};this.evaluationContexts&&this.evaluationContexts.length>0&&(u.evaluation_contexts=this.evaluationContexts);let l={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(u)};return this._logger.info("Flags URL",c),this.fetchWithRetry(c,l,{retryCount:0},this.featureFlagsRequestTimeoutMs).then(p=>p.json()).then(p=>({success:!0,response:Dxo(p)})).catch(p=>(this._events.emit("error",p),{success:!1,error:this.categorizeRequestError(p)}))}categorizeRequestError(t){if(t instanceof rze)return{type:"api_error",statusCode:t.status};if(t instanceof wot){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=k_t(a.response);return c===void 0&&(c=!1),{response:c,requestId:a.requestId}}async getFeatureFlagDetailStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagDetailsStateless(r,n,i,o,s,[t]);return a===void 0?void 0:{response:a.flags[t],requestId:a.requestId,evaluatedAt:a.evaluatedAt}}async getFeatureFlagPayloadStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagPayloadsStateless(r,n,i,o,s,[t]);if(!a)return;let c=a[t];return c===void 0?null:c}async getFeatureFlagPayloadsStateless(t,r={},n={},i={},o,s){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o,s)).payloads}async getFeatureFlagsStateless(t,r={},n={},i={},o,s){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o,s)}async getFeatureFlagsAndPayloadsStateless(t,r={},n={},i={},o,s){await this._initPromise;let a=await this.getFeatureFlagDetailsStateless(t,r,n,i,o,s);return a?{flags:a.featureFlags,payloads:a.featureFlagPayloads,requestId:a.requestId}:{flags:void 0,payloads:void 0,requestId:void 0}}async getFeatureFlagDetailsStateless(t,r={},n={},i={},o,s){await this._initPromise;let a={};(o??this.disableGeoip)&&(a.geoip_disable=!0),s&&(a.flag_keys_to_evaluate=s);let c=await this.getFlags(t,r,n,i,a);if(!c.success)return;let u=c.response;return u.errorsWhileComputingFlags&&console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices"),u.quotaLimited?.includes("feature_flags")?(console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:u?.requestId,quotaLimited:u.quotaLimited}):u}async getSurveysStateless(){if(await this._initPromise,this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let t=`${this.host}/api/surveys/?token=${this.apiKey}`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},i=(await this.fetchWithRetry(t,r).then(o=>{if(o.status!==200||!o.json){let s=`Surveys API could not be loaded: ${o.status}`,a=new Error(s);this._logger.error(a),this._events.emit("error",new Error(s));return}return o.json()}).catch(o=>{this._logger.error("Surveys API could not be loaded",o),this._events.emit("error",o)}))?.surveys;return i&&this._logger.info("Surveys fetched from API: ",JSON.stringify(i)),i??[]}get props(){return this._props||(this._props=this.getPersistedProperty(u6.Props)),this._props||{}}set props(t){this._props=t}async register(t){this.wrap(()=>{this.props={...this.props,...t},this.setPersistedProperty(u6.Props,this.props)})}async unregister(t){this.wrap(()=>{delete this.props[t],this.setPersistedProperty(u6.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(u6.Queue)||[];o.length>=this.maxQueueSize&&(o.shift(),this._logger.info("Queue is full, the oldest event is dropped.")),o.push({message:i}),this.setPersistedProperty(u6.Queue,o),this._events.emit(t,i),o.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=wfe(()=>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:b7r()};this.historicalMigration&&(o.historical_migration=!0);let s=JSON.stringify(o),a=`${this.host}/batch/`,c=this.disableCompression?null:await u7r(s,this.isDebug),u={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...c!==null&&{"Content-Encoding":"gzip"}},body:c||s};try{await this.fetchWithRetry(a,u)}catch(l){this._events.emit("error",l)}}prepareMessage(t,r,n){let i={...r,type:t,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:n?.timestamp?n?.timestamp:b7r(),uuid:n?.uuid?n.uuid:tCe()};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 eQc(t)})}async flush(){let t=Vxo([this.flushPromise]).then(()=>this._flush());return this.flushPromise=t,this.addPendingPromise(t),Vxo([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(u6.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(u6.Queue)||[]).slice(i.length);this.setPersistedProperty(u6.Queue,m),t=m,await this.flushStorage()},a={api_key:this.apiKey,batch:o,sent_at:b7r()};this.historicalMigration&&(a.historical_migration=!0);let c=JSON.stringify(a),u=`${this.host}/batch/`,l=this.disableCompression?null:await u7r(c,this.isDebug),p={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...l!==null&&{"Content-Encoding":"gzip"}},body:l||c},d={retryCheck:f=>tQc(f)?!1:qxo(f)};try{await this.fetchWithRetry(u,p,d)}catch(f){if(tQc(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 wot||await s(),this._events.emit("error",f),f}await s(),r.push(...o)}this._events.emit("flush",r)}async fetchWithRetry(t,r,n,i){let o=r.body?r.body:"",s=-1;try{s=o instanceof Blob?o.size:Buffer.byteLength(o,Jjc)}catch{o instanceof Blob?s=o.size:s=new TextEncoder().encode(o).length}return await Zjc(async()=>{let a=new AbortController,c=i??this.requestTimeout,u=wfe(()=>a.abort(),c),l=null;try{l=await this.fetch(t,{signal:a.signal,...r})}catch(d){throw new wot(d)}finally{clearTimeout(u)}if(!(r.mode==="no-cors")&&(l.status<200||l.status>=400))throw new rze(l,s);return l},{...this._retryOptions,...n})}async _shutdown(t=3e4){await this._initPromise;let r=!1;this.clearFlushTimer();let n=async()=>{try{for(await this.promiseQueue.join();!((this.getPersistedProperty(u6.Queue)||[]).length===0||(await this.flush(),r)););}catch(o){if(!qxo(o))throw o;await eQc(o)}},i;try{return await Promise.race([new Promise((o,s)=>{i=wfe(()=>{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 l6={};re(l6,{DOMExceptionCoercer:()=>Kxo,ErrorCoercer:()=>Jxo,ErrorEventCoercer:()=>Yxo,ErrorPropertiesBuilder:()=>Gxo,EventCoercer:()=>$xo,ObjectCoercer:()=>Zxo,PrimitiveCoercer:()=>eSo,PromiseRejectionEventCoercer:()=>tSo,ReduceableCache:()=>rSo,StringCoercer:()=>Xxo,chromeStackLineParser:()=>Wxo,createDefaultStackParser:()=>w4d,createStackParser:()=>fQc,geckoStackLineParser:()=>Hxo,nodeStackLineParser:()=>cQc,opera10StackLineParser:()=>oQc,opera11StackLineParser:()=>sQc,reverseAndStripFrames:()=>pQc,winjsStackLineParser:()=>iQc});var v7r,rQc,I7r;function nQc(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);return I7r&&r.length===rQc||(rQc=r.length,I7r=r.reduce((n,i)=>{v7r||(v7r={});let o=v7r[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,v7r[i]=[u,l];break}}}return n},{})),I7r}var p4d=4,Gxo=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&&Nxo(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:nQc(this.stackParser),skipFirstLines:t.skipFirstLines??1}}buildCoercingContext(t,r,n=0){let i=(s,a)=>{if(a<=p4d){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 WO="?";function lee(e,t,r,n,i){let o={platform:e,filename:t,function:r==="<anonymous>"?WO:r,in_app:!0};return N_t(n)||(o.lineno=n),N_t(i)||(o.colno=i),o}var C7r=(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]:WO,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var f4d=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,d4d=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,m4d=/\((\S*)(?::(\d+))(?::(\d+))\)/,Wxo=(e,t)=>{let r=f4d.exec(e);if(r){let[,i,o,s]=r;return lee(t,i,WO,+o,+s)}let n=d4d.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let a=m4d.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}let[o,s]=C7r(n[1]||WO,n[2]);return lee(t,s,o,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var h4d=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,g4d=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Hxo=(e,t)=>{let r=h4d.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let s=g4d.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]||WO;return[o,i]=C7r(o,i),lee(t,i,o,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var A4d=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,iQc=(e,t)=>{let r=A4d.exec(e);return r?lee(t,r[2],r[1]||WO,+r[3],r[4]?+r[4]:void 0):void 0};var y4d=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,oQc=(e,t)=>{let r=y4d.exec(e);return r?lee(t,r[2],r[3]||WO,+r[1]):void 0},b4d=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,sQc=(e,t)=>{let r=b4d.exec(e);return r?lee(t,r[5],r[3]||r[4]||WO,+r[1],+r[2]):void 0};var E4d=/^\s*[-]{4,}$/,v4d=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,cQc=(e,t)=>{let r=e.match(v4d);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||WO,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:aQc(r[3]),colno:aQc(r[4]),in_app:I4d(c||"",u),platform:t}}if(e.match(E4d))return{filename:e,platform:t}};function I4d(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 aQc(e){return parseInt(e||"",10)||void 0}var uQc=/\(error: (.*)\)/,lQc=50;function pQc(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,lQc).map(r=>({...r,filename:r.filename||C4d(t).filename,function:r.function||WO}))}function C4d(e){return e[e.length-1]||{}}function w4d(){return fQc("web:javascript",Wxo,Hxo)}function fQc(e,...t){return(r,n=0)=>{let i=[],o=r.split(`
3226
- `);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=uQc.test(a)?a.replace(uQc,"$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>=lQc)break}}return pQc(i)}}var Kxo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=j_t(t.stack);return{type:this.getType(t),value:this.getValue(t),stack:n?t.stack:void 0,cause:t.cause?r.next(t.cause):void 0,synthetic:!1}}getType(t){return this.isDOMError(t)?"DOMError":"DOMException"}getValue(t){let r=t.name||(this.isDOMError(t)?"DOMError":"DOMException");return t.message?`${r}: ${t.message}`:r}isDOMException(t){return tze(t,"DOMException")}isDOMError(t){return tze(t,"DOMError")}};var Jxo=class{match(t){return Qxo(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 Yxo=class{constructor(){}match(t){return Ljc(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 x4d=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,Xxo=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(x4d);return i&&(r=i[1],n=i[2]),[r,n]}};var dQc=["fatal","error","warning","log","info","debug"];function w7r(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 Zxo=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 vot(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=w7r(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return j_t(t)&&!Qjc(t)&&dQc.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if($jc(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var $xo=class{match(t){return vot(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${w7r(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var eSo=class{match(t){return f7r(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var tSo=class{match(t){return tze(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!vot(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 f7r(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 rSo=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 gQc=require("fs"),AQc=require("readline"),x7r=new l6.ReduceableCache(25),yQc=new l6.ReduceableCache(20),nSo=7,S4d=1e3,T4d=1e4;async function bQc(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"||D4d(s)||R4d(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(yQc.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=k4d(o);if(s.every(c=>F4d(i,c)))continue;let a=N4d(x7r,i,{});n.push(B4d(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&O4d(e,x7r),x7r.reduce(),e}function B4d(e,t,r){return new Promise(n=>{let i=(0,gQc.createReadStream)(e),o=(0,AQc.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(){yQc.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]=j4d(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 O4d(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;P4d(r.lineno,r,n)}}function P4d(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=EQc(e);i<e;i++){let o=r[i];if(o===void 0)return void mQc(t);t.pre_context.push(o)}if(r[e]===void 0)return void mQc(t);t.context_line=r[e];let n=vQc(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 mQc(e){delete e.pre_context,delete e.context_line,delete e.post_context}function D4d(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function R4d(e){return e.lineno!==void 0&&e.lineno>T4d||e.colno!==void 0&&e.colno>S4d}function F4d(e,t){let r=x7r.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 k4d(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=hQc(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+nSo:(i.push(n),n=hQc(o)),t++}return i}function hQc(e){return[EQc(e),vQc(e)]}function EQc(e){return Math.max(1,e-nSo)}function vQc(e){return e+nSo}function N4d(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function j4d(e,t){let r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);let i=Math.max(t-60,0);i<5&&(i=0);let o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r=`...${r}`),o<n&&(r+="..."),r}function Q4d(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 IQc(e,t){globalThis.process?.on("uncaughtException",Q4d(e,t))}function CQc(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var M4d=2e3,aH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new d7r({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return jxo(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()&&(IQc(this.onException.bind(this),this.onFatalError.bind(this)),CQc(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(M4d),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var wQc="5.29.1";var z_t={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};async function xQc(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 L4d=6e4,z4d=1152921504606847e3,U4d=["is_not"],xot=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},qd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},pee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},S7r=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 pee||u instanceof qd?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 pee||u instanceof qd?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${c.key}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${c.key}: ${u}`)),o=!0}})),{response:n,payloads:i,fallbackToFlags:o}}async computeFlagAndPayloadLocally(t,r,n={}){let{matchValue:i,skipLoadCheck:o=!1}=n;if(o||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=i!==void 0?i:await this.computeFlagValueLocally(t,r);let a=this.getFeatureFlagPayload(t.key,s);return{value:s,payload:a}}async computeFlagValueLocally(t,r){let{distinctId:n,groups:i,personProperties:o,groupProperties:s}=r;if(t.ensure_experience_continuity)throw new qd("Flag has experience continuity enabled");if(!t.active)return!1;let c=(t.filters||{}).aggregation_group_type_index;if(c!=null){let u=this.groupTypeMapping[String(c)];if(!u)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${c} for feature flag ${t.key}`)),new qd("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 qd(`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 qd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new qd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new qd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new qd(`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 qd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new qd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new qd(`Dependency '${c}' could not be evaluated`)}let a=i[o];return this.flagEvaluatesToExpectedValue(t.value,a)}flagEvaluatesToExpectedValue(t,r){return typeof t=="boolean"?t===r||typeof r=="string"&&r!==""&&t===!0:typeof t=="string"?r===t:!1}async matchFeatureFlagProperties(t,r,n,i){let o=t.filters||{},s=o.groups||[],a=!1,c;for(let u of s)try{if(await this.isConditionMatch(t,r,u,n,i)){let l=u.variant,p=o.multivariate?.variants||[];c=l&&p.some(d=>d.key===l)?l:await this.getMatchingVariant(t,r)||!0;break}}catch(l){if(l instanceof pee)throw l;if(l instanceof qd)a=!0;else throw l}if(c!==void 0)return c;if(a)throw new qd("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"?PQc(c,i,this.cohorts,this.debugMode):u==="flag"?await this.evaluateFlagDependency(c,i,o):OQc(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await SQc(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await SQc(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(L4d,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 xot(`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 xot(`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 xot(`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 xot&&this.onError?.(t)}}getPersonalApiKeyRequestOptions(t="GET",r){let n={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};return r&&(n["If-None-Match"]=r),{method:t,headers:n}}_requestFeatureFlagDefinitions(){let t=`${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`,r=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;n=wfe(()=>{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 SQc(e,t,r=""){let n=await xQc(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/z4d}function OQc(e,t,r){let n=e.key,i=e.value,o=e.operator||"exact";if(n in t){if(o==="is_not_set")throw new qd("Operator is_not_set is not supported")}else throw new qd(`Property ${n} not found in propertyValues`);let s=t[n];if(s==null&&!U4d.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 TQc(String(i))&&String(s).match(String(i))!==null;case"not_regex":return TQc(String(i))&&String(s).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof i=="number"?i:null;if(typeof i=="string")try{u=parseFloat(i)}catch{}return u==null||s==null?c(String(s),String(i),o):typeof s=="string"?c(s,String(i),o):c(s,u,o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new qd("Date operations cannot be performed on boolean values");let u=W4d(String(i));if(u==null&&(u=BQc(i)),u==null)throw new qd(`Invalid date: ${i}`);let l=BQc(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return QV(HO(String(s)),HO(String(i)))===0;case"semver_neq":return QV(HO(String(s)),HO(String(i)))!==0;case"semver_gt":return QV(HO(String(s)),HO(String(i)))>0;case"semver_gte":return QV(HO(String(s)),HO(String(i)))>=0;case"semver_lt":return QV(HO(String(s)),HO(String(i)))<0;case"semver_lte":return QV(HO(String(s)),HO(String(i)))<=0;case"semver_tilde":{let u=HO(String(s)),{lower:l,upper:p}=V4d(String(i));return QV(u,l)>=0&&QV(u,p)<0}case"semver_caret":{let u=HO(String(s)),{lower:l,upper:p}=q4d(String(i));return QV(u,l)>=0&&QV(u,p)<0}case"semver_wildcard":{let u=HO(String(s)),{lower:l,upper:p}=G4d(String(i));return QV(u,l)>=0&&QV(u,p)<0}default:throw new qd(`Unknown operator: ${o}`)}}function _4d(e,t){if(!(e in t))throw new pee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function PQc(e,t,r,n=!1){let i=String(e.value);_4d(i,r);let o=r[i];return DQc(o,t,r,n)}function DQc(e,t,r,n=!1){if(!e)return!0;let i=e.type,o=e.values;if(!o||o.length===0)return!0;let s=!1;if("values"in o[0]){for(let a of o)try{let c=DQc(a,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof pee)throw c;if(c instanceof qd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new qd("Can't match cohort without a given cohort property value");return i==="AND"}for(let a of o)try{let c;if(a.type==="cohort")c=PQc(a,t,r,n);else if(a.type==="flag"){n&&console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${a.key||"unknown"}'`);continue}else c=OQc(a,t);let u=a.negation||!1;if(i==="AND"){if(!c&&!u||c&&u)return!1}else if(c&&!u||!c&&u)return!0}catch(c){if(c instanceof pee)throw c;if(c instanceof qd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new qd("can't match cohort without a given cohort property value");return i==="AND"}function TQc(e){try{return new RegExp(e),!0}catch{return!1}}function HO(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new qd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>{if(c===void 0||c==="")return 0;if(!/^\d+$/.test(c))throw new qd(`Invalid semver: ${e}`);return parseInt(c,10)},o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function QV(e,t){for(let r=0;r<3;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return 0}function V4d(e){let t=HO(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function q4d(e){let t=HO(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 G4d(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new qd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=parseInt(n[0],10);if(isNaN(i))throw new qd(`Invalid wildcard semver: ${e}`);let o,s;if(n.length===1)o=[i,0,0],s=[i+1,0,0];else{let a=parseInt(n[1],10);if(isNaN(a))throw new qd(`Invalid wildcard semver: ${e}`);o=[i,a,0],s=[i,a+1,0]}return{lower:o,upper:s}}function BQc(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 qd(`${e} is in an invalid date format`)}throw new qd(`The date provided ${e} must be a string, number, or date object`)}function W4d(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 T7r=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var H4d=100,RQc=3e4,K4d=5e4,J4d=50,Y4d=500,B7r=class extends L_t{constructor(t,r={}){if(super(t,r),this._memoryStorage=new T7r,this.options=r,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof r.featureFlagsPollingInterval=="number"?Math.max(r.featureFlagsPollingInterval,H4d):RQc,typeof r.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(r.waitUntilDebounceMs,0)),typeof r.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(r.waitUntilMaxWaitMs,0)),r.personalApiKey){if(r.personalApiKey.includes("phc_"))throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');r.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new S7r({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:r.personalApiKey,projectApiKey:t,timeout:r.requestTimeout??1e4,host:this.host,fetch:r.fetch,onError:i=>{this._events.emit("error",i)},onLoad:i=>{this._events.emit("localEvaluationFlagsLoaded",i)},customHeaders:this.getCustomHeaders(),cacheProvider:r.flagDefinitionCacheProvider,strictLocalEvaluation:r.strictLocalEvaluation}))}this.errorTracking=new aH(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||K4d}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??Y4d,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??J4d;this._waitUntilCycle.timer=wfe(()=>{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 wQc}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}capture(t){typeof t=="string"&&this._logger.warn("Called capture() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStateless(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}async captureImmediate(t){return typeof t=="string"&&this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStatelessImmediate(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}identify({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};super.identifyStateless(t,l,{disableGeoip:n})}async identifyImmediate({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};super.identifyStatelessImmediate(t,l,{disableGeoip:n})}alias(t){super.aliasStateless(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}async aliasImmediate(t){await super.aliasStatelessImmediate(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(t=RQc){return this.isLocalEvaluationReady()?!0:this.featureFlagsPoller===void 0?!1:new Promise(r=>{let n=setTimeout(()=>{i(),r(!1)},t),i=this._events.on("localEvaluationFlagsLoaded",o=>{clearTimeout(n),i(),r(o>0)})})}_resolveDistinctId(t,r){return typeof t=="string"?{distinctId:t,options:r}:{distinctId:this.context?.get()?.distinctId,options:t}}async _getFeatureFlagResult(t,r,n={},i){let o=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&t in this._flagOverrides){let B=this._flagOverrides[t];if(B===void 0)return;let O=this._payloadOverrides?.[t];return{key:t,enabled:B!==!1,variant:typeof B=="string"?B:void 0,payload:O}}let{groups:s,disableGeoip:a}=n,{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=n,p=this.addLocalPersonAndGroupProperties(r,s,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(r,s,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f,m=!1,h,A,y,I,w,C;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let B=this.featureFlagsPoller?.featureFlagsByKey[t];if(B)try{let O=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(B,d,{matchValue:i});if(O){m=!0;let F=O.value;I=B.id,C="Evaluated locally",f={key:t,enabled:F!==!1,variant:typeof F=="string"?F:void 0,payload:O.payload??void 0}}}catch(O){if(O instanceof pee||O instanceof qd)this._logger?.info(`${O.name} when computing flag locally: ${t}: ${O.message}`);else throw O}}if(!m&&!c){let B=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(B===void 0)y=z_t.UNKNOWN_ERROR;else{h=B.requestId,A=B.evaluatedAt;let O=[];B.errorsWhileComputingFlags&&O.push(z_t.ERRORS_WHILE_COMPUTING),B.quotaLimited?.includes("feature_flags")&&O.push(z_t.QUOTA_LIMITED);let F=B.flags[t];if(F===void 0)O.push(z_t.FLAG_MISSING);else{I=F.metadata?.id,w=F.metadata?.version,C=F.reason?.description??F.reason?.code;let P;if(F.metadata?.payload!==void 0)try{P=JSON.parse(F.metadata.payload)}catch{P=F.metadata.payload}f={key:t,enabled:F.enabled,variant:F.variant,payload:P}}O.length>0&&(y=O.join(","))}}if(o){let B=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,O=`${t}_${B}`;if(!(r in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[r].includes(O)){Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(O):this.distinctIdHasSentFlagCalls[r]=[O];let F={$feature_flag:t,$feature_flag_response:B,$feature_flag_id:I,$feature_flag_version:w,$feature_flag_reason:C,locally_evaluated:m,[`$feature/${t}`]:B,$feature_flag_request_id:h,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let P=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();P!==void 0&&(F.$feature_flag_definitions_loaded_at=P)}y&&(F.$feature_flag_error=y),this.capture({distinctId:r,event:"$feature_flag_called",properties:F,groups:s,disableGeoip:a})}}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(!this.options.personalApiKey)throw new Error("Personal API key is required for remote config payload decryption");let r=await this._requestRemoteConfigPayload(t);if(!r)return;let n=await r.json();if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(t,r,n){let i=await this.getFeatureFlag(t,r,n);if(i!==void 0)return!!i||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},h={},A=!0;if(f&&(m=f.response,h=f.payloads,A=f.fallbackToFlags),A&&!c){let y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...y.flags||{}},h={...h,...y.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(h={...h,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:h}}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){super.groupIdentifyStateless(t,r,n,{disableGeoip:o},i)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(t){let r=n=>Object.fromEntries(n.map(i=>[i,!0]));if(t===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(t)){this._flagOverrides=r(t);return}if(this._isFeatureFlagOverrideOptions(t)){"flags"in t&&(t.flags===!1?this._flagOverrides=void 0:Array.isArray(t.flags)?this._flagOverrides=r(t.flags):t.flags!==void 0&&(this._flagOverrides={...t.flags})),"payloads"in t&&(t.payloads===!1?this._payloadOverrides=void 0:t.payloads!==void 0&&(this._payloadOverrides={...t.payloads}));return}this._flagOverrides={...t}}_isFeatureFlagOverrideOptions(t){if(typeof t!="object"||t===null||Array.isArray(t))return!1;let r=t;if("flags"in r){let n=r.flags;if(n===!1||Array.isArray(n)||typeof n=="object"&&n!==null)return!0}if("payloads"in r){let n=r.payloads;if(n===!1||typeof n=="object"&&n!==null)return!0}return!1}withContext(t,r,n){return this.context?this.context.run(t,r,n):r()}getContext(){return this.context?.get()}enterContext(t,r){this.context?.enter(t,r)}async _shutdown(t){let r=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(t),this.errorTracking.shutdown();try{return await super._shutdown(t)}finally{r?.()}}async _requestRemoteConfigPayload(t){if(!this.options.personalApiKey)return;let r=`${this.host}/api/projects/@current/feature_flags/${t}/remote_config?token=${encodeURIComponent(this.apiKey)}`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},i=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let o=new AbortController;i=wfe(()=>{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(zjc(s)&&r&&o in r){let a={};for(let[c,u]of Object.entries(s))a[String(c)]=String(u);i[String(o)]=a}else n[String(o)]=String(s);return{personProperties:n,groupProperties:i}}async getFeatureFlagsForEvent(t,r,n,i){let o=i?.personProperties||{},s=i?.groupProperties||{},a=i?.flagKeys;if(i?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}else return{};if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}return(await super.getFeatureFlagsStateless(t,r,o,s,n)).flags}addLocalPersonAndGroupProperties(t,r,n,i){let o={distinct_id:t,...n||{}},s={};if(r)for(let a of Object.keys(r))s[a]={$group_key:r[a],...i?.[a]||{}};return{allPersonProperties:o,allGroupProperties:s}}createFeatureFlagEvaluationContext(t,r,n,i){return{distinctId:t,groups:r||{},personProperties:n||{},groupProperties:i||{},evaluationCache:{}}}captureException(t,r,n,i){if(!aH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");this.addPendingPromise(aH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.capture({...s,uuid:i})))}}async captureExceptionImmediate(t,r,n){if(!aH.isPreviouslyCapturedError(t)){let i=new Error("PostHog syntheticException");return this.addPendingPromise(aH.buildEventMessage(t,{syntheticException:i},r,n).then(o=>this.captureImmediate(o)))}}async prepareEventMessage(t){let{distinctId:r,event:n,properties:i,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u}=t,l=this.context?.get(),p=r||l?.distinctId,d={...this.props,...l?.properties||{},...i||{}};p||(p=tCe(),d.$process_person_profile=!1),l?.sessionId&&!d.$session_id&&(d.$session_id=l.sessionId);let f=this._runBeforeSend({distinctId:p,event:n,properties:d,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u});if(!f)return Promise.reject(null);let m=await Promise.resolve().then(async()=>{if(s){let h=typeof s=="object"?s:void 0;return await this.getFeatureFlagsForEvent(f.distinctId,o,c,h)}return f.event,{}}).then(h=>{let A={};if(h)for(let[I,w]of Object.entries(h))A[`$feature/${I}`]=w;let y=Object.keys(h||{}).filter(I=>h?.[I]!==!1).sort();return y.length>0&&(A.$active_feature_flags=y),A}).catch(()=>({})).then(h=>({...h,...f.properties||{},$groups:f.groups||o}));return f.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof m.$raw_user_agent=="string"&&Njc(m.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(f.event="$bot_pageview",m.$browser_type="bot"),{distinctId:f.distinctId,event:f.event,properties:m,options:{timestamp:f.timestamp,disableGeoip:f.disableGeoip,uuid:f.uuid}}}_runBeforeSend(t){let r=this.options.before_send;if(!r)return t;let n=Array.isArray(r)?r:[r],i=t;for(let o of n){if(i=o(i),!i)return this._logger.info(`Event '${t.event}' was rejected in beforeSend function`),null;if(!i.properties||Object.keys(i.properties).length===0){let s=`Event '${i.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}return i}};var FQc=require("async_hooks"),O7r=class{constructor(){this.storage=new FQc.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 kQc="posthog-node";function X4d(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[iSo.POSTHOG_ID_TAG];if(c===void 0)return s;let u=e.options.host??"https://us.i.posthog.com",l=new URL(`/project/${e.apiKey}/person/${c}`,u).toString();s.tags["PostHog Person URL"]=l;let p=s.exception?.values||[],d=p.map(m=>({...m,stacktrace:m.stacktrace?{...m.stacktrace,type:"raw",frames:(m.stacktrace.frames||[]).map(h=>({...h,platform:"node:javascript"}))}:void 0})),f={$exception_message:p[0]?.value||s.message,$exception_type:p[0]?.type,$exception_level:s.level,$exception_list:d,$sentry_event_id:s.event_id,$sentry_exception:s.exception,$sentry_exception_message:p[0]?.value||s.message,$sentry_exception_type:p[0]?.type,$sentry_tags:s.tags};return t&&r&&(f.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+s.event_id),o&&e.capture({event:"$exception",distinctId:c,properties:f}),s}}var iSo=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=kQc,this.name=kQc,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(X4d(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};aH.errorPropertiesBuilder=new l6.ErrorPropertiesBuilder([new l6.EventCoercer,new l6.ErrorCoercer,new l6.ObjectCoercer,new l6.StringCoercer,new l6.PrimitiveCoercer],l6.createStackParser("node:javascript",l6.nodeStackLineParser),[Pjc(),bQc]);var rCe=class extends B7r{getLibraryId(){return"posthog-node"}initializeContext(){return new O7r}};var P7r=class{posthog;constructor({posthogApiKey:t}){this.posthog=new rCe(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.27.2",usingAccessToken:!0,...Kae()}})}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 U_t=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};or();var Sot=require("fs/promises"),NQc=require("os"),jQc=require("path");var Z4d="id",$4d=".fern",__t=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new rCe(r),this.userId=t==null?void 0:y0o(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.27.2",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...Kae()}})}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 Wf({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=nt(Yt.of((0,NQc.homedir)()),ke.of($4d),ke.of(Z4d));await cr(t)||(await(0,Sot.mkdir)((0,jQc.dirname)(t),{recursive:!0}),await(0,Sot.writeFile)(t,KQ())),this.persistedDistinctId=(await(0,Sot.readFile)(t)).toString()}return this.persistedDistinctId}};var oSo;async function V_t(){return oSo==null&&(oSo=await eUd()),oSo}async function eUd(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new U_t;let r=await knt();return r!=null?new __t({token:r,posthogApiKey:e}):await vV()!=null?new P7r({posthogApiKey:e}):new __t({token:void 0,posthogApiKey:e})}catch{return new U_t}}jt();_t();var q_t=we(require("process"),1);JGe();var LQc=we(Efo(),1),zQc=we(MQc(),1);function uT(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=VG(e),e.length===0))return 0;e=e.replace((0,zQc.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(LQc.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}function D7r(e){let t=0;for(let r of e.split(`
3226
+ `);for(let s=n;s<o.length;s++){let a=o[s];if(a.length>1024)continue;let c=uQc.test(a)?a.replace(uQc,"$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>=lQc)break}}return pQc(i)}}var Kxo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=j_t(t.stack);return{type:this.getType(t),value:this.getValue(t),stack:n?t.stack:void 0,cause:t.cause?r.next(t.cause):void 0,synthetic:!1}}getType(t){return this.isDOMError(t)?"DOMError":"DOMException"}getValue(t){let r=t.name||(this.isDOMError(t)?"DOMError":"DOMException");return t.message?`${r}: ${t.message}`:r}isDOMException(t){return tze(t,"DOMException")}isDOMError(t){return tze(t,"DOMError")}};var Jxo=class{match(t){return Qxo(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 Yxo=class{constructor(){}match(t){return Ljc(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 x4d=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,Xxo=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(x4d);return i&&(r=i[1],n=i[2]),[r,n]}};var dQc=["fatal","error","warning","log","info","debug"];function w7r(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 Zxo=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 vot(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=w7r(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return j_t(t)&&!Qjc(t)&&dQc.indexOf(t)>=0}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if($jc(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var $xo=class{match(t){return vot(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${w7r(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var eSo=class{match(t){return f7r(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var tSo=class{match(t){return tze(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!vot(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 f7r(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 rSo=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 gQc=require("fs"),AQc=require("readline"),x7r=new l6.ReduceableCache(25),yQc=new l6.ReduceableCache(20),nSo=7,S4d=1e3,T4d=1e4;async function bQc(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"||D4d(s)||R4d(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(yQc.get(i))continue;let o=t[i];if(!o)continue;o.sort((c,u)=>c-u);let s=k4d(o);if(s.every(c=>F4d(i,c)))continue;let a=N4d(x7r,i,{});n.push(B4d(i,s,a))}return await Promise.all(n).catch(()=>{}),e&&e.length>0&&O4d(e,x7r),x7r.reduce(),e}function B4d(e,t,r){return new Promise(n=>{let i=(0,gQc.createReadStream)(e),o=(0,AQc.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(){yQc.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]=j4d(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 O4d(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;P4d(r.lineno,r,n)}}function P4d(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=EQc(e);i<e;i++){let o=r[i];if(o===void 0)return void mQc(t);t.pre_context.push(o)}if(r[e]===void 0)return void mQc(t);t.context_line=r[e];let n=vQc(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 mQc(e){delete e.pre_context,delete e.context_line,delete e.post_context}function D4d(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function R4d(e){return e.lineno!==void 0&&e.lineno>T4d||e.colno!==void 0&&e.colno>S4d}function F4d(e,t){let r=x7r.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 k4d(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=hQc(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+nSo:(i.push(n),n=hQc(o)),t++}return i}function hQc(e){return[EQc(e),vQc(e)]}function EQc(e){return Math.max(1,e-nSo)}function vQc(e){return e+nSo}function N4d(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function j4d(e,t){let r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);let i=Math.max(t-60,0);i<5&&(i=0);let o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r=`...${r}`),o<n&&(r+="..."),r}function Q4d(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 IQc(e,t){globalThis.process?.on("uncaughtException",Q4d(e,t))}function CQc(e){globalThis.process?.on("unhandledRejection",t=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var M4d=2e3,aH=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new d7r({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return jxo(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()&&(IQc(this.onException.bind(this),this.onFatalError.bind(this)),CQc(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(M4d),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};var wQc="5.29.1";var z_t={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};async function xQc(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 L4d=6e4,z4d=1152921504606847e3,U4d=["is_not"],xot=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}},qd=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},pee=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},S7r=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 pee||u instanceof qd?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 pee||u instanceof qd?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${c.key}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${c.key}: ${u}`)),o=!0}})),{response:n,payloads:i,fallbackToFlags:o}}async computeFlagAndPayloadLocally(t,r,n={}){let{matchValue:i,skipLoadCheck:o=!1}=n;if(o||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=i!==void 0?i:await this.computeFlagValueLocally(t,r);let a=this.getFeatureFlagPayload(t.key,s);return{value:s,payload:a}}async computeFlagValueLocally(t,r){let{distinctId:n,groups:i,personProperties:o,groupProperties:s}=r;if(t.ensure_experience_continuity)throw new qd("Flag has experience continuity enabled");if(!t.active)return!1;let c=(t.filters||{}).aggregation_group_type_index;if(c!=null){let u=this.groupTypeMapping[String(c)];if(!u)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${c} for feature flag ${t.key}`)),new qd("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 qd(`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 qd("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new qd(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new qd(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new qd(`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 qd(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else throw new qd(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new qd(`Dependency '${c}' could not be evaluated`)}let a=i[o];return this.flagEvaluatesToExpectedValue(t.value,a)}flagEvaluatesToExpectedValue(t,r){return typeof t=="boolean"?t===r||typeof r=="string"&&r!==""&&t===!0:typeof t=="string"?r===t:!1}async matchFeatureFlagProperties(t,r,n,i){let o=t.filters||{},s=o.groups||[],a=!1,c;for(let u of s)try{if(await this.isConditionMatch(t,r,u,n,i)){let l=u.variant,p=o.multivariate?.variants||[];c=l&&p.some(d=>d.key===l)?l:await this.getMatchingVariant(t,r)||!0;break}}catch(l){if(l instanceof pee)throw l;if(l instanceof qd)a=!0;else throw l}if(c!==void 0)return c;if(a)throw new qd("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"?PQc(c,i,this.cohorts,this.debugMode):u==="flag"?await this.evaluateFlagDependency(c,i,o):OQc(c,i,a),!l)return!1}if(s==null)return!0}return!(s!=null&&await SQc(t.key,r)>s/100)}async getMatchingVariant(t,r){let n=await SQc(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(L4d,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 xot(`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 xot(`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 xot(`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 xot&&this.onError?.(t)}}getPersonalApiKeyRequestOptions(t="GET",r){let n={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};return r&&(n["If-None-Match"]=r),{method:t,headers:n}}_requestFeatureFlagDefinitions(){let t=`${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`,r=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;n=wfe(()=>{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 SQc(e,t,r=""){let n=await xQc(`${e}.${t}${r}`);return parseInt(n.slice(0,15),16)/z4d}function OQc(e,t,r){let n=e.key,i=e.value,o=e.operator||"exact";if(n in t){if(o==="is_not_set")throw new qd("Operator is_not_set is not supported")}else throw new qd(`Property ${n} not found in propertyValues`);let s=t[n];if(s==null&&!U4d.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 TQc(String(i))&&String(s).match(String(i))!==null;case"not_regex":return TQc(String(i))&&String(s).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof i=="number"?i:null;if(typeof i=="string")try{u=parseFloat(i)}catch{}return u==null||s==null?c(String(s),String(i),o):typeof s=="string"?c(s,String(i),o):c(s,u,o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new qd("Date operations cannot be performed on boolean values");let u=W4d(String(i));if(u==null&&(u=BQc(i)),u==null)throw new qd(`Invalid date: ${i}`);let l=BQc(s);return["is_date_before"].includes(o)?l<u:l>u}case"semver_eq":return QV(HO(String(s)),HO(String(i)))===0;case"semver_neq":return QV(HO(String(s)),HO(String(i)))!==0;case"semver_gt":return QV(HO(String(s)),HO(String(i)))>0;case"semver_gte":return QV(HO(String(s)),HO(String(i)))>=0;case"semver_lt":return QV(HO(String(s)),HO(String(i)))<0;case"semver_lte":return QV(HO(String(s)),HO(String(i)))<=0;case"semver_tilde":{let u=HO(String(s)),{lower:l,upper:p}=V4d(String(i));return QV(u,l)>=0&&QV(u,p)<0}case"semver_caret":{let u=HO(String(s)),{lower:l,upper:p}=q4d(String(i));return QV(u,l)>=0&&QV(u,p)<0}case"semver_wildcard":{let u=HO(String(s)),{lower:l,upper:p}=G4d(String(i));return QV(u,l)>=0&&QV(u,p)<0}default:throw new qd(`Unknown operator: ${o}`)}}function _4d(e,t){if(!(e in t))throw new pee(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function PQc(e,t,r,n=!1){let i=String(e.value);_4d(i,r);let o=r[i];return DQc(o,t,r,n)}function DQc(e,t,r,n=!1){if(!e)return!0;let i=e.type,o=e.values;if(!o||o.length===0)return!0;let s=!1;if("values"in o[0]){for(let a of o)try{let c=DQc(a,t,r,n);if(i==="AND"){if(!c)return!1}else if(c)return!0}catch(c){if(c instanceof pee)throw c;if(c instanceof qd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new qd("Can't match cohort without a given cohort property value");return i==="AND"}for(let a of o)try{let c;if(a.type==="cohort")c=PQc(a,t,r,n);else if(a.type==="flag"){n&&console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${a.key||"unknown"}'`);continue}else c=OQc(a,t);let u=a.negation||!1;if(i==="AND"){if(!c&&!u||c&&u)return!1}else if(c&&!u||!c&&u)return!0}catch(c){if(c instanceof pee)throw c;if(c instanceof qd)n&&console.debug(`Failed to compute property ${a} locally: ${c}`),s=!0;else throw c}if(s)throw new qd("can't match cohort without a given cohort property value");return i==="AND"}function TQc(e){try{return new RegExp(e),!0}catch{return!1}}function HO(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new qd(`Invalid semver: ${e}`);let n=r.split("."),i=c=>{if(c===void 0||c==="")return 0;if(!/^\d+$/.test(c))throw new qd(`Invalid semver: ${e}`);return parseInt(c,10)},o=i(n[0]),s=i(n[1]),a=i(n[2]);return[o,s,a]}function QV(e,t){for(let r=0;r<3;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return 0}function V4d(e){let t=HO(e),r=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:r,upper:n}}function q4d(e){let t=HO(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 G4d(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new qd(`Invalid wildcard semver: ${e}`);let n=r.split("."),i=parseInt(n[0],10);if(isNaN(i))throw new qd(`Invalid wildcard semver: ${e}`);let o,s;if(n.length===1)o=[i,0,0],s=[i+1,0,0];else{let a=parseInt(n[1],10);if(isNaN(a))throw new qd(`Invalid wildcard semver: ${e}`);o=[i,a,0],s=[i,a+1,0]}return{lower:o,upper:s}}function BQc(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 qd(`${e} is in an invalid date format`)}throw new qd(`The date provided ${e} must be a string, number, or date object`)}function W4d(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 T7r=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};var H4d=100,RQc=3e4,K4d=5e4,J4d=50,Y4d=500,B7r=class extends L_t{constructor(t,r={}){if(super(t,r),this._memoryStorage=new T7r,this.options=r,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof r.featureFlagsPollingInterval=="number"?Math.max(r.featureFlagsPollingInterval,H4d):RQc,typeof r.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(r.waitUntilDebounceMs,0)),typeof r.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(r.waitUntilMaxWaitMs,0)),r.personalApiKey){if(r.personalApiKey.includes("phc_"))throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');r.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new S7r({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:r.personalApiKey,projectApiKey:t,timeout:r.requestTimeout??1e4,host:this.host,fetch:r.fetch,onError:i=>{this._events.emit("error",i)},onLoad:i=>{this._events.emit("localEvaluationFlagsLoaded",i)},customHeaders:this.getCustomHeaders(),cacheProvider:r.flagDefinitionCacheProvider,strictLocalEvaluation:r.strictLocalEvaluation}))}this.errorTracking=new aH(this,r,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=r.maxCacheSize||K4d}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??Y4d,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??J4d;this._waitUntilCycle.timer=wfe(()=>{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 wQc}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}capture(t){typeof t=="string"&&this._logger.warn("Called capture() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStateless(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}async captureImmediate(t){return typeof t=="string"&&this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected."),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this.addPendingPromise(this.prepareEventMessage(t).then(({distinctId:r,event:n,properties:i,options:o})=>super.captureStatelessImmediate(r,n,i,{timestamp:o.timestamp,disableGeoip:o.disableGeoip,uuid:o.uuid})).catch(r=>{r&&console.error(r)}))}identify({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};super.identifyStateless(t,l,{disableGeoip:n})}async identifyImmediate({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};super.identifyStatelessImmediate(t,l,{disableGeoip:n})}alias(t){super.aliasStateless(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}async aliasImmediate(t){await super.aliasStatelessImmediate(t.alias,t.distinctId,void 0,{disableGeoip:t.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(t=RQc){return this.isLocalEvaluationReady()?!0:this.featureFlagsPoller===void 0?!1:new Promise(r=>{let n=setTimeout(()=>{i(),r(!1)},t),i=this._events.on("localEvaluationFlagsLoaded",o=>{clearTimeout(n),i(),r(o>0)})})}_resolveDistinctId(t,r){return typeof t=="string"?{distinctId:t,options:r}:{distinctId:this.context?.get()?.distinctId,options:t}}async _getFeatureFlagResult(t,r,n={},i){let o=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&t in this._flagOverrides){let B=this._flagOverrides[t];if(B===void 0)return;let O=this._payloadOverrides?.[t];return{key:t,enabled:B!==!1,variant:typeof B=="string"?B:void 0,payload:O}}let{groups:s,disableGeoip:a}=n,{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=n,p=this.addLocalPersonAndGroupProperties(r,s,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(r,s,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f,m=!1,h,A,y,I,w,C;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let B=this.featureFlagsPoller?.featureFlagsByKey[t];if(B)try{let O=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(B,d,{matchValue:i});if(O){m=!0;let F=O.value;I=B.id,C="Evaluated locally",f={key:t,enabled:F!==!1,variant:typeof F=="string"?F:void 0,payload:O.payload??void 0}}}catch(O){if(O instanceof pee||O instanceof qd)this._logger?.info(`${O.name} when computing flag locally: ${t}: ${O.message}`);else throw O}}if(!m&&!c){let B=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,[t]);if(B===void 0)y=z_t.UNKNOWN_ERROR;else{h=B.requestId,A=B.evaluatedAt;let O=[];B.errorsWhileComputingFlags&&O.push(z_t.ERRORS_WHILE_COMPUTING),B.quotaLimited?.includes("feature_flags")&&O.push(z_t.QUOTA_LIMITED);let F=B.flags[t];if(F===void 0)O.push(z_t.FLAG_MISSING);else{I=F.metadata?.id,w=F.metadata?.version,C=F.reason?.description??F.reason?.code;let P;if(F.metadata?.payload!==void 0)try{P=JSON.parse(F.metadata.payload)}catch{P=F.metadata.payload}f={key:t,enabled:F.enabled,variant:F.variant,payload:P}}O.length>0&&(y=O.join(","))}}if(o){let B=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,O=`${t}_${B}`;if(!(r in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[r].includes(O)){Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[r])?this.distinctIdHasSentFlagCalls[r].push(O):this.distinctIdHasSentFlagCalls[r]=[O];let F={$feature_flag:t,$feature_flag_response:B,$feature_flag_id:I,$feature_flag_version:w,$feature_flag_reason:C,locally_evaluated:m,[`$feature/${t}`]:B,$feature_flag_request_id:h,$feature_flag_evaluated_at:m?Date.now():A};if(m&&this.featureFlagsPoller){let P=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();P!==void 0&&(F.$feature_flag_definitions_loaded_at=P)}y&&(F.$feature_flag_error=y),this.capture({distinctId:r,event:"$feature_flag_called",properties:F,groups:s,disableGeoip:a})}}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(!this.options.personalApiKey)throw new Error("Personal API key is required for remote config payload decryption");let r=await this._requestRemoteConfigPayload(t);if(!r)return;let n=await r.json();if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(t,r,n){let i=await this.getFeatureFlag(t,r,n);if(i!==void 0)return!!i||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,u,l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},h={},A=!0;if(f&&(m=f.response,h=f.payloads,A=f.fallbackToFlags),A&&!c){let y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,s,a);m={...m,...y.flags||{}},h={...h,...y.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(h={...h,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:h}}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){super.groupIdentifyStateless(t,r,n,{disableGeoip:o},i)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(t){let r=n=>Object.fromEntries(n.map(i=>[i,!0]));if(t===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(t)){this._flagOverrides=r(t);return}if(this._isFeatureFlagOverrideOptions(t)){"flags"in t&&(t.flags===!1?this._flagOverrides=void 0:Array.isArray(t.flags)?this._flagOverrides=r(t.flags):t.flags!==void 0&&(this._flagOverrides={...t.flags})),"payloads"in t&&(t.payloads===!1?this._payloadOverrides=void 0:t.payloads!==void 0&&(this._payloadOverrides={...t.payloads}));return}this._flagOverrides={...t}}_isFeatureFlagOverrideOptions(t){if(typeof t!="object"||t===null||Array.isArray(t))return!1;let r=t;if("flags"in r){let n=r.flags;if(n===!1||Array.isArray(n)||typeof n=="object"&&n!==null)return!0}if("payloads"in r){let n=r.payloads;if(n===!1||typeof n=="object"&&n!==null)return!0}return!1}withContext(t,r,n){return this.context?this.context.run(t,r,n):r()}getContext(){return this.context?.get()}enterContext(t,r){this.context?.enter(t,r)}async _shutdown(t){let r=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(t),this.errorTracking.shutdown();try{return await super._shutdown(t)}finally{r?.()}}async _requestRemoteConfigPayload(t){if(!this.options.personalApiKey)return;let r=`${this.host}/api/projects/@current/feature_flags/${t}/remote_config?token=${encodeURIComponent(this.apiKey)}`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},i=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let o=new AbortController;i=wfe(()=>{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(zjc(s)&&r&&o in r){let a={};for(let[c,u]of Object.entries(s))a[String(c)]=String(u);i[String(o)]=a}else n[String(o)]=String(s);return{personProperties:n,groupProperties:i}}async getFeatureFlagsForEvent(t,r,n,i){let o=i?.personProperties||{},s=i?.groupProperties||{},a=i?.flagKeys;if(i?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}else return{};if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}return(await super.getFeatureFlagsStateless(t,r,o,s,n)).flags}addLocalPersonAndGroupProperties(t,r,n,i){let o={distinct_id:t,...n||{}},s={};if(r)for(let a of Object.keys(r))s[a]={$group_key:r[a],...i?.[a]||{}};return{allPersonProperties:o,allGroupProperties:s}}createFeatureFlagEvaluationContext(t,r,n,i){return{distinctId:t,groups:r||{},personProperties:n||{},groupProperties:i||{},evaluationCache:{}}}captureException(t,r,n,i){if(!aH.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");this.addPendingPromise(aH.buildEventMessage(t,{syntheticException:o},r,n).then(s=>this.capture({...s,uuid:i})))}}async captureExceptionImmediate(t,r,n){if(!aH.isPreviouslyCapturedError(t)){let i=new Error("PostHog syntheticException");return this.addPendingPromise(aH.buildEventMessage(t,{syntheticException:i},r,n).then(o=>this.captureImmediate(o)))}}async prepareEventMessage(t){let{distinctId:r,event:n,properties:i,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u}=t,l=this.context?.get(),p=r||l?.distinctId,d={...this.props,...l?.properties||{},...i||{}};p||(p=tCe(),d.$process_person_profile=!1),l?.sessionId&&!d.$session_id&&(d.$session_id=l.sessionId);let f=this._runBeforeSend({distinctId:p,event:n,properties:d,groups:o,sendFeatureFlags:s,timestamp:a,disableGeoip:c,uuid:u});if(!f)return Promise.reject(null);let m=await Promise.resolve().then(async()=>{if(s){let h=typeof s=="object"?s:void 0;return await this.getFeatureFlagsForEvent(f.distinctId,o,c,h)}return f.event,{}}).then(h=>{let A={};if(h)for(let[I,w]of Object.entries(h))A[`$feature/${I}`]=w;let y=Object.keys(h||{}).filter(I=>h?.[I]!==!1).sort();return y.length>0&&(A.$active_feature_flags=y),A}).catch(()=>({})).then(h=>({...h,...f.properties||{},$groups:f.groups||o}));return f.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof m.$raw_user_agent=="string"&&Njc(m.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(f.event="$bot_pageview",m.$browser_type="bot"),{distinctId:f.distinctId,event:f.event,properties:m,options:{timestamp:f.timestamp,disableGeoip:f.disableGeoip,uuid:f.uuid}}}_runBeforeSend(t){let r=this.options.before_send;if(!r)return t;let n=Array.isArray(r)?r:[r],i=t;for(let o of n){if(i=o(i),!i)return this._logger.info(`Event '${t.event}' was rejected in beforeSend function`),null;if(!i.properties||Object.keys(i.properties).length===0){let s=`Event '${i.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}return i}};var FQc=require("async_hooks"),O7r=class{constructor(){this.storage=new FQc.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 kQc="posthog-node";function X4d(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[iSo.POSTHOG_ID_TAG];if(c===void 0)return s;let u=e.options.host??"https://us.i.posthog.com",l=new URL(`/project/${e.apiKey}/person/${c}`,u).toString();s.tags["PostHog Person URL"]=l;let p=s.exception?.values||[],d=p.map(m=>({...m,stacktrace:m.stacktrace?{...m.stacktrace,type:"raw",frames:(m.stacktrace.frames||[]).map(h=>({...h,platform:"node:javascript"}))}:void 0})),f={$exception_message:p[0]?.value||s.message,$exception_type:p[0]?.type,$exception_level:s.level,$exception_list:d,$sentry_event_id:s.event_id,$sentry_exception:s.exception,$sentry_exception_message:p[0]?.value||s.message,$sentry_exception_type:p[0]?.type,$sentry_tags:s.tags};return t&&r&&(f.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+s.event_id),o&&e.capture({event:"$exception",distinctId:c,properties:f}),s}}var iSo=class{static#e=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(t,r,n,i,o){this.name=kQc,this.name=kQc,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(X4d(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};aH.errorPropertiesBuilder=new l6.ErrorPropertiesBuilder([new l6.EventCoercer,new l6.ErrorCoercer,new l6.ObjectCoercer,new l6.StringCoercer,new l6.PrimitiveCoercer],l6.createStackParser("node:javascript",l6.nodeStackLineParser),[Pjc(),bQc]);var rCe=class extends B7r{getLibraryId(){return"posthog-node"}initializeContext(){return new O7r}};var P7r=class{posthog;constructor({posthogApiKey:t}){this.posthog=new rCe(t)}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.27.3",usingAccessToken:!0,...Kae()}})}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 U_t=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};or();var Sot=require("fs/promises"),NQc=require("os"),jQc=require("path");var Z4d="id",$4d=".fern",__t=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new rCe(r),this.userId=t==null?void 0:y0o(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.27.3",...t,...t.properties,usingAccessToken:!1,...r!=null?{userEmail:r}:{},...Kae()}})}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 Wf({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=nt(Yt.of((0,NQc.homedir)()),ke.of($4d),ke.of(Z4d));await cr(t)||(await(0,Sot.mkdir)((0,jQc.dirname)(t),{recursive:!0}),await(0,Sot.writeFile)(t,KQ())),this.persistedDistinctId=(await(0,Sot.readFile)(t)).toString()}return this.persistedDistinctId}};var oSo;async function V_t(){return oSo==null&&(oSo=await eUd()),oSo}async function eUd(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal",t=process.env.FERN_DISABLE_TELEMETRY==="true";if(e==null||t)return new U_t;let r=await knt();return r!=null?new __t({token:r,posthogApiKey:e}):await vV()!=null?new P7r({posthogApiKey:e}):new __t({token:void 0,posthogApiKey:e})}catch{return new U_t}}jt();_t();var q_t=we(require("process"),1);JGe();var LQc=we(Efo(),1),zQc=we(MQc(),1);function uT(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=VG(e),e.length===0))return 0;e=e.replace((0,zQc.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(LQc.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}function D7r(e){let t=0;for(let r of e.split(`
3227
3227
  `))t=Math.max(t,uT(r));return t}var s6c=we(aSo(),1);var rUd=/[\p{Lu}]/u,nUd=/[\p{Ll}]/u,VQc=/^[\p{Lu}](?![\p{Lu}])/gu,WQc=/([\p{Alpha}\p{N}_]|$)/u,cSo=/[_.\- ]+/,iUd=new RegExp("^"+cSo.source),qQc=new RegExp(cSo.source+WQc.source,"gu"),GQc=new RegExp("\\d+"+WQc.source,"gu"),oUd=(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&&rUd.test(u)?(e=e.slice(0,c)+"-"+e.slice(c),i=!1,s=o,o=!0,c++):o&&s&&nUd.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},sUd=(e,t)=>(VQc.lastIndex=0,e.replace(VQc,r=>t(r))),aUd=(e,t)=>(qQc.lastIndex=0,GQc.lastIndex=0,e.replace(qQc,(r,n)=>t(n)).replace(GQc,r=>t(r)));function uSo(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?cSo.test(e)?"":t.pascalCase?n(e):r(e):(e!==r(e)&&(e=oUd(e,r,n,t.preserveConsecutiveUppercase)),e=e.replace(iUd,""),e=t.preserveConsecutiveUppercase?sUd(e,r):r(e),t.pascalCase&&(e=n(e.charAt(0))+e.slice(1)),aUd(e,n))}var dSo=we(KQc(),1);JGe();var JQc=(e=0)=>t=>`\x1B[${t+e}m`,YQc=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,XQc=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,iE={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]}},R$0=Object.keys(iE.modifier),pUd=Object.keys(iE.color),fUd=Object.keys(iE.bgColor),F$0=[...pUd,...fUd];function dUd(){let e=new Map;for(let[t,r]of Object.entries(iE)){for(let[n,i]of Object.entries(r))iE[n]={open:`\x1B[${i[0]}m`,close:`\x1B[${i[1]}m`},r[n]=iE[n],e.set(i[0],i[1]);Object.defineProperty(iE,t,{value:r,enumerable:!1})}return Object.defineProperty(iE,"codes",{value:e,enumerable:!1}),iE.color.close="\x1B[39m",iE.bgColor.close="\x1B[49m",iE.color.ansi=JQc(),iE.color.ansi256=YQc(),iE.color.ansi16m=XQc(),iE.bgColor.ansi=JQc(10),iE.bgColor.ansi256=YQc(10),iE.bgColor.ansi16m=XQc(10),Object.defineProperties(iE,{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=>iE.rgbToAnsi256(...iE.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)=>iE.ansi256ToAnsi(iE.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>iE.ansi256ToAnsi(iE.hexToAnsi256(t)),enumerable:!1}}),iE}var mUd=dUd(),ZQc=mUd;var R7r=new Set(["\x1B","\x9B"]),hUd=39,pSo="\x07",t6c="[",gUd="]",r6c="m",fSo=`${gUd}8;;`,$Qc=e=>`${R7r.values().next().value}${t6c}${e}${r6c}`,e6c=e=>`${R7r.values().next().value}${fSo}${e}${pSo}`,AUd=e=>e.split(" ").map(t=>uT(t)),lSo=(e,t,r)=>{let n=[...t],i=!1,o=!1,s=uT(VG(e[e.length-1]));for(let[a,c]of n.entries()){let u=uT(c);if(s+u<=r?e[e.length-1]+=c:(e.push(c),s=0),R7r.has(c)&&(i=!0,o=n.slice(a+1).join("").startsWith(fSo)),i){o?c===pSo&&(i=!1,o=!1):c===r6c&&(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())},yUd=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(uT(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},bUd=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i,o,s=AUd(e),a=[""];for(let[u,l]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let p=uT(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(""),lSo(a,l,t);continue}if(p+s[u]>t&&p>0&&s[u]>0){if(r.wordWrap===!1&&p<t){lSo(a,l,t);continue}a.push("")}if(p+s[u]>t&&r.wordWrap===!1){lSo(a,l,t);continue}a[a.length-1]+=l}r.trim!==!1&&(a=a.map(u=>yUd(u)));let c=[...a.join(`
3228
3228
  `)];for(let[u,l]of c.entries()){if(n+=l,R7r.has(l)){let{groups:d}=new RegExp(`(?:\\${t6c}(?<code>\\d+)m|\\${fSo}(?<uri>.*)${pSo})`).exec(c.slice(u).join(""))||{groups:{}};if(d.code!==void 0){let f=Number.parseFloat(d.code);i=f===hUd?void 0:f}else d.uri!==void 0&&(o=d.uri.length===0?void 0:d.uri)}let p=ZQc.codes.get(Number(i));c[u+1]===`
3229
3229
  `?(o&&(n+=e6c("")),i&&p&&(n+=$Qc(p))):l===`
@@ -3810,7 +3810,7 @@ Hint: Values starting with "@" (such as scoped npm packages) must be wrapped in
3810
3810
  Add a 'docs:' section to your fern.yml to get started.`,code:j.Code.ConfigError});let o=await new BPe({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&&aOm(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 j({code:j.Code.ValidationError});return}if(c.length>0)for(let p of c){let d=p.severity==="warning"?Ee.yellow:Ee.red;process.stderr.write(`${d(`${p.displayRelativeFilepath}:${p.line}:${p.column}: ${p.message}`)}
3811
3811
  `)}let l=0;if(o.mdxParseErrors.length>0){for(let p of o.mdxParseErrors)t.stderr.info(`
3812
3812
  ${p.toString()}
3813
- `);r.fix?l+=await N$n(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!AYn()&&await j$n(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new B0t({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new j({code:j.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${tn.warning} ${Ee.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(Ee.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${tn.success} ${Ee.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=>gee(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 aOm(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 zUo(e){let t=new LUo;Ki(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}))}D0();_t();var Duu=we(require("net"),1),Ruu=we(require("os"),1),L$n=class extends Error{constructor(t){super(`${t} is locked`)}},R0t={old:new Set,young:new Set},cOm=1e3*15,Fuu=new Set;var Bqt,uOm=()=>{let e=Ruu.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},Ouu=e=>new Promise((t,r)=>{let n=Duu.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),Puu=async(e,t)=>{if(e.host||e.port===0)return Ouu(e);for(let r of t)try{await Ouu({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},lOm=e=>R0t.old.has(e)||R0t.young.has(e)||Fuu.has(e),pOm=function*(e){e&&(yield*e),yield 0};async function PPe(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??{};Bqt===void 0&&(Bqt=setTimeout(()=>{Bqt=void 0,R0t.old=R0t.young,R0t.young=new Set},cOm),Bqt.unref&&Bqt.unref());let o=uOm();for(let s of pOm(t))try{if(r.has(s))continue;let a=await Puu({...i,port:s},o);for(;lOm(a);){if(s!==0)throw new L$n(s);a=await Puu({...i,port:s},o)}return n?Fuu.add(a):R0t.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof L$n))throw a}throw new Error("No available ports found")}_t();var juu=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,kuu="docs.buildwithfern.com",Nuu=62;function cUe(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)),juu.test(t)}function Quu(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function Oqt({orgId:e,previewId:t}){let r=Quu(t),n=`${e}-preview-${r}.${kuu}`;if(n.length<=Nuu)return n;let i=`${e}-preview-`,o=Nuu-i.length;if(o<8)throw new j({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:j.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${kuu}`}jt();lg();or();sS();_t();var S8o=require("child_process"),rvu=we(VUo(),1),T8o=we(xei(),1),B8o=we(require("fs"),1),kUe=require("fs/promises"),nvu=we(require("http"),1),D8o=we(require("path"),1);var Nmu=require("events"),Pei=we(require("fs"),1),yUe=we(require("path"),1);var Amu=we(require("os"),1),ymu=300,QPe=20,eGt=1e7,bmu=Amu.default.platform();var SNm=bmu==="darwin",cVo=bmu==="win32",MPe=SNm||cVo,Emu=3e3,vmu=2e4,uVo=1250;var Aie;(function(e){e[e.DIR=1]="DIR",e[e.FILE=2]="FILE"})(Aie||(Aie={}));var AUe;(function(e){e.CHANGE="change",e.RENAME="rename"})(AUe||(AUe={}));var tGt;(function(e){e.CHANGE="change",e.ERROR="error"})(tGt||(tGt={}));var Wc;(function(e){e.ADD="add",e.ADD_DIR="addDir",e.CHANGE="change",e.RENAME="rename",e.RENAME_DIR="renameDir",e.UNLINK="unlink",e.UNLINK_DIR="unlinkDir"})(Wc||(Wc={}));var FN;(function(e){e.ALL="all",e.CLOSE="close",e.ERROR="error",e.READY="ready"})(FN||(FN={}));var TNm=(e,t=1,r)=>{t=Math.max(1,t);let n=r?.leading??!1,i=r?.trailing??!0,o=Math.max(r?.maxWait??1/0,t),s,a,c=0,u=0,l=()=>{let C=Date.now(),x=C-c,B=C-u,O=x>=t||B>=o;return[C,O]},p=C=>{if(u=C,!s)return;let x=s;s=void 0,e.apply(void 0,x)},d=()=>{I(0)},f=()=>{a&&(d(),p(Date.now()))},m=C=>{if(u=C,n)return p(C)},h=C=>{if(i&&s)return p(C);s=void 0},A=()=>{a=void 0;let[C,x]=l();return x?h(C):y(C)},y=C=>{let x=C-c,B=C-u,O=t-x,F=o-B,P=Math.min(O,F);return I(P)},I=C=>{a&&clearTimeout(a),!(C<=0)&&(a=setTimeout(A,C))},w=(...C)=>{let[x,B]=l(),O=!!a;if(s=C,c=x,(B||!a)&&I(t),B)return O?p(x):m(x)};return w.cancel=d,w.flush=f,w},Sei=TNm;var dVo=we(require("fs"),1),Bei=we(require("path"),1);var Hd=we(require("fs"),1),lP=require("util");var Hde=(e,t)=>function(...n){return e.apply(void 0,n).catch(t)},yie=(e,t)=>function(...n){try{return e.apply(void 0,n)}catch(i){return t(i)}};var lVo=we(require("process"),1),Imu=lVo.default.getuid?!lVo.default.getuid():!1,Cmu=1e4,OM=()=>{};var rGt={isChangeErrorOk:e=>{if(!rGt.isNodeError(e))return!1;let{code:t}=e;return t==="ENOSYS"||!Imu&&(t==="EINVAL"||t==="EPERM")},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!rGt.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(!rGt.isNodeError(e))throw e;if(!rGt.isChangeErrorOk(e))throw e}},FC=rGt;var pVo=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=Cmu,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()}}}}},wmu=new pVo;var Kde=(e,t)=>function(n){return function i(...o){return wmu.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)})}},Jde=(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 BNm={attempt:{chmod:Hde((0,lP.promisify)(Hd.default.chmod),FC.onChangeError),chown:Hde((0,lP.promisify)(Hd.default.chown),FC.onChangeError),close:Hde((0,lP.promisify)(Hd.default.close),OM),fsync:Hde((0,lP.promisify)(Hd.default.fsync),OM),mkdir:Hde((0,lP.promisify)(Hd.default.mkdir),OM),realpath:Hde((0,lP.promisify)(Hd.default.realpath),OM),stat:Hde((0,lP.promisify)(Hd.default.stat),OM),unlink:Hde((0,lP.promisify)(Hd.default.unlink),OM),chmodSync:yie(Hd.default.chmodSync,FC.onChangeError),chownSync:yie(Hd.default.chownSync,FC.onChangeError),closeSync:yie(Hd.default.closeSync,OM),existsSync:yie(Hd.default.existsSync,OM),fsyncSync:yie(Hd.default.fsync,OM),mkdirSync:yie(Hd.default.mkdirSync,OM),realpathSync:yie(Hd.default.realpathSync,OM),statSync:yie(Hd.default.statSync,OM),unlinkSync:yie(Hd.default.unlinkSync,OM)},retry:{close:Kde((0,lP.promisify)(Hd.default.close),FC.isRetriableError),fsync:Kde((0,lP.promisify)(Hd.default.fsync),FC.isRetriableError),open:Kde((0,lP.promisify)(Hd.default.open),FC.isRetriableError),readFile:Kde((0,lP.promisify)(Hd.default.readFile),FC.isRetriableError),rename:Kde((0,lP.promisify)(Hd.default.rename),FC.isRetriableError),stat:Kde((0,lP.promisify)(Hd.default.stat),FC.isRetriableError),write:Kde((0,lP.promisify)(Hd.default.write),FC.isRetriableError),writeFile:Kde((0,lP.promisify)(Hd.default.writeFile),FC.isRetriableError),closeSync:Jde(Hd.default.closeSync,FC.isRetriableError),fsyncSync:Jde(Hd.default.fsyncSync,FC.isRetriableError),openSync:Jde(Hd.default.openSync,FC.isRetriableError),readFileSync:Jde(Hd.default.readFileSync,FC.isRetriableError),renameSync:Jde(Hd.default.renameSync,FC.isRetriableError),statSync:Jde(Hd.default.statSync,FC.isRetriableError),writeSync:Jde(Hd.default.writeSync,FC.isRetriableError),writeFileSync:Jde(Hd.default.writeFileSync,FC.isRetriableError)}},xmu=BNm;var Tei=we(require("fs"),1),nGt=we(require("path"),1);var fVo=()=>{};var ONm=()=>{let e=fVo,t=fVo,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}},Smu=ONm;var PNm=()=>{let{promise:e,resolve:t,isPending:r}=Smu(),n=0,i=()=>{n+=1},o=()=>{n-=1,!n&&t()};return i(),queueMicrotask(o),{promise:e,isPending:r,increment:i,decrement:o}},Tmu=PNm;var Bmu={then:e=>{e()}};var Omu=e=>Array.isArray(e)?e:[e],Pmu=e=>typeof e=="function";var DNm=(e,t)=>{let r=t?.followSymlinks??!1,n=t?.depth??1/0,i=t?.limit??1/0,o=t?.ignore??[],s=Omu(o).map(oe=>Pmu(oe)?oe:ae=>oe.test(ae)),a=oe=>s.some(ae=>ae(oe)),c=t?.signal??{aborted:!1},u=t?.onDirents||(()=>{}),l=[],p=new Set,d={},f=[],m=new Set,h={},A=[],y=new Set,I={},w={},C=new Set,x={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{},map:{}},B={directories:l,directoriesNames:p,directoriesNamesToPaths:d,files:f,filesNames:m,filesNamesToPaths:h,symlinks:A,symlinksNames:y,symlinksNamesToPaths:I,map:w},{promise:O,increment:F,decrement:P}=Tmu(),U=0,J=(oe,ae,Se,Ie)=>{C.has(ae)||U>=i||(U+=1,oe.directories.push(ae),oe.directoriesNames.add(Se),l.push(ae),p.add(Se),d.propertyIsEnumerable(Se)||(d[Se]=[]),d[Se].push(ae),C.add(ae),!(Ie>=n)&&(U>=i||he(ae,Ie+1)))},$=(oe,ae,Se)=>{C.has(ae)||U>=i||(U+=1,oe.files.push(ae),oe.filesNames.add(Se),f.push(ae),m.add(Se),h.propertyIsEnumerable(Se)||(h[Se]=[]),h[Se].push(ae),C.add(ae))},ne=(oe,ae,Se,Ie)=>{C.has(ae)||U>=i||(U+=1,oe.symlinks.push(ae),oe.symlinksNames.add(Se),A.push(ae),y.add(Se),I.propertyIsEnumerable(Se)||(I[Se]=[]),I[Se].push(ae),C.add(ae),r&&(Ie>=n||U>=i||Le(ae,Ie+1)))},fe=(oe,ae,Se,Ie,je)=>{c.aborted||a(ae)||(Ie.isDirectory()?J(oe,ae,Se,je):Ie.isFile()?$(oe,ae,Se):Ie.isSymbolicLink()&&ne(oe,ae,Se,je))},be=(oe,ae,Se,Ie)=>{if(c.aborted)return;let je=ae===nGt.default.sep?"":nGt.default.sep,qe=Se.name,pt=`${ae}${je}${qe}`;a(pt)||(Se.isDirectory()?J(oe,pt,qe,Ie):Se.isFile()?$(oe,pt,qe):Se.isSymbolicLink()&&ne(oe,pt,qe,Ie))},ce=(oe,ae,Se,Ie)=>{for(let je=0,qe=Se.length;je<qe;je++)be(oe,ae,Se[je],Ie)},he=(oe,ae)=>{c.aborted||ae>n||U>=i||(F(),Tei.default.readdir(oe,{withFileTypes:!0},(Se,Ie)=>{if(Se||c.aborted||!Ie.length)return P();(u(Ie)||Bmu).then(()=>{let qe=w[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};ce(qe,oe,Ie,ae),P()})}))},Le=(oe,ae)=>{F(),Tei.default.realpath(oe,(Se,Ie)=>{if(Se||c.aborted)return P();Tei.default.stat(Ie,(je,qe)=>{if(je||c.aborted)return P();let pt=nGt.default.basename(Ie),bt=w[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};fe(bt,Ie,pt,qe,ae),P()})})};return(async(oe,ae=1)=>(oe=nGt.default.normalize(oe),C.add(oe),he(oe,ae),await O,c.aborted?x:B))(e)},Dmu=DNm;var bie={lang:{debounce:Sei,attempt:e=>{try{return e()}catch(t){return bie.lang.castError(t)}},castArray:e=>bie.lang.isArray(e)?e:[e],castError:e=>bie.lang.isError(e)?e:bie.lang.isString(e)?new Error(e):new Error("Unknown error"),defer:e=>setTimeout(e,0),isArray:e=>Array.isArray(e),isError:e=>e instanceof Error,isFunction:e=>typeof e=="function",isNaN:e=>Number.isNaN(e),isNumber:e=>typeof e=="number",isPrimitive:e=>{if(e===null)return!0;let t=typeof e;return t!=="object"&&t!=="function"},isShallowEqual:(e,t)=>{if(e===t)return!0;if(bie.lang.isNaN(e))return bie.lang.isNaN(t);if(bie.lang.isPrimitive(e)||bie.lang.isPrimitive(t))return e===t;for(let r in e)if(!(r in t))return!1;for(let r in t)if(e[r]!==t[r])return!1;return!0},isSet:e=>e instanceof Set,isString:e=>typeof e=="string",isUndefined:e=>e===void 0,noop:()=>{},uniq:e=>e.length<2?e:Array.from(new Set(e))},fs:{getDepth:e=>Math.max(0,e.split(Bei.default.sep).length-1),getRealPath:(e,t)=>{try{return t?dVo.default.realpathSync.native(e):dVo.default.realpathSync(e)}catch{return}},isSubPath:(e,t)=>t.startsWith(e)&&t[e.length]===Bei.default.sep&&t.length-e.length>Bei.default.sep.length,poll:(e,t=vmu)=>xmu.retry.stat(t)(e,{bigint:!0}).catch(bie.lang.noop),readdir:async(e,t,r=1/0,n=1/0,i,o)=>{if(o&&r===1&&e in o){let s=o[e];return[s.directories,s.files]}else{let s=await Dmu(e,{depth:r,limit:n,ignore:t,signal:i});return[s.directories,s.files]}}}},Ep=bie;var Oei=we(require("path"),1);var mVo=class{constructor(t,r,n){this.base=n,this.watcher=t,this.handler=r.handler,this.fswatcher=r.watcher,this.options=r.options,this.folderPath=r.folderPath,this.filePath=r.filePath,this.handlerBatched=this.base?this.base.onWatcherEvent.bind(this.base):this._makeHandlerBatched(this.options.debounce)}_isSubRoot(t){return this.filePath?t===this.filePath:t===this.folderPath||Ep.fs.isSubPath(this.folderPath,t)}_makeHandlerBatched(t=ymu){return(()=>{let r=this.watcher._readyWait,n=[],i=new Set,o=async(a,c)=>{let u=this.options.ignoreInitial?[]:a,l=await this.eventsPopulate([...c]),p=this.eventsDeduplicate([...u,...l]);this.onTargetEvents(p)},s=Ep.lang.debounce(()=>{this.watcher.isClosed()||(r=o(n,i),n=[],i=new Set)},t);return async(a,c="",u=!1)=>{u?await this.eventsPopulate([c],n,!0):i.add(c),r.then(s)}})()}eventsDeduplicate(t){if(t.length<2)return t;let r={};return t.reduce((n,i)=>{let[o,s]=i,a=r[s];return o===a||o===Wc.CHANGE&&a===Wc.ADD||(r[s]=o,n.push(i)),n},[])}async eventsPopulate(t,r=[],n=!1){return await Promise.all(t.map(async i=>{let o=await this.watcher._poller.update(i,this.options.pollingTimeout);await Promise.all(o.map(async s=>{r.push([s,i]),s===Wc.ADD_DIR?await this.eventsPopulateAddDir(t,i,r,n):s===Wc.UNLINK_DIR&&await this.eventsPopulateUnlinkDir(t,i,r,n)}))})),r}async eventsPopulateAddDir(t,r,n=[],i=!1){if(i)return n;let o=this.options.recursive?this.options.depth??QPe:Math.min(1,this.options.depth??QPe),s=this.options.limit??eGt,[a,c]=await Ep.fs.readdir(r,this.options.ignore,o,s,this.watcher._closeSignal),u=[...a,...c];return await Promise.all(u.map(l=>{if(!this.watcher.isIgnored(l,this.options.ignore)&&!t.includes(l))return this.eventsPopulate([l],n,!0)})),n}async eventsPopulateUnlinkDir(t,r,n=[],i=!1){if(i)return n;for(let o of this.watcher._poller.stats.keys())Ep.fs.isSubPath(r,o)&&(t.includes(o)||await this.eventsPopulate([o],n,!0));return n}onTargetAdd(t){this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAdd(t,this.options.renameTimeout):this.watcher.event(Wc.ADD,t))}onTargetAddDir(t){t!==this.folderPath&&this.options.recursive&&!MPe&&this.options.native!==!1&&this.watcher.watchDirectory(t,this.options,this.handler,void 0,this.base||this),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAddDir(t,this.options.renameTimeout):this.watcher.event(Wc.ADD_DIR,t))}onTargetChange(t){this._isSubRoot(t)&&this.watcher.event(Wc.CHANGE,t)}onTargetUnlink(t){this.watcher.watchersClose(Oei.default.dirname(t),t,!1),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlink(t,this.options.renameTimeout):this.watcher.event(Wc.UNLINK,t))}onTargetUnlinkDir(t){this.watcher.watchersClose(Oei.default.dirname(t),t,!1),this.watcher.watchersClose(t),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlinkDir(t,this.options.renameTimeout):this.watcher.event(Wc.UNLINK_DIR,t))}onTargetEvent(t){let[r,n]=t;r===Wc.ADD?this.onTargetAdd(n):r===Wc.ADD_DIR?this.onTargetAddDir(n):r===Wc.CHANGE?this.onTargetChange(n):r===Wc.UNLINK?this.onTargetUnlink(n):r===Wc.UNLINK_DIR&&this.onTargetUnlinkDir(n)}onTargetEvents(t){for(let r of t)this.onTargetEvent(r)}onWatcherEvent(t,r,n=!1){return this.handlerBatched(t,r,n)}onWatcherChange(t=AUe.CHANGE,r){if(this.watcher.isClosed())return;let n=Oei.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){cVo&&t.code==="EPERM"?this.onWatcherChange(AUe.CHANGE,""):this.watcher.error(t)}async init(){await this.initWatcherEvents(),await this.initInitialEvents()}async initWatcherEvents(){let t=this.onWatcherChange.bind(this);this.fswatcher.on(tGt.CHANGE,t);let r=this.onWatcherError.bind(this);this.fswatcher.on(tGt.ERROR,r)}async initInitialEvents(){let t=!this.watcher.isReady();if(this.filePath){if(this.watcher._poller.stats.has(this.filePath))return;await this.onWatcherEvent(AUe.CHANGE,this.filePath,t)}else{let r=this.options.recursive&&MPe&&this.options.native!==!1?this.options.depth??QPe:Math.min(1,this.options.depth??QPe),n=this.options.limit??eGt,[i,o]=await Ep.fs.readdir(this.folderPath,this.options.ignore,r,n,this.watcher._closeSignal,this.options.readdirMap),s=[this.folderPath,...i,...o];await Promise.all(s.map(a=>{if(!this.watcher._poller.stats.has(a)&&!this.watcher.isIgnored(a,this.options.ignore))return this.onWatcherEvent(AUe.CHANGE,a,t)}))}}},Rmu=mVo;var kN={interval:100,intervalId:void 0,fns:new Map,init:()=>{kN.intervalId||(kN.intervalId=setInterval(kN.resolve,kN.interval))},reset:()=>{kN.intervalId&&(clearInterval(kN.intervalId),delete kN.intervalId)},add:(e,t)=>{kN.fns.set(e,Date.now()+t),kN.init()},remove:e=>{kN.fns.delete(e)},resolve:()=>{if(!kN.fns.size)return kN.reset();let e=Date.now();for(let[t,r]of kN.fns)r>=e||(kN.remove(t),t())}},iGt=kN;var oGt=class e{constructor(t){this._watcher=t,this.reset()}getLockAdd(t,r=uVo){let{ino:n,targetPath:i,events:o,locks:s}=t,a=()=>{let p=this._watcher._poller.paths.find(n||-1,d=>d!==i);if(p&&p!==i){if(Ep.fs.getRealPath(i,!0)===p)return;this._watcher.event(o.rename,p,i)}else this._watcher.event(o.add,i)};if(!n)return a();let c=()=>{s.add.delete(n),iGt.remove(u)},u=()=>{c(),a()};iGt.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=uVo){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),iGt.remove(u)},u=()=>{c(),a()};iGt.add(u,r);let l=()=>(c(),i);s.unlink.set(n,l),s.add.get(n)?.()}getLockTargetAdd(t,r){let n=this._watcher._poller.getIno(t,Wc.ADD,Aie.FILE);return this.getLockAdd({ino:n,targetPath:t,events:e.FILE_EVENTS,locks:this._locksFile},r)}getLockTargetAddDir(t,r){let n=this._watcher._poller.getIno(t,Wc.ADD_DIR,Aie.DIR);return this.getLockAdd({ino:n,targetPath:t,events:e.DIR_EVENTS,locks:this._locksDir},r)}getLockTargetUnlink(t,r){let n=this._watcher._poller.getIno(t,Wc.UNLINK,Aie.FILE);return this.getLockUnlink({ino:n,targetPath:t,events:e.FILE_EVENTS,locks:this._locksFile},r)}getLockTargetUnlinkDir(t,r){let n=this._watcher._poller.getIno(t,Wc.UNLINK_DIR,Aie.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}}};oGt.DIR_EVENTS={add:Wc.ADD_DIR,rename:Wc.RENAME_DIR,unlink:Wc.UNLINK_DIR};oGt.FILE_EVENTS={add:Wc.ADD,change:Wc.CHANGE,rename:Wc.RENAME,unlink:Wc.UNLINK};var Fmu=oGt;var hVo=class{constructor(){this.map=new Map}clear(){this.map.clear()}delete(t,r){if(Ep.lang.isUndefined(r))return this.map.delete(t);if(this.map.has(t)){let n=this.map.get(t);if(Ep.lang.isSet(n)){let i=n.delete(r);return n.size||this.map.delete(t),i}else if(n===r)return this.map.delete(t),!0}return!1}find(t,r){if(this.map.has(t)){let n=this.map.get(t);if(Ep.lang.isSet(n))return Array.from(n).find(r);if(r(n))return n}}get(t){return this.map.get(t)}has(t,r){if(Ep.lang.isUndefined(r))return this.map.has(t);if(this.map.has(t)){let n=this.map.get(t);return Ep.lang.isSet(n)?n.has(r):n===r}return!1}set(t,r){if(this.map.has(t)){let n=this.map.get(t);Ep.lang.isSet(n)?n.add(r):n!==r&&this.map.set(t,new Set([n,r]))}else this.map.set(t,r);return this}},gVo=hVo;var AVo=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}},kmu=AVo;var yVo=class{constructor(){this.inos={},this.paths=new gVo,this.stats=new Map}getIno(t,r,n){let i=this.inos[r];if(!i)return;let o=i[t];if(o&&!(n&&o[1]!==n))return o[0]}getStats(t){return this.stats.get(t)}async poll(t,r){let n=await Ep.fs.poll(t,r);if(!(!n||!(n.isFile()||n.isDirectory())))return new kmu(n)}reset(){this.inos={},this.paths=new gVo,this.stats=new Map}async update(t,r){let n=this.getStats(t),i=await this.poll(t,r);if(this.updateStats(t,i),!n&&i){if(i.isFile())return this.updateIno(t,Wc.ADD,i),[Wc.ADD];if(i.isDirectory())return this.updateIno(t,Wc.ADD_DIR,i),[Wc.ADD_DIR]}else if(n&&!i){if(n.isFile())return this.updateIno(t,Wc.UNLINK,n),[Wc.UNLINK];if(n.isDirectory())return this.updateIno(t,Wc.UNLINK_DIR,n),[Wc.UNLINK_DIR]}else if(n&&i){if(n.isFile()){if(i.isFile())return n.ino===i.ino&&!n.size&&!i.size?[]:(this.updateIno(t,Wc.CHANGE,i),[Wc.CHANGE]);if(i.isDirectory())return this.updateIno(t,Wc.UNLINK,n),this.updateIno(t,Wc.ADD_DIR,i),[Wc.UNLINK,Wc.ADD_DIR]}else if(n.isDirectory()){if(i.isFile())return this.updateIno(t,Wc.UNLINK_DIR,n),this.updateIno(t,Wc.ADD,i),[Wc.UNLINK_DIR,Wc.ADD];if(i.isDirectory())return n.ino===i.ino?[]:(this.updateIno(t,Wc.UNLINK_DIR,n),this.updateIno(t,Wc.ADD_DIR,i),[Wc.UNLINK_DIR,Wc.ADD_DIR])}}return[]}updateIno(t,r,n){let i=this.inos[r]=this.inos[r]||(this.inos[r]={}),o=n.isFile()?Aie.FILE:Aie.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)}}},bVo=yVo;var EVo=class e extends Nmu.EventEmitter{constructor(t,r,n){super(),this._closed=!1,this._ready=!1,this._closeAborter=new AbortController,this._closeSignal=this._closeAborter.signal,this.on(FN.CLOSE,()=>this._closeAborter.abort()),this._closeWait=new Promise(i=>this.on(FN.CLOSE,i)),this._readyWait=new Promise(i=>this.on(FN.READY,i)),this._locker=new Fmu(this),this._roots=new Set,this._poller=new bVo,this._pollers=new Set,this._subwatchers=new Set,this._watchers={},this._watchersLock=Promise.resolve(),this._watchersRestorable={},this.watch(t,r,n)}isClosed(){return this._closed}isIgnored(t,r){return!!r&&(Ep.lang.isFunction(r)?!!r(t):r.test(t))}isReady(){return this._ready}close(){return this._locker.reset(),this._poller.reset(),this._roots.clear(),this.watchersClose(),this.isClosed()?!1:(this._closed=!0,this.emit(FN.CLOSE))}error(t){if(this.isClosed())return!1;let r=Ep.lang.castError(t);return this.emit(FN.ERROR,r)}event(t,r,n){return this.isClosed()?!1:(this.emit(FN.ALL,t,r,n),this.emit(t,r,n))}ready(){return this.isClosed()||this.isReady()?!1:(this._ready=!0,this.emit(FN.READY))}pollerExists(t,r){for(let n of this._pollers)if(n.targetPath===t&&Ep.lang.isShallowEqual(n.options,r))return!0;return!1}subwatcherExists(t,r){for(let n of this._subwatchers)if(n.targetPath===t&&Ep.lang.isShallowEqual(n.options,r))return!0;return!1}watchersClose(t,r,n=!0){if(t){let i=this._watchers[t];if(i)for(let o of[...i])r&&o.filePath!==r||this.watcherClose(o);if(n)for(let o in this._watchers)Ep.fs.isSubPath(t,o)&&this.watchersClose(o,r,!1)}else for(let i in this._watchers)this.watchersClose(i,r,!1)}watchersLock(t){return this._watchersLock.then(()=>this._watchersLock=new Promise(async r=>{await t(),r()}))}watchersRestore(){delete this._watchersRestoreTimeout;let t=Object.entries(this._watchersRestorable);this._watchersRestorable={};for(let[r,n]of t)this.watchPath(r,n.options,n.handler)}async watcherAdd(t,r){let{folderPath:n}=t;(this._watchers[n]=this._watchers[n]||[]).push(t);let o=new Rmu(this,t,r);return await o.init(),o}watcherClose(t){t.watcher.close();let r=this._watchers[t.folderPath];if(r){let o=r.indexOf(t);r.splice(o,1),r.length||delete this._watchers[t.folderPath]}let n=t.filePath||t.folderPath;this._roots.has(n)&&(this._watchersRestorable[n]=t,this._watchersRestoreTimeout||(this._watchersRestoreTimeout=Ep.lang.defer(()=>this.watchersRestore())))}watcherExists(t,r,n,i){if(this._watchers[t]?.find(a=>a.handler===n&&(!a.filePath||a.filePath===i)&&a.options.ignore===r.ignore&&!!a.options.native==!!r.native&&(!r.recursive||a.options.recursive)))return!0;let s=yUe.default.dirname(t);for(let a=1;a<1/0;a++){if(this._watchers[s]?.find(l=>(a===1||l.options.recursive&&a<=(l.options.depth??QPe))&&l.handler===n&&(!l.filePath||l.filePath===i)&&l.options.ignore===r.ignore&&!!l.options.native==!!r.native&&(!r.recursive||l.options.recursive&&MPe&&l.options.native!==!1)))return!0;if(!MPe)break;let u=yUe.default.dirname(t);if(s===u)break;s=u}return!1}async watchDirectories(t,r,n,i,o){if(this.isClosed())return;t=Ep.lang.uniq(t).sort();let s;for(let a of t)if(!this.isIgnored(a,r.ignore)&&!this.watcherExists(a,r,n,i))try{let c=!r.recursive||MPe&&r.native!==!1?r:{...r,recursive:!1},l={watcher:Pei.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=yUe.default.dirname(a),h=a;await this.watchDirectories([m],f,n,h,p)}}catch(c){this.error(c)}return s}async watchDirectory(t,r,n,i,o){if(!this.isClosed()&&!this.isIgnored(t,r.ignore)){if(!r.recursive||MPe&&r.native!==!1)return this.watchersLock(()=>this.watchDirectories([t],r,n,i,o));{r={...r,recursive:!0};let s=r.depth??QPe,a=r.limit??eGt,[c]=await Ep.fs.readdir(t,r.ignore,s,a,this._closeSignal,r.readdirMap);return this.watchersLock(async()=>{let u=await this.watchDirectories([t],r,n,i,o);if(c.length){let l=Ep.fs.getDepth(t);for(let p of c){let d=Ep.fs.getDepth(p),f=Math.max(0,s-(d-l)),m={...r,depth:f};await this.watchDirectories([p],m,n,i,o||u)}}})}}}async watchFileOnce(t,r,n){if(this.isClosed()||(r={...r,ignoreInitial:!1},this.subwatcherExists(t,r)))return;let i={targetPath:t,options:r},o=(u,l)=>{l===t&&(c(),n())},s=new e(o),a=()=>{this._subwatchers.add(i),this.on(FN.CLOSE,c),s.watchFile(t,r,o)},c=()=>{this._subwatchers.delete(i),this.removeListener(FN.CLOSE,c),s.close()};return a()}async watchFile(t,r,n){if(this.isClosed()||this.isIgnored(t,r.ignore))return;r={...r,recursive:!1};let i=yUe.default.dirname(t);return this.watchDirectory(i,r,n,t)}async watchPollingOnce(t,r,n){if(this.isClosed())return;let i=!1,o=new bVo,s=await this.watchPolling(t,r,async()=>{i||!(await o.update(t,r.pollingTimeout)).length||i||(i=!0,s(),n())})}async watchPolling(t,r,n){if(this.isClosed())return Ep.lang.noop;if(this.pollerExists(t,r))return Ep.lang.noop;let i={...r,interval:r.pollingInterval??Emu},o={targetPath:t,options:r},s=()=>{this._pollers.add(o),this.on(FN.CLOSE,a),Pei.default.watchFile(t,i,n)},a=()=>{this._pollers.delete(o),this.removeListener(FN.CLOSE,a),Pei.default.unwatchFile(t,n)};return Ep.lang.attempt(s),()=>Ep.lang.attempt(a)}async watchUnknownChild(t,r,n){if(this.isClosed())return;let i=()=>this.watchPath(t,r,n);return this.watchFileOnce(t,r,i)}async watchUnknownTarget(t,r,n){if(this.isClosed())return;let i=()=>this.watchPath(t,r,n);return this.watchPollingOnce(t,r,i)}async watchPaths(t,r,n){if(this.isClosed())return;if(t=Ep.lang.uniq(t).sort(),t.every((o,s)=>t.every((a,c)=>c===s||!Ep.fs.isSubPath(o,a))))await Promise.all(t.map(o=>this.watchPath(o,r,n)));else for(let o of t)await this.watchPath(o,r,n)}async watchPath(t,r,n){if(this.isClosed()||(t=yUe.default.resolve(t),this.isIgnored(t,r.ignore)))return;let i=await Ep.fs.poll(t,r.pollingTimeout);if(i){if(i.isFile())return this.watchFile(t,r,n);if(i.isDirectory())return this.watchDirectory(t,r,n);this.error(`"${t}" is not supported`)}else{let o=yUe.default.dirname(t);return(await Ep.fs.poll(o,r.pollingTimeout))?.isDirectory()?this.watchUnknownChild(t,r,n):this.watchUnknownTarget(t,r,n)}}async watch(t,r,n=Ep.lang.noop){if(Ep.lang.isFunction(t))return this.watch([],{},t);if(Ep.lang.isUndefined(t))return this.watch([],r,n);if(Ep.lang.isFunction(r))return this.watch(t,{},r);if(Ep.lang.isUndefined(r))return this.watch(t,{},n);if(this.isClosed())return;this.isReady()&&(r.readdirMap=void 0);let i=Ep.lang.castArray(t);i.forEach(o=>this._roots.add(o)),await this.watchPaths(i,r,n),!this.isClosed()&&(n!==Ep.lang.noop&&this.on(FN.ALL,n),r.readdirMap=void 0,this.ready())}},Dei=EVo;Wei();or();var _7=require("fs/promises"),zhu=require("os"),VVo=we(require("path"),1),nQm=".fern",iQm="logs",_Vo=100*1024*1024;function oQm(){return"cli@5.27.2"}var wUe=class{logFilePath=null;initialized=!1;sessionStartTime;consoleLogger;constructor(){this.sessionStartTime=Date.now()}async initialize(t){if(this.initialized)return;this.consoleLogger=t;let r=nt(Yt.of((0,zhu.homedir)()),ke.of(nQm)),n=nt(r,ke.of(iQm));await cr(n)||await(0,_7.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=nt(n,ke.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${VVo.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
3813
+ `);r.fix?l+=await N$n(t,o.mdxParseErrors):process.stdout.isTTY===!0&&!AYn()&&await j$n(t,o.mdxParseErrors)}if(r.fix&&c.length>0){let d=await new B0t({context:t}).fix({workspace:n,violations:c});l+=d.fixedCount}if(u&&(!r.fix||l===0))throw new j({code:j.Code.ValidationError});if(o.warningCount>0){t.stderr.info(`${tn.warning} ${Ee.yellow(`Found ${o.warningCount} warnings`)}`),t.stderr.info(Ee.dim(" Run 'fern docs check --strict' to treat warnings as errors"));return}t.stderr.info(`${tn.success} ${Ee.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=>gee(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 aOm(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 zUo(e){let t=new LUo;Ki(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}))}D0();_t();var Duu=we(require("net"),1),Ruu=we(require("os"),1),L$n=class extends Error{constructor(t){super(`${t} is locked`)}},R0t={old:new Set,young:new Set},cOm=1e3*15,Fuu=new Set;var Bqt,uOm=()=>{let e=Ruu.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},Ouu=e=>new Promise((t,r)=>{let n=Duu.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),Puu=async(e,t)=>{if(e.host||e.port===0)return Ouu(e);for(let r of t)try{await Ouu({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},lOm=e=>R0t.old.has(e)||R0t.young.has(e)||Fuu.has(e),pOm=function*(e){e&&(yield*e),yield 0};async function PPe(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??{};Bqt===void 0&&(Bqt=setTimeout(()=>{Bqt=void 0,R0t.old=R0t.young,R0t.young=new Set},cOm),Bqt.unref&&Bqt.unref());let o=uOm();for(let s of pOm(t))try{if(r.has(s))continue;let a=await Puu({...i,port:s},o);for(;lOm(a);){if(s!==0)throw new L$n(s);a=await Puu({...i,port:s},o)}return n?Fuu.add(a):R0t.young.add(a),a}catch(a){if(!["EADDRINUSE","EACCES"].includes(a.code)&&!(a instanceof L$n))throw a}throw new Error("No available ports found")}_t();var juu=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,kuu="docs.buildwithfern.com",Nuu=62;function cUe(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)),juu.test(t)}function Quu(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function Oqt({orgId:e,previewId:t}){let r=Quu(t),n=`${e}-preview-${r}.${kuu}`;if(n.length<=Nuu)return n;let i=`${e}-preview-`,o=Nuu-i.length;if(o<8)throw new j({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:j.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${kuu}`}jt();lg();or();sS();_t();var S8o=require("child_process"),rvu=we(VUo(),1),T8o=we(xei(),1),B8o=we(require("fs"),1),kUe=require("fs/promises"),nvu=we(require("http"),1),D8o=we(require("path"),1);var Nmu=require("events"),Pei=we(require("fs"),1),yUe=we(require("path"),1);var Amu=we(require("os"),1),ymu=300,QPe=20,eGt=1e7,bmu=Amu.default.platform();var SNm=bmu==="darwin",cVo=bmu==="win32",MPe=SNm||cVo,Emu=3e3,vmu=2e4,uVo=1250;var Aie;(function(e){e[e.DIR=1]="DIR",e[e.FILE=2]="FILE"})(Aie||(Aie={}));var AUe;(function(e){e.CHANGE="change",e.RENAME="rename"})(AUe||(AUe={}));var tGt;(function(e){e.CHANGE="change",e.ERROR="error"})(tGt||(tGt={}));var Wc;(function(e){e.ADD="add",e.ADD_DIR="addDir",e.CHANGE="change",e.RENAME="rename",e.RENAME_DIR="renameDir",e.UNLINK="unlink",e.UNLINK_DIR="unlinkDir"})(Wc||(Wc={}));var FN;(function(e){e.ALL="all",e.CLOSE="close",e.ERROR="error",e.READY="ready"})(FN||(FN={}));var TNm=(e,t=1,r)=>{t=Math.max(1,t);let n=r?.leading??!1,i=r?.trailing??!0,o=Math.max(r?.maxWait??1/0,t),s,a,c=0,u=0,l=()=>{let C=Date.now(),x=C-c,B=C-u,O=x>=t||B>=o;return[C,O]},p=C=>{if(u=C,!s)return;let x=s;s=void 0,e.apply(void 0,x)},d=()=>{I(0)},f=()=>{a&&(d(),p(Date.now()))},m=C=>{if(u=C,n)return p(C)},h=C=>{if(i&&s)return p(C);s=void 0},A=()=>{a=void 0;let[C,x]=l();return x?h(C):y(C)},y=C=>{let x=C-c,B=C-u,O=t-x,F=o-B,P=Math.min(O,F);return I(P)},I=C=>{a&&clearTimeout(a),!(C<=0)&&(a=setTimeout(A,C))},w=(...C)=>{let[x,B]=l(),O=!!a;if(s=C,c=x,(B||!a)&&I(t),B)return O?p(x):m(x)};return w.cancel=d,w.flush=f,w},Sei=TNm;var dVo=we(require("fs"),1),Bei=we(require("path"),1);var Hd=we(require("fs"),1),lP=require("util");var Hde=(e,t)=>function(...n){return e.apply(void 0,n).catch(t)},yie=(e,t)=>function(...n){try{return e.apply(void 0,n)}catch(i){return t(i)}};var lVo=we(require("process"),1),Imu=lVo.default.getuid?!lVo.default.getuid():!1,Cmu=1e4,OM=()=>{};var rGt={isChangeErrorOk:e=>{if(!rGt.isNodeError(e))return!1;let{code:t}=e;return t==="ENOSYS"||!Imu&&(t==="EINVAL"||t==="EPERM")},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!rGt.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(!rGt.isNodeError(e))throw e;if(!rGt.isChangeErrorOk(e))throw e}},FC=rGt;var pVo=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=Cmu,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()}}}}},wmu=new pVo;var Kde=(e,t)=>function(n){return function i(...o){return wmu.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)})}},Jde=(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 BNm={attempt:{chmod:Hde((0,lP.promisify)(Hd.default.chmod),FC.onChangeError),chown:Hde((0,lP.promisify)(Hd.default.chown),FC.onChangeError),close:Hde((0,lP.promisify)(Hd.default.close),OM),fsync:Hde((0,lP.promisify)(Hd.default.fsync),OM),mkdir:Hde((0,lP.promisify)(Hd.default.mkdir),OM),realpath:Hde((0,lP.promisify)(Hd.default.realpath),OM),stat:Hde((0,lP.promisify)(Hd.default.stat),OM),unlink:Hde((0,lP.promisify)(Hd.default.unlink),OM),chmodSync:yie(Hd.default.chmodSync,FC.onChangeError),chownSync:yie(Hd.default.chownSync,FC.onChangeError),closeSync:yie(Hd.default.closeSync,OM),existsSync:yie(Hd.default.existsSync,OM),fsyncSync:yie(Hd.default.fsync,OM),mkdirSync:yie(Hd.default.mkdirSync,OM),realpathSync:yie(Hd.default.realpathSync,OM),statSync:yie(Hd.default.statSync,OM),unlinkSync:yie(Hd.default.unlinkSync,OM)},retry:{close:Kde((0,lP.promisify)(Hd.default.close),FC.isRetriableError),fsync:Kde((0,lP.promisify)(Hd.default.fsync),FC.isRetriableError),open:Kde((0,lP.promisify)(Hd.default.open),FC.isRetriableError),readFile:Kde((0,lP.promisify)(Hd.default.readFile),FC.isRetriableError),rename:Kde((0,lP.promisify)(Hd.default.rename),FC.isRetriableError),stat:Kde((0,lP.promisify)(Hd.default.stat),FC.isRetriableError),write:Kde((0,lP.promisify)(Hd.default.write),FC.isRetriableError),writeFile:Kde((0,lP.promisify)(Hd.default.writeFile),FC.isRetriableError),closeSync:Jde(Hd.default.closeSync,FC.isRetriableError),fsyncSync:Jde(Hd.default.fsyncSync,FC.isRetriableError),openSync:Jde(Hd.default.openSync,FC.isRetriableError),readFileSync:Jde(Hd.default.readFileSync,FC.isRetriableError),renameSync:Jde(Hd.default.renameSync,FC.isRetriableError),statSync:Jde(Hd.default.statSync,FC.isRetriableError),writeSync:Jde(Hd.default.writeSync,FC.isRetriableError),writeFileSync:Jde(Hd.default.writeFileSync,FC.isRetriableError)}},xmu=BNm;var Tei=we(require("fs"),1),nGt=we(require("path"),1);var fVo=()=>{};var ONm=()=>{let e=fVo,t=fVo,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}},Smu=ONm;var PNm=()=>{let{promise:e,resolve:t,isPending:r}=Smu(),n=0,i=()=>{n+=1},o=()=>{n-=1,!n&&t()};return i(),queueMicrotask(o),{promise:e,isPending:r,increment:i,decrement:o}},Tmu=PNm;var Bmu={then:e=>{e()}};var Omu=e=>Array.isArray(e)?e:[e],Pmu=e=>typeof e=="function";var DNm=(e,t)=>{let r=t?.followSymlinks??!1,n=t?.depth??1/0,i=t?.limit??1/0,o=t?.ignore??[],s=Omu(o).map(oe=>Pmu(oe)?oe:ae=>oe.test(ae)),a=oe=>s.some(ae=>ae(oe)),c=t?.signal??{aborted:!1},u=t?.onDirents||(()=>{}),l=[],p=new Set,d={},f=[],m=new Set,h={},A=[],y=new Set,I={},w={},C=new Set,x={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{},map:{}},B={directories:l,directoriesNames:p,directoriesNamesToPaths:d,files:f,filesNames:m,filesNamesToPaths:h,symlinks:A,symlinksNames:y,symlinksNamesToPaths:I,map:w},{promise:O,increment:F,decrement:P}=Tmu(),U=0,J=(oe,ae,Se,Ie)=>{C.has(ae)||U>=i||(U+=1,oe.directories.push(ae),oe.directoriesNames.add(Se),l.push(ae),p.add(Se),d.propertyIsEnumerable(Se)||(d[Se]=[]),d[Se].push(ae),C.add(ae),!(Ie>=n)&&(U>=i||he(ae,Ie+1)))},$=(oe,ae,Se)=>{C.has(ae)||U>=i||(U+=1,oe.files.push(ae),oe.filesNames.add(Se),f.push(ae),m.add(Se),h.propertyIsEnumerable(Se)||(h[Se]=[]),h[Se].push(ae),C.add(ae))},ne=(oe,ae,Se,Ie)=>{C.has(ae)||U>=i||(U+=1,oe.symlinks.push(ae),oe.symlinksNames.add(Se),A.push(ae),y.add(Se),I.propertyIsEnumerable(Se)||(I[Se]=[]),I[Se].push(ae),C.add(ae),r&&(Ie>=n||U>=i||Le(ae,Ie+1)))},fe=(oe,ae,Se,Ie,je)=>{c.aborted||a(ae)||(Ie.isDirectory()?J(oe,ae,Se,je):Ie.isFile()?$(oe,ae,Se):Ie.isSymbolicLink()&&ne(oe,ae,Se,je))},be=(oe,ae,Se,Ie)=>{if(c.aborted)return;let je=ae===nGt.default.sep?"":nGt.default.sep,qe=Se.name,pt=`${ae}${je}${qe}`;a(pt)||(Se.isDirectory()?J(oe,pt,qe,Ie):Se.isFile()?$(oe,pt,qe):Se.isSymbolicLink()&&ne(oe,pt,qe,Ie))},ce=(oe,ae,Se,Ie)=>{for(let je=0,qe=Se.length;je<qe;je++)be(oe,ae,Se[je],Ie)},he=(oe,ae)=>{c.aborted||ae>n||U>=i||(F(),Tei.default.readdir(oe,{withFileTypes:!0},(Se,Ie)=>{if(Se||c.aborted||!Ie.length)return P();(u(Ie)||Bmu).then(()=>{let qe=w[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};ce(qe,oe,Ie,ae),P()})}))},Le=(oe,ae)=>{F(),Tei.default.realpath(oe,(Se,Ie)=>{if(Se||c.aborted)return P();Tei.default.stat(Ie,(je,qe)=>{if(je||c.aborted)return P();let pt=nGt.default.basename(Ie),bt=w[oe]={directories:[],directoriesNames:new Set,directoriesNamesToPaths:{},files:[],filesNames:new Set,filesNamesToPaths:{},symlinks:[],symlinksNames:new Set,symlinksNamesToPaths:{}};fe(bt,Ie,pt,qe,ae),P()})})};return(async(oe,ae=1)=>(oe=nGt.default.normalize(oe),C.add(oe),he(oe,ae),await O,c.aborted?x:B))(e)},Dmu=DNm;var bie={lang:{debounce:Sei,attempt:e=>{try{return e()}catch(t){return bie.lang.castError(t)}},castArray:e=>bie.lang.isArray(e)?e:[e],castError:e=>bie.lang.isError(e)?e:bie.lang.isString(e)?new Error(e):new Error("Unknown error"),defer:e=>setTimeout(e,0),isArray:e=>Array.isArray(e),isError:e=>e instanceof Error,isFunction:e=>typeof e=="function",isNaN:e=>Number.isNaN(e),isNumber:e=>typeof e=="number",isPrimitive:e=>{if(e===null)return!0;let t=typeof e;return t!=="object"&&t!=="function"},isShallowEqual:(e,t)=>{if(e===t)return!0;if(bie.lang.isNaN(e))return bie.lang.isNaN(t);if(bie.lang.isPrimitive(e)||bie.lang.isPrimitive(t))return e===t;for(let r in e)if(!(r in t))return!1;for(let r in t)if(e[r]!==t[r])return!1;return!0},isSet:e=>e instanceof Set,isString:e=>typeof e=="string",isUndefined:e=>e===void 0,noop:()=>{},uniq:e=>e.length<2?e:Array.from(new Set(e))},fs:{getDepth:e=>Math.max(0,e.split(Bei.default.sep).length-1),getRealPath:(e,t)=>{try{return t?dVo.default.realpathSync.native(e):dVo.default.realpathSync(e)}catch{return}},isSubPath:(e,t)=>t.startsWith(e)&&t[e.length]===Bei.default.sep&&t.length-e.length>Bei.default.sep.length,poll:(e,t=vmu)=>xmu.retry.stat(t)(e,{bigint:!0}).catch(bie.lang.noop),readdir:async(e,t,r=1/0,n=1/0,i,o)=>{if(o&&r===1&&e in o){let s=o[e];return[s.directories,s.files]}else{let s=await Dmu(e,{depth:r,limit:n,ignore:t,signal:i});return[s.directories,s.files]}}}},Ep=bie;var Oei=we(require("path"),1);var mVo=class{constructor(t,r,n){this.base=n,this.watcher=t,this.handler=r.handler,this.fswatcher=r.watcher,this.options=r.options,this.folderPath=r.folderPath,this.filePath=r.filePath,this.handlerBatched=this.base?this.base.onWatcherEvent.bind(this.base):this._makeHandlerBatched(this.options.debounce)}_isSubRoot(t){return this.filePath?t===this.filePath:t===this.folderPath||Ep.fs.isSubPath(this.folderPath,t)}_makeHandlerBatched(t=ymu){return(()=>{let r=this.watcher._readyWait,n=[],i=new Set,o=async(a,c)=>{let u=this.options.ignoreInitial?[]:a,l=await this.eventsPopulate([...c]),p=this.eventsDeduplicate([...u,...l]);this.onTargetEvents(p)},s=Ep.lang.debounce(()=>{this.watcher.isClosed()||(r=o(n,i),n=[],i=new Set)},t);return async(a,c="",u=!1)=>{u?await this.eventsPopulate([c],n,!0):i.add(c),r.then(s)}})()}eventsDeduplicate(t){if(t.length<2)return t;let r={};return t.reduce((n,i)=>{let[o,s]=i,a=r[s];return o===a||o===Wc.CHANGE&&a===Wc.ADD||(r[s]=o,n.push(i)),n},[])}async eventsPopulate(t,r=[],n=!1){return await Promise.all(t.map(async i=>{let o=await this.watcher._poller.update(i,this.options.pollingTimeout);await Promise.all(o.map(async s=>{r.push([s,i]),s===Wc.ADD_DIR?await this.eventsPopulateAddDir(t,i,r,n):s===Wc.UNLINK_DIR&&await this.eventsPopulateUnlinkDir(t,i,r,n)}))})),r}async eventsPopulateAddDir(t,r,n=[],i=!1){if(i)return n;let o=this.options.recursive?this.options.depth??QPe:Math.min(1,this.options.depth??QPe),s=this.options.limit??eGt,[a,c]=await Ep.fs.readdir(r,this.options.ignore,o,s,this.watcher._closeSignal),u=[...a,...c];return await Promise.all(u.map(l=>{if(!this.watcher.isIgnored(l,this.options.ignore)&&!t.includes(l))return this.eventsPopulate([l],n,!0)})),n}async eventsPopulateUnlinkDir(t,r,n=[],i=!1){if(i)return n;for(let o of this.watcher._poller.stats.keys())Ep.fs.isSubPath(r,o)&&(t.includes(o)||await this.eventsPopulate([o],n,!0));return n}onTargetAdd(t){this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAdd(t,this.options.renameTimeout):this.watcher.event(Wc.ADD,t))}onTargetAddDir(t){t!==this.folderPath&&this.options.recursive&&!MPe&&this.options.native!==!1&&this.watcher.watchDirectory(t,this.options,this.handler,void 0,this.base||this),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetAddDir(t,this.options.renameTimeout):this.watcher.event(Wc.ADD_DIR,t))}onTargetChange(t){this._isSubRoot(t)&&this.watcher.event(Wc.CHANGE,t)}onTargetUnlink(t){this.watcher.watchersClose(Oei.default.dirname(t),t,!1),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlink(t,this.options.renameTimeout):this.watcher.event(Wc.UNLINK,t))}onTargetUnlinkDir(t){this.watcher.watchersClose(Oei.default.dirname(t),t,!1),this.watcher.watchersClose(t),this._isSubRoot(t)&&(this.options.renameDetection?this.watcher._locker.getLockTargetUnlinkDir(t,this.options.renameTimeout):this.watcher.event(Wc.UNLINK_DIR,t))}onTargetEvent(t){let[r,n]=t;r===Wc.ADD?this.onTargetAdd(n):r===Wc.ADD_DIR?this.onTargetAddDir(n):r===Wc.CHANGE?this.onTargetChange(n):r===Wc.UNLINK?this.onTargetUnlink(n):r===Wc.UNLINK_DIR&&this.onTargetUnlinkDir(n)}onTargetEvents(t){for(let r of t)this.onTargetEvent(r)}onWatcherEvent(t,r,n=!1){return this.handlerBatched(t,r,n)}onWatcherChange(t=AUe.CHANGE,r){if(this.watcher.isClosed())return;let n=Oei.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){cVo&&t.code==="EPERM"?this.onWatcherChange(AUe.CHANGE,""):this.watcher.error(t)}async init(){await this.initWatcherEvents(),await this.initInitialEvents()}async initWatcherEvents(){let t=this.onWatcherChange.bind(this);this.fswatcher.on(tGt.CHANGE,t);let r=this.onWatcherError.bind(this);this.fswatcher.on(tGt.ERROR,r)}async initInitialEvents(){let t=!this.watcher.isReady();if(this.filePath){if(this.watcher._poller.stats.has(this.filePath))return;await this.onWatcherEvent(AUe.CHANGE,this.filePath,t)}else{let r=this.options.recursive&&MPe&&this.options.native!==!1?this.options.depth??QPe:Math.min(1,this.options.depth??QPe),n=this.options.limit??eGt,[i,o]=await Ep.fs.readdir(this.folderPath,this.options.ignore,r,n,this.watcher._closeSignal,this.options.readdirMap),s=[this.folderPath,...i,...o];await Promise.all(s.map(a=>{if(!this.watcher._poller.stats.has(a)&&!this.watcher.isIgnored(a,this.options.ignore))return this.onWatcherEvent(AUe.CHANGE,a,t)}))}}},Rmu=mVo;var kN={interval:100,intervalId:void 0,fns:new Map,init:()=>{kN.intervalId||(kN.intervalId=setInterval(kN.resolve,kN.interval))},reset:()=>{kN.intervalId&&(clearInterval(kN.intervalId),delete kN.intervalId)},add:(e,t)=>{kN.fns.set(e,Date.now()+t),kN.init()},remove:e=>{kN.fns.delete(e)},resolve:()=>{if(!kN.fns.size)return kN.reset();let e=Date.now();for(let[t,r]of kN.fns)r>=e||(kN.remove(t),t())}},iGt=kN;var oGt=class e{constructor(t){this._watcher=t,this.reset()}getLockAdd(t,r=uVo){let{ino:n,targetPath:i,events:o,locks:s}=t,a=()=>{let p=this._watcher._poller.paths.find(n||-1,d=>d!==i);if(p&&p!==i){if(Ep.fs.getRealPath(i,!0)===p)return;this._watcher.event(o.rename,p,i)}else this._watcher.event(o.add,i)};if(!n)return a();let c=()=>{s.add.delete(n),iGt.remove(u)},u=()=>{c(),a()};iGt.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=uVo){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),iGt.remove(u)},u=()=>{c(),a()};iGt.add(u,r);let l=()=>(c(),i);s.unlink.set(n,l),s.add.get(n)?.()}getLockTargetAdd(t,r){let n=this._watcher._poller.getIno(t,Wc.ADD,Aie.FILE);return this.getLockAdd({ino:n,targetPath:t,events:e.FILE_EVENTS,locks:this._locksFile},r)}getLockTargetAddDir(t,r){let n=this._watcher._poller.getIno(t,Wc.ADD_DIR,Aie.DIR);return this.getLockAdd({ino:n,targetPath:t,events:e.DIR_EVENTS,locks:this._locksDir},r)}getLockTargetUnlink(t,r){let n=this._watcher._poller.getIno(t,Wc.UNLINK,Aie.FILE);return this.getLockUnlink({ino:n,targetPath:t,events:e.FILE_EVENTS,locks:this._locksFile},r)}getLockTargetUnlinkDir(t,r){let n=this._watcher._poller.getIno(t,Wc.UNLINK_DIR,Aie.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}}};oGt.DIR_EVENTS={add:Wc.ADD_DIR,rename:Wc.RENAME_DIR,unlink:Wc.UNLINK_DIR};oGt.FILE_EVENTS={add:Wc.ADD,change:Wc.CHANGE,rename:Wc.RENAME,unlink:Wc.UNLINK};var Fmu=oGt;var hVo=class{constructor(){this.map=new Map}clear(){this.map.clear()}delete(t,r){if(Ep.lang.isUndefined(r))return this.map.delete(t);if(this.map.has(t)){let n=this.map.get(t);if(Ep.lang.isSet(n)){let i=n.delete(r);return n.size||this.map.delete(t),i}else if(n===r)return this.map.delete(t),!0}return!1}find(t,r){if(this.map.has(t)){let n=this.map.get(t);if(Ep.lang.isSet(n))return Array.from(n).find(r);if(r(n))return n}}get(t){return this.map.get(t)}has(t,r){if(Ep.lang.isUndefined(r))return this.map.has(t);if(this.map.has(t)){let n=this.map.get(t);return Ep.lang.isSet(n)?n.has(r):n===r}return!1}set(t,r){if(this.map.has(t)){let n=this.map.get(t);Ep.lang.isSet(n)?n.add(r):n!==r&&this.map.set(t,new Set([n,r]))}else this.map.set(t,r);return this}},gVo=hVo;var AVo=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}},kmu=AVo;var yVo=class{constructor(){this.inos={},this.paths=new gVo,this.stats=new Map}getIno(t,r,n){let i=this.inos[r];if(!i)return;let o=i[t];if(o&&!(n&&o[1]!==n))return o[0]}getStats(t){return this.stats.get(t)}async poll(t,r){let n=await Ep.fs.poll(t,r);if(!(!n||!(n.isFile()||n.isDirectory())))return new kmu(n)}reset(){this.inos={},this.paths=new gVo,this.stats=new Map}async update(t,r){let n=this.getStats(t),i=await this.poll(t,r);if(this.updateStats(t,i),!n&&i){if(i.isFile())return this.updateIno(t,Wc.ADD,i),[Wc.ADD];if(i.isDirectory())return this.updateIno(t,Wc.ADD_DIR,i),[Wc.ADD_DIR]}else if(n&&!i){if(n.isFile())return this.updateIno(t,Wc.UNLINK,n),[Wc.UNLINK];if(n.isDirectory())return this.updateIno(t,Wc.UNLINK_DIR,n),[Wc.UNLINK_DIR]}else if(n&&i){if(n.isFile()){if(i.isFile())return n.ino===i.ino&&!n.size&&!i.size?[]:(this.updateIno(t,Wc.CHANGE,i),[Wc.CHANGE]);if(i.isDirectory())return this.updateIno(t,Wc.UNLINK,n),this.updateIno(t,Wc.ADD_DIR,i),[Wc.UNLINK,Wc.ADD_DIR]}else if(n.isDirectory()){if(i.isFile())return this.updateIno(t,Wc.UNLINK_DIR,n),this.updateIno(t,Wc.ADD,i),[Wc.UNLINK_DIR,Wc.ADD];if(i.isDirectory())return n.ino===i.ino?[]:(this.updateIno(t,Wc.UNLINK_DIR,n),this.updateIno(t,Wc.ADD_DIR,i),[Wc.UNLINK_DIR,Wc.ADD_DIR])}}return[]}updateIno(t,r,n){let i=this.inos[r]=this.inos[r]||(this.inos[r]={}),o=n.isFile()?Aie.FILE:Aie.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)}}},bVo=yVo;var EVo=class e extends Nmu.EventEmitter{constructor(t,r,n){super(),this._closed=!1,this._ready=!1,this._closeAborter=new AbortController,this._closeSignal=this._closeAborter.signal,this.on(FN.CLOSE,()=>this._closeAborter.abort()),this._closeWait=new Promise(i=>this.on(FN.CLOSE,i)),this._readyWait=new Promise(i=>this.on(FN.READY,i)),this._locker=new Fmu(this),this._roots=new Set,this._poller=new bVo,this._pollers=new Set,this._subwatchers=new Set,this._watchers={},this._watchersLock=Promise.resolve(),this._watchersRestorable={},this.watch(t,r,n)}isClosed(){return this._closed}isIgnored(t,r){return!!r&&(Ep.lang.isFunction(r)?!!r(t):r.test(t))}isReady(){return this._ready}close(){return this._locker.reset(),this._poller.reset(),this._roots.clear(),this.watchersClose(),this.isClosed()?!1:(this._closed=!0,this.emit(FN.CLOSE))}error(t){if(this.isClosed())return!1;let r=Ep.lang.castError(t);return this.emit(FN.ERROR,r)}event(t,r,n){return this.isClosed()?!1:(this.emit(FN.ALL,t,r,n),this.emit(t,r,n))}ready(){return this.isClosed()||this.isReady()?!1:(this._ready=!0,this.emit(FN.READY))}pollerExists(t,r){for(let n of this._pollers)if(n.targetPath===t&&Ep.lang.isShallowEqual(n.options,r))return!0;return!1}subwatcherExists(t,r){for(let n of this._subwatchers)if(n.targetPath===t&&Ep.lang.isShallowEqual(n.options,r))return!0;return!1}watchersClose(t,r,n=!0){if(t){let i=this._watchers[t];if(i)for(let o of[...i])r&&o.filePath!==r||this.watcherClose(o);if(n)for(let o in this._watchers)Ep.fs.isSubPath(t,o)&&this.watchersClose(o,r,!1)}else for(let i in this._watchers)this.watchersClose(i,r,!1)}watchersLock(t){return this._watchersLock.then(()=>this._watchersLock=new Promise(async r=>{await t(),r()}))}watchersRestore(){delete this._watchersRestoreTimeout;let t=Object.entries(this._watchersRestorable);this._watchersRestorable={};for(let[r,n]of t)this.watchPath(r,n.options,n.handler)}async watcherAdd(t,r){let{folderPath:n}=t;(this._watchers[n]=this._watchers[n]||[]).push(t);let o=new Rmu(this,t,r);return await o.init(),o}watcherClose(t){t.watcher.close();let r=this._watchers[t.folderPath];if(r){let o=r.indexOf(t);r.splice(o,1),r.length||delete this._watchers[t.folderPath]}let n=t.filePath||t.folderPath;this._roots.has(n)&&(this._watchersRestorable[n]=t,this._watchersRestoreTimeout||(this._watchersRestoreTimeout=Ep.lang.defer(()=>this.watchersRestore())))}watcherExists(t,r,n,i){if(this._watchers[t]?.find(a=>a.handler===n&&(!a.filePath||a.filePath===i)&&a.options.ignore===r.ignore&&!!a.options.native==!!r.native&&(!r.recursive||a.options.recursive)))return!0;let s=yUe.default.dirname(t);for(let a=1;a<1/0;a++){if(this._watchers[s]?.find(l=>(a===1||l.options.recursive&&a<=(l.options.depth??QPe))&&l.handler===n&&(!l.filePath||l.filePath===i)&&l.options.ignore===r.ignore&&!!l.options.native==!!r.native&&(!r.recursive||l.options.recursive&&MPe&&l.options.native!==!1)))return!0;if(!MPe)break;let u=yUe.default.dirname(t);if(s===u)break;s=u}return!1}async watchDirectories(t,r,n,i,o){if(this.isClosed())return;t=Ep.lang.uniq(t).sort();let s;for(let a of t)if(!this.isIgnored(a,r.ignore)&&!this.watcherExists(a,r,n,i))try{let c=!r.recursive||MPe&&r.native!==!1?r:{...r,recursive:!1},l={watcher:Pei.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=yUe.default.dirname(a),h=a;await this.watchDirectories([m],f,n,h,p)}}catch(c){this.error(c)}return s}async watchDirectory(t,r,n,i,o){if(!this.isClosed()&&!this.isIgnored(t,r.ignore)){if(!r.recursive||MPe&&r.native!==!1)return this.watchersLock(()=>this.watchDirectories([t],r,n,i,o));{r={...r,recursive:!0};let s=r.depth??QPe,a=r.limit??eGt,[c]=await Ep.fs.readdir(t,r.ignore,s,a,this._closeSignal,r.readdirMap);return this.watchersLock(async()=>{let u=await this.watchDirectories([t],r,n,i,o);if(c.length){let l=Ep.fs.getDepth(t);for(let p of c){let d=Ep.fs.getDepth(p),f=Math.max(0,s-(d-l)),m={...r,depth:f};await this.watchDirectories([p],m,n,i,o||u)}}})}}}async watchFileOnce(t,r,n){if(this.isClosed()||(r={...r,ignoreInitial:!1},this.subwatcherExists(t,r)))return;let i={targetPath:t,options:r},o=(u,l)=>{l===t&&(c(),n())},s=new e(o),a=()=>{this._subwatchers.add(i),this.on(FN.CLOSE,c),s.watchFile(t,r,o)},c=()=>{this._subwatchers.delete(i),this.removeListener(FN.CLOSE,c),s.close()};return a()}async watchFile(t,r,n){if(this.isClosed()||this.isIgnored(t,r.ignore))return;r={...r,recursive:!1};let i=yUe.default.dirname(t);return this.watchDirectory(i,r,n,t)}async watchPollingOnce(t,r,n){if(this.isClosed())return;let i=!1,o=new bVo,s=await this.watchPolling(t,r,async()=>{i||!(await o.update(t,r.pollingTimeout)).length||i||(i=!0,s(),n())})}async watchPolling(t,r,n){if(this.isClosed())return Ep.lang.noop;if(this.pollerExists(t,r))return Ep.lang.noop;let i={...r,interval:r.pollingInterval??Emu},o={targetPath:t,options:r},s=()=>{this._pollers.add(o),this.on(FN.CLOSE,a),Pei.default.watchFile(t,i,n)},a=()=>{this._pollers.delete(o),this.removeListener(FN.CLOSE,a),Pei.default.unwatchFile(t,n)};return Ep.lang.attempt(s),()=>Ep.lang.attempt(a)}async watchUnknownChild(t,r,n){if(this.isClosed())return;let i=()=>this.watchPath(t,r,n);return this.watchFileOnce(t,r,i)}async watchUnknownTarget(t,r,n){if(this.isClosed())return;let i=()=>this.watchPath(t,r,n);return this.watchPollingOnce(t,r,i)}async watchPaths(t,r,n){if(this.isClosed())return;if(t=Ep.lang.uniq(t).sort(),t.every((o,s)=>t.every((a,c)=>c===s||!Ep.fs.isSubPath(o,a))))await Promise.all(t.map(o=>this.watchPath(o,r,n)));else for(let o of t)await this.watchPath(o,r,n)}async watchPath(t,r,n){if(this.isClosed()||(t=yUe.default.resolve(t),this.isIgnored(t,r.ignore)))return;let i=await Ep.fs.poll(t,r.pollingTimeout);if(i){if(i.isFile())return this.watchFile(t,r,n);if(i.isDirectory())return this.watchDirectory(t,r,n);this.error(`"${t}" is not supported`)}else{let o=yUe.default.dirname(t);return(await Ep.fs.poll(o,r.pollingTimeout))?.isDirectory()?this.watchUnknownChild(t,r,n):this.watchUnknownTarget(t,r,n)}}async watch(t,r,n=Ep.lang.noop){if(Ep.lang.isFunction(t))return this.watch([],{},t);if(Ep.lang.isUndefined(t))return this.watch([],r,n);if(Ep.lang.isFunction(r))return this.watch(t,{},r);if(Ep.lang.isUndefined(r))return this.watch(t,{},n);if(this.isClosed())return;this.isReady()&&(r.readdirMap=void 0);let i=Ep.lang.castArray(t);i.forEach(o=>this._roots.add(o)),await this.watchPaths(i,r,n),!this.isClosed()&&(n!==Ep.lang.noop&&this.on(FN.ALL,n),r.readdirMap=void 0,this.ready())}},Dei=EVo;Wei();or();var _7=require("fs/promises"),zhu=require("os"),VVo=we(require("path"),1),nQm=".fern",iQm="logs",_Vo=100*1024*1024;function oQm(){return"cli@5.27.3"}var wUe=class{logFilePath=null;initialized=!1;sessionStartTime;consoleLogger;constructor(){this.sessionStartTime=Date.now()}async initialize(t){if(this.initialized)return;this.consoleLogger=t;let r=nt(Yt.of((0,zhu.homedir)()),ke.of(nQm)),n=nt(r,ke.of(iQm));await cr(n)||await(0,_7.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=nt(n,ke.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${VVo.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
3814
3814
  `);await(0,_7.writeFile)(this.logFilePath,s,"utf-8"),this.initialized=!0,this.enforceLogSizeLimit(n)}getLogFilePath(){return this.logFilePath}async writeEntry(t){if(!this.initialized||!this.logFilePath)return;let r=JSON.stringify(t)+`
3815
3815
  `;try{await(0,_7.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:oQm(),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,_7.readdir)(t)).filter(c=>c.endsWith(".log")),i=[];for(let c of n){let u=VVo.default.join(t,c);try{let l=await(0,_7.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=_Vo/1024/1024;if(o<=_Vo){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<=_Vo)break;if(!(this.logFilePath!=null&&c.fullPath===this.logFilePath))try{await(0,_7.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 Hei={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function Uhu(e){let t=sQm();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:Hei});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",...Hei}})}catch{return new Response(JSON.stringify(i()),{headers:{"Content-Type":"application/json",...Hei}})}let d=/^\/_local\/(.*)/.exec(p.pathname);return u.method==="GET"&&d!=null?new Response(t.file(`/${d[1]}`),{headers:Hei}):new Response("Not Found",{status:404})},websocket:{open(u){let{connectionId:l}=u.data,p=setInterval(()=>{let d=s.get(u);if(!d)return;let f=Date.now();if(f-d.lastPong>9e4){u.close();return}try{u.send(JSON.stringify({type:"ping",timestamp:f}))}catch{u.close()}},3e4);s.set(u,{pingInterval:p,lastPong:Date.now()});try{u.send(JSON.stringify({type:"connected",connectionId:l}))}catch{}},message(u,l){try{let p=JSON.parse(l.toString());if(p.type==="pong"){let d=s.get(u);d&&(d.lastPong=Date.now())}else wUe.isMetricsMessage(p)&&n.logFrontendMetrics(p)}catch{}},close(u){let l=s.get(u);l&&(clearInterval(l.pingInterval),s.delete(u))}}});return{sendData:a,stop:u=>c.stop(u)}}function sQm(){return globalThis.Bun}or();sS();_t();var VEu=require("child_process"),sri=we(ZVo(),1),qEu=we(p8o(),1),Ev=require("fs"),QN=require("fs/promises"),GEu=require("os"),jN=we(require("path"),1),WEu=we(jx(),1),HEu=we(_Eu(),1),FUe=process.platform==="win32",ori=Ee.cyan("[docs]:"),j3m="etag",Q3m=23,I8o=e=>e.padEnd(Q3m," "),M3m="preview",L3m="app-preview",z3m="bundle",U3m=".next",_3m="standalone",V3m=".fern",q3m="packages/fern-docs/bundle/.next/server/instrumentation.js",G3m='Cannot find matching keyid: {"signatures":',W3m="ERR_PNPM_IGNORED_BUILDS";function H3m(e){try{let r=(0,VEu.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 j({message:`Windows long path support is not enabled. The docs bundle contains deeply nested .pnpm paths that exceed the 260-character MAX_PATH limit.
3816
3816
 
@@ -4244,7 +4244,7 @@ Please ensure you have membership at https://dashboard.buildwithfern.com, and as
4244
4244
 
4245
4245
  Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`:r}function nWm(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.
4246
4246
 
4247
- Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function iWm(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 oWm(e){try{return new URL(xN(e)).pathname}catch{return}}async function sWm({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await aWm({fdr:e,workspace:t,snippetsConfig:i,context:n});if(Object.keys(o).length===0){n.logger.debug("[SDK Dynamic IR] No snippet configs found, skipping S3 check");return}try{let s=Object.fromEntries(Object.entries(o).map(([l,p])=>[l,{packageName:p.packageName,version:p.version}])),c=(await e.api.register.checkSdkDynamicIrExists({orgId:hn.OrgId(r),snippetConfiguration:s})).existingDynamicIrs??{};if(Object.keys(c).length===0){n.logger.debug("[SDK Dynamic IR] No existing SDK dynamic IRs found in S3");return}let u={};for(let[l,p]of Object.entries(c??{}))try{n.logger.debug(`Downloading existing SDK dynamic IR for ${l}...`);let d=await fetch(p.downloadUrl);if(d.ok){let f=await d.json();u[l]={dynamicIR:f},n.logger.debug(`Successfully downloaded SDK dynamic IR for ${l}`)}else n.logger.warn(`Failed to download SDK dynamic IR for ${l}: ${d.status}`)}catch(d){n.logger.warn(`Error downloading SDK dynamic IR for ${l}: ${d}`)}return Object.keys(u).length>0?u:void 0}catch(s){n.logger.debug(`Error checking for existing SDK dynamic IRs: ${s}`);return}}function QGo(e){return e.replace(/^https:\/\//,"")}async function aWm({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&&QGo(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 cWm({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 cWm({fdr:e,workspace:t,language:r,snippetName:n,context:i}){let o;switch(r){case"csharp":o="Csharp";break;case"go":o="Go";break;case"java":o="Java";break;case"python":o="Python";break;case"ruby":o="Ruby";break;case"typescript":o="TypeScript";break;case"php":o="Php";break;case"swift":o="Swift";break;default:return}let s,a,c;if(t.generatorsConfiguration?.groups){let u=[];for(let l of t.generatorsConfiguration.groups)for(let p of l.generators)if(p.language===r){let d=zn.getPackageName({generatorInvocation:p});d&&u.push(d),!a&&d&&(a=d,c=p.name,p.outputMode.type==="githubV2"&&(s=`${p.outputMode.githubV2.owner}/${p.outputMode.githubV2.repo}`))}}if(!a){i.logger.debug(`[SDK Dynamic IR] ${r}: no generator found with a package name`);return}try{let u=await e.sdks.computeSemanticVersion({githubRepository:s,language:o,package:a});return i.logger.debug(`[SDK Dynamic IR] ${r}: computed version ${u.version} for package "${a}"`),{version:u.version,generatorPackage:a}}catch(u){i.logger.debug(`[SDK Dynamic IR] ${r}: error computing version: ${u}`);return}}async function uWm({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&&QGo(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=_Ue({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=QGo(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=rA({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 Kh(r,e),dynamicGeneratorConfig:u}),d=rLe({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 lWm({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 pWm({docsDefinition:e,isPreview:t,context:r}){e.config.aiChatConfig==null||t||r.logger.warn(Ee.yellow("Enabling Ask Fern from docs.yml is deprecated. Please enable it from the Fern dashboard instead."))}function fWm(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 sBu(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 h9t=[60*1e3,300*1e3,300*1e3];async function g9t({organization:e,apiWorkspaces:t,ossWorkspaces:r,docsWorkspace:n,context:i,token:o,instanceUrl:s,preview:a,previewId:c,disableTemplates:u,skipUpload:l,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m}){let h=a&&!n.config.settings?.substituteEnvVars;n.config=Dy(n.config,{onError:C=>i.failAndThrow(void 0,C,{code:j.Code.EnvironmentError})},{substituteAsEmpty:h});let A=n.config.instances;if(A.length===0){i.failAndThrow("No instances specified in docs.yml! Cannot register docs.",void 0,{code:j.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:j.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:j.Code.ConfigError});return}let I=[];y.customDomain!=null&&(typeof y.customDomain=="string"?I.push(y.customDomain):Array.isArray(y.customDomain)&&I.push(...y.customDomain)),y.multiSource===!0&&dWm(y.url,I,i),i.logger.info(`Starting docs publishing for ${a?"preview":"production"}: ${y.url}`),i.logger.debug(`Organization: ${e}, Preview: ${a}, APIs: ${t.length}, OSS: ${r.length}`);let w;return await i.runInteractiveTask({name:y.url},async()=>{let C=performance.now(),x=()=>nBu({docsWorkspace:n,customDomains:I,domain:y.url,token:o,organization:e,context:i,apiWorkspaces:t,ossWorkspaces:r,preview:a,previewId:c,editThisPage:y.editThisPage,disableTemplates:u,skipUpload:l,withAiExamples:n.config.aiExamples?.enabled??n.config.experimental?.aiExamples??!0,excludeApis:n.config.experimental?.excludeApis??!1,targetAudiences:y.audiences?Array.isArray(y.audiences)?y.audiences:[y.audiences]:void 0,docsUrl:y.url,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m,multiSource:y.multiSource??!1});for(let O=0;;O++)try{w=await x();break}catch(F){if(!(F instanceof GEt)||O>=h9t.length){if(F instanceof GEt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:j.Code.NetworkError});throw F}let P=h9t[O]??h9t[h9t.length-1]??6e4,U=P/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${U} minute${U===1?"":"s"} (attempt ${O+1}/${h9t.length})...`),await new Promise(J=>setTimeout(J,P))}let B=performance.now()-C;i.logger.debug(`Docs publishing completed in ${B.toFixed(0)}ms`)}),w}function aBu(e){try{let t=e.startsWith("https://")||e.startsWith("http://")?e:`https://${e}`;return new URL(t).pathname}catch{return"/"}}function dWm(e,t,r){let n=aBu(e);for(let i of t){let o=aBu(i);o!=="/"&&n!==o&&r.failAndThrow(`When multi-source is enabled, the url and custom-domain must share the same basepath. Instance url '${e}' has basepath '${n}' but custom-domain '${i}' has basepath '${o}'.`,void 0,{code:j.Code.ConfigError})}}_t();var fii=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 Cm({context:this.context,task:this.task});try{let s=await g9t({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.27.2",loginCommand:"fern auth login"});return o.getResult()===zf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:Kn(s)}}}};jt();var WEt=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(`
4247
+ Please ensure you have membership at https://dashboard.buildwithfern.com, and ask a team member for an invite if not.`}function iWm(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 oWm(e){try{return new URL(xN(e)).pathname}catch{return}}async function sWm({fdr:e,workspace:t,organization:r,context:n,snippetsConfig:i}){if(!t)return;let o=await aWm({fdr:e,workspace:t,snippetsConfig:i,context:n});if(Object.keys(o).length===0){n.logger.debug("[SDK Dynamic IR] No snippet configs found, skipping S3 check");return}try{let s=Object.fromEntries(Object.entries(o).map(([l,p])=>[l,{packageName:p.packageName,version:p.version}])),c=(await e.api.register.checkSdkDynamicIrExists({orgId:hn.OrgId(r),snippetConfiguration:s})).existingDynamicIrs??{};if(Object.keys(c).length===0){n.logger.debug("[SDK Dynamic IR] No existing SDK dynamic IRs found in S3");return}let u={};for(let[l,p]of Object.entries(c??{}))try{n.logger.debug(`Downloading existing SDK dynamic IR for ${l}...`);let d=await fetch(p.downloadUrl);if(d.ok){let f=await d.json();u[l]={dynamicIR:f},n.logger.debug(`Successfully downloaded SDK dynamic IR for ${l}`)}else n.logger.warn(`Failed to download SDK dynamic IR for ${l}: ${d.status}`)}catch(d){n.logger.warn(`Error downloading SDK dynamic IR for ${l}: ${d}`)}return Object.keys(u).length>0?u:void 0}catch(s){n.logger.debug(`Error checking for existing SDK dynamic IRs: ${s}`);return}}function QGo(e){return e.replace(/^https:\/\//,"")}async function aWm({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&&QGo(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 cWm({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 cWm({fdr:e,workspace:t,language:r,snippetName:n,context:i}){let o;switch(r){case"csharp":o="Csharp";break;case"go":o="Go";break;case"java":o="Java";break;case"python":o="Python";break;case"ruby":o="Ruby";break;case"typescript":o="TypeScript";break;case"php":o="Php";break;case"swift":o="Swift";break;default:return}let s,a,c;if(t.generatorsConfiguration?.groups){let u=[];for(let l of t.generatorsConfiguration.groups)for(let p of l.generators)if(p.language===r){let d=zn.getPackageName({generatorInvocation:p});d&&u.push(d),!a&&d&&(a=d,c=p.name,p.outputMode.type==="githubV2"&&(s=`${p.outputMode.githubV2.owner}/${p.outputMode.githubV2.repo}`))}}if(!a){i.logger.debug(`[SDK Dynamic IR] ${r}: no generator found with a package name`);return}try{let u=await e.sdks.computeSemanticVersion({githubRepository:s,language:o,package:a});return i.logger.debug(`[SDK Dynamic IR] ${r}: computed version ${u.version} for package "${a}"`),{version:u.version,generatorPackage:a}}catch(u){i.logger.debug(`[SDK Dynamic IR] ${r}: error computing version: ${u}`);return}}async function uWm({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&&QGo(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=_Ue({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=QGo(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=rA({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 Kh(r,e),dynamicGeneratorConfig:u}),d=rLe({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 lWm({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 pWm({docsDefinition:e,isPreview:t,context:r}){e.config.aiChatConfig==null||t||r.logger.warn(Ee.yellow("Enabling Ask Fern from docs.yml is deprecated. Please enable it from the Fern dashboard instead."))}function fWm(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 sBu(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 h9t=[60*1e3,300*1e3,300*1e3];async function g9t({organization:e,apiWorkspaces:t,ossWorkspaces:r,docsWorkspace:n,context:i,token:o,instanceUrl:s,preview:a,previewId:c,disableTemplates:u,skipUpload:l,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m}){let h=a&&!n.config.settings?.substituteEnvVars;n.config=Dy(n.config,{onError:C=>i.failAndThrow(void 0,C,{code:j.Code.EnvironmentError})},{substituteAsEmpty:h});let A=n.config.instances;if(A.length===0){i.failAndThrow("No instances specified in docs.yml! Cannot register docs.",void 0,{code:j.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:j.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:j.Code.ConfigError});return}let I=[];y.customDomain!=null&&(typeof y.customDomain=="string"?I.push(y.customDomain):Array.isArray(y.customDomain)&&I.push(...y.customDomain)),y.multiSource===!0&&dWm(y.url,I,i),i.logger.info(`Starting docs publishing for ${a?"preview":"production"}: ${y.url}`),i.logger.debug(`Organization: ${e}, Preview: ${a}, APIs: ${t.length}, OSS: ${r.length}`);let w;return await i.runInteractiveTask({name:y.url},async()=>{let C=performance.now(),x=()=>nBu({docsWorkspace:n,customDomains:I,domain:y.url,token:o,organization:e,context:i,apiWorkspaces:t,ossWorkspaces:r,preview:a,previewId:c,editThisPage:y.editThisPage,disableTemplates:u,skipUpload:l,withAiExamples:n.config.aiExamples?.enabled??n.config.experimental?.aiExamples??!0,excludeApis:n.config.experimental?.excludeApis??!1,targetAudiences:y.audiences?Array.isArray(y.audiences)?y.audiences:[y.audiences]:void 0,docsUrl:y.url,cliVersion:p,ciSource:d,deployerAuthor:f,loginCommand:m,multiSource:y.multiSource??!1});for(let O=0;;O++)try{w=await x();break}catch(F){if(!(F instanceof GEt)||O>=h9t.length){if(F instanceof GEt)return i.failAndThrow("Another docs publish is currently in progress. Please try again once the other publish is complete.",void 0,{code:j.Code.NetworkError});throw F}let P=h9t[O]??h9t[h9t.length-1]??6e4,U=P/6e4;i.logger.warn(`Another docs publish is in progress. Retrying in ${U} minute${U===1?"":"s"} (attempt ${O+1}/${h9t.length})...`),await new Promise(J=>setTimeout(J,P))}let B=performance.now()-C;i.logger.debug(`Docs publishing completed in ${B.toFixed(0)}ms`)}),w}function aBu(e){try{let t=e.startsWith("https://")||e.startsWith("http://")?e:`https://${e}`;return new URL(t).pathname}catch{return"/"}}function dWm(e,t,r){let n=aBu(e);for(let i of t){let o=aBu(i);o!=="/"&&n!==o&&r.failAndThrow(`When multi-source is enabled, the url and custom-domain must share the same basepath. Instance url '${e}' has basepath '${n}' but custom-domain '${i}' has basepath '${o}'.`,void 0,{code:j.Code.ConfigError})}}_t();var fii=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 Cm({context:this.context,task:this.task});try{let s=await g9t({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.27.3",loginCommand:"fern auth login"});return o.getResult()===zf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:Kn(s)}}}};jt();var WEt=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(`
4248
4248
  `),this.stream.write(`${Ee.cyan("\u25C6")} ${Ee.bold(t.title)}
4249
4249
  `),t.subtitle!=null&&this.stream.write(` ${Ee.dim(t.subtitle)}
4250
4250
  `),this.stream.write(`
@@ -4910,7 +4910,7 @@ For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides
4910
4910
  `),h="";return c&&(h=l.style.error(c)),[`${p} ${f} ${s}`,[m,h].filter(Boolean).join(`
4911
4911
  `)]});var Eog=$C((e,t)=>{let{validate:r=()=>!0}=e,n=Dv(e.theme),[i,o]=vu("idle"),[s,a]=vu(),[c,u]=vu(""),l=XC({status:i,theme:n});ZC(async(h,A)=>{if(i==="idle")if(YC(h)){let y=c;o("loading");let I=await r(y);I===!0?(u(y),o("done"),t(y)):(A.write(c),a(I||"You must provide a valid value"),o("idle"))}else u(A.line),a(void 0)});let p=n.style.message(e.message,i),d="",f;e.mask?d=(typeof e.mask=="string"?e.mask:"*").repeat(c.length):i!=="done"&&(f=`${n.style.help("[input is masked]")}${FSt}`),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 N8e=we(lS(),1);var vog={icon:{cursor:zw.pointer},style:{disabled:e=>N8e.default.dim(`- ${e}`),searchTerm:e=>N8e.default.cyan(e),description:e=>N8e.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${N8e.default.bold(t)} ${N8e.default.dim(r)}`).join(N8e.default.dim(" \u2022 "))},helpMode:"always"};function Gbs(e){return!Td.isSeparator(e)&&!e.disabled}function Iog(e){return e.map(t=>{if(Td.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 Cog=$C((e,t)=>{let{pageSize:r=7,validate:n=()=>!0}=e,i=Dv(vog,e.theme),[o,s]=vu("loading"),[a,c]=vu(""),[u,l]=vu([]),[p,d]=vu(),f=XC({status:o,theme:i}),m=IL(()=>{let U=u.findIndex(Gbs),J=u.findLastIndex(Gbs);return{first:U,last:J}},[u]),[h=m.first,A]=vu();A4(()=>{let U=new AbortController;return s("loading"),d(void 0),(async()=>{try{let $=await e.source(a||void 0,{signal:U.signal});U.signal.aborted||(A(void 0),d(void 0),l(Iog($)),s("idle"))}catch($){!U.signal.aborted&&$ instanceof Error&&d($.message)}})(),()=>{U.abort()}},[a]);let y=u[h];ZC(async(U,J)=>{if(YC(U))if(y){s("loading");let $=await n(y.value);s("idle"),$===!0?(s("done"),t(y.value)):y.name===a?d($||"You must provide a valid value"):(J.write(y.name),c(y.name))}else J.write(a);else if(Nhe(U)&&y)J.clearLine(0),J.write(y.name),c(y.name);else if(o!=="loading"&&(SP(U)||vL(U))){if(J.clearLine(0),SP(U)&&h!==m.first||vL(U)&&h!==m.last){let $=SP(U)?-1:1,ne=h;do ne=(ne+$+u.length)%u.length;while(!Gbs(u[ne]));A(ne)}}else c(J.line)});let I=i.style.message(e.message,o),w;if(i.helpMode!=="never")if(e.instructions){let{pager:U,navigation:J}=e.instructions;w=i.style.help(u.length>r?U:J)}else w=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let C=D8e({items:u,active:h,renderItem({item:U,isActive:J}){if(Td.isSeparator(U))return` ${U.separator}`;if(U.disabled){let fe=typeof U.disabled=="string"?U.disabled:"(disabled)";return i.style.disabled(`${U.name} ${fe}`)}let $=J?i.style.highlight:fe=>fe,ne=J?i.icon.cursor:" ";return $(`${ne} ${U.name}`)},pageSize:r,loop:!1}),x;p?x=i.style.error(p):u.length===0&&a!==""&&o==="idle"&&(x=i.style.error("No results found"));let B;if(o==="done"&&y)return[f,I,i.style.answer(y.short)].filter(Boolean).join(" ").trimEnd();B=i.style.searchTerm(a);let O=y?.description,F=[f,I,B].filter(Boolean).join(" ").trimEnd(),P=[x??C," ",O?i.style.description(O):"",w].filter(Boolean).join(`
4912
4912
  `).trimEnd();return[F,P]});var NSt=we(lS(),1);var wog={icon:{cursor:zw.pointer},style:{disabled:e=>NSt.default.dim(`- ${e}`),description:e=>NSt.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${NSt.default.bold(t)} ${NSt.default.dim(r)}`).join(NSt.default.dim(" \u2022 "))},helpMode:"always",indexMode:"hidden",keybindings:[]};function kSt(e){return!Td.isSeparator(e)&&!e.disabled}function xog(e){return e.map(t=>{if(Td.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 Wbs=$C((e,t)=>{let{loop:r=!0,pageSize:n=7}=e,i=Dv(wog,e.theme),{keybindings:o}=i,[s,a]=vu("idle"),c=XC({status:s,theme:i}),u=P8e(),l=!o.includes("vim"),p=IL(()=>xog(e.choices),[e.choices]),d=IL(()=>{let O=p.findIndex(kSt),F=p.findLastIndex(kSt);if(O===-1)throw new fae("[select prompt] No selectable choices. All choices are disabled.");return{first:O,last:F}},[p]),f=IL(()=>"default"in e?p.findIndex(O=>kSt(O)&&O.value===e.default):-1,[e.default,p]),[m,h]=vu(f===-1?d.first:f),A=p[m];ZC((O,F)=>{if(clearTimeout(u.current),YC(O))a("done"),t(A.value);else if(SP(O,o)||vL(O,o)){if(F.clearLine(0),r||SP(O,o)&&m!==d.first||vL(O,o)&&m!==d.last){let P=SP(O,o)?-1:1,U=m;do U=(U+P+p.length)%p.length;while(!kSt(p[U]));h(U)}}else if(QYt(O)&&!Number.isNaN(Number(F.line))){let P=Number(F.line)-1,U=-1,J=p.findIndex(ne=>Td.isSeparator(ne)?!1:(U++,U===P)),$=p[J];$!=null&&kSt($)&&h(J),u.current=setTimeout(()=>{F.clearLine(0)},700)}else if(T8e(O))F.clearLine(0);else if(l){let P=F.line.toLowerCase(),U=p.findIndex(J=>Td.isSeparator(J)||!kSt(J)?!1:J.name.toLowerCase().startsWith(P));U!==-1&&h(U),u.current=setTimeout(()=>{F.clearLine(0)},700)}}),A4(()=>()=>{clearTimeout(u.current)},[]);let y=i.style.message(e.message,s),I;if(i.helpMode!=="never")if(e.instructions){let{pager:O,navigation:F}=e.instructions;I=i.style.help(p.length>n?O:F)}else I=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let w=0,C=D8e({items:p,active:m,renderItem({item:O,isActive:F,index:P}){if(Td.isSeparator(O))return w++,` ${O.separator}`;let U=i.indexMode==="number"?`${P+1-w}. `:"";if(O.disabled){let ne=typeof O.disabled=="string"?O.disabled:"(disabled)";return i.style.disabled(`${U}${O.name} ${ne}`)}let J=F?i.style.highlight:ne=>ne,$=F?i.icon.cursor:" ";return J(`${$} ${U}${O.name}`)},pageSize:n,loop:r});if(s==="done")return[c,y,i.style.answer(A.short)].filter(Boolean).join(" ");let{description:x}=A;return`${[[c,y].filter(Boolean).join(" "),C," ",x?i.style.description(x):"",I].filter(Boolean).join(`
4913
- `).trimEnd()}${FSt}`});ao();var dae={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"},Sog={[dae.GENERATION_STARTED]:!1,[dae.GENERATION_COMPLETED]:!1,[dae.GENERATION_FAILED]:!0,[dae.VERIFICATION_FAILED]:!0,[dae.SDK_PR_CREATED]:!1,[dae.UPGRADE_APPLIED]:!1,[dae.MAJOR_VERSION_BUMP]:!1};function Ctl(e){return Sog[e]}function wtl(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 xtl(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 Stl(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 Ttl(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 Btl(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?dae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?dae.VERIFICATION_FAILED:dae.GENERATION_FAILED}var Tog="",Bog="FERN_AUTOMATION_EVENTS_ORIGIN",Oog=3e3,AAi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[Bog]??Tog)),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(),Oog);try{let s={"content-type":"application/json"},a=await vV();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(Ttl(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function Otl(){let{fern_run_id:e,github_run_id:t}=Kae();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.27.2"}}function Ptl(){return process.env.FERN_AUTOMATION==="true"}var yAi=class{constructor(t,r=AAi.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=Otl()}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:wtl(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!Ctl(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:xtl(t,r),context:{automation:Stl(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};_t();function bAi(e,t,r){if(t instanceof pu)return;let n=KGe(t,r?.code),i=r?.argv??process.argv,o=i.join(" "),s=r?.message??(t instanceof Error?t.message:void 0)??"",a=t??new j({message:s,code:n});Ptl()?Dog(i,e,n,s,a):Pog(e,o,n,a)}function Pog(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),HGe(r)&&e.captureException(n,{tags:{"error.code":r}})}function Dog(e,t,r,n,i){let o=Btl(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}_t();function j8e(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function EAi({cliName:e,packageVersion:t,isLocal:r}){return j8e()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var vAi=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(EAi(r)&&n!=null&&n.length>0){let i="production";if(i==null||i.length===0)throw new j({message:"SENTRY_ENVIRONMENT must be set when SENTRY_DSN is configured",code:j.Code.ConfigError});this.sentry=cPt({dsn:n,release:t,environment:i,defaultIntegrations:!1,integrations:[Pqe(),zge(),Uge(),wge(),Lge()],tracesSampleRate:0,attachStacktrace:!0,sendClientReports:!1}),uPt()}}captureException(t,r){if(this.sentry!=null)try{let n=r?.tags,i=r?.context,o=n!=null&&Object.keys(n).length>0,s=i!=null&&Object.values(i).some(a=>a!=null);return!o&&!s?this.sentry.captureException(t):FB(a=>{if(o&&a.setTags(n),i!=null)for(let[c,u]of Object.entries(i))u!=null&&a.setContext(c,u);return this.sentry?.captureException(t,void 0,a)})}catch{return}}async flush(){this.sentry!=null&&await Promise.resolve(this.sentry.flush(2e3)).catch(()=>{})}};_t();var IAi=class{originalWrite;redirected=!1;redirect(){if(this.redirected)throw new j({message:"StdoutRedirector: already redirected \u2014 did you forget to restore()?",code:j.Code.InternalError});this.originalWrite=process.stdout.write,process.stdout.write=process.stderr.write.bind(process.stderr),this.redirected=!0}restore(){!this.redirected||this.originalWrite==null||(process.stdout.write=this.originalWrite,this.originalWrite=void 0,this.redirected=!1)}async withRedirect(t){this.redirect();try{return await t()}finally{this.restore()}}};jt();D0();_t();var UYt=class{result=zf.Success;lastFailureMessage=void 0;logImmediately;logPrefix;title;subtasks=[];shouldBufferLogs;bufferedLogs=[];status="notStarted";onResult;instrumentPostHogEventImpl;captureExceptionImpl;emitAutomationTelemetryEventImpl;constructor({logImmediately:t,logPrefix:r,title:n,takeOverTerminal:i,onResult:o,shouldBufferLogs:s,instrumentPostHogEvent:a,captureException:c,emitAutomationTelemetryEvent:u}){this.logImmediately=t,this.logPrefix=r??"",this.title=n,this.takeOverTerminal=i,this.onResult=o,this.shouldBufferLogs=s,this.instrumentPostHogEventImpl=a,this.captureExceptionImpl=c,this.emitAutomationTelemetryEventImpl=u}start(){return this.status="running",this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.status="finished",this.flushLogs(),this.onResult?.(this.getResult()))}isFinished(){return this.status==="finished"}takeOverTerminal;failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),this.finish(),new pu}failWithoutThrowing(t,r,n){this.result=zf.Failure,!(r instanceof pu)&&(t!=null&&(this.lastFailureMessage=t),ZLt({message:t,error:r,logger:this.logger}),bAi(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=UI(this.logAtLevel.bind(this));addInteractiveTask({name:t,subtitle:r}){let n=new Hbs({name:t,subtitle:r,logImmediately:i=>this.logImmediately(i),logPrefix:`${this.logPrefix}${Ee.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()===zf.Success}printInteractiveTasks({spinner:t}){return this.subtasks.map(r=>r.print({spinner:t})).join(`
4913
+ `).trimEnd()}${FSt}`});ao();var dae={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"},Sog={[dae.GENERATION_STARTED]:!1,[dae.GENERATION_COMPLETED]:!1,[dae.GENERATION_FAILED]:!0,[dae.VERIFICATION_FAILED]:!0,[dae.SDK_PR_CREATED]:!1,[dae.UPGRADE_APPLIED]:!1,[dae.MAJOR_VERSION_BUMP]:!1};function Ctl(e){return Sog[e]}function wtl(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 xtl(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 Stl(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 Ttl(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 Btl(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?dae.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?dae.VERIFICATION_FAILED:dae.GENERATION_FAILED}var Tog="",Bog="FERN_AUTOMATION_EVENTS_ORIGIN",Oog=3e3,AAi=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[Bog]??Tog)),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(),Oog);try{let s={"content-type":"application/json"},a=await vV();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(Ttl(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function Otl(){let{fern_run_id:e,github_run_id:t}=Kae();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.27.3"}}function Ptl(){return process.env.FERN_AUTOMATION==="true"}var yAi=class{constructor(t,r=AAi.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=Otl()}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:wtl(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!Ctl(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:xtl(t,r),context:{automation:Stl(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};_t();function bAi(e,t,r){if(t instanceof pu)return;let n=KGe(t,r?.code),i=r?.argv??process.argv,o=i.join(" "),s=r?.message??(t instanceof Error?t.message:void 0)??"",a=t??new j({message:s,code:n});Ptl()?Dog(i,e,n,s,a):Pog(e,o,n,a)}function Pog(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),HGe(r)&&e.captureException(n,{tags:{"error.code":r}})}function Dog(e,t,r,n,i){let o=Btl(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}_t();function j8e(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function EAi({cliName:e,packageVersion:t,isLocal:r}){return j8e()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var vAi=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(EAi(r)&&n!=null&&n.length>0){let i="production";if(i==null||i.length===0)throw new j({message:"SENTRY_ENVIRONMENT must be set when SENTRY_DSN is configured",code:j.Code.ConfigError});this.sentry=cPt({dsn:n,release:t,environment:i,defaultIntegrations:!1,integrations:[Pqe(),zge(),Uge(),wge(),Lge()],tracesSampleRate:0,attachStacktrace:!0,sendClientReports:!1}),uPt()}}captureException(t,r){if(this.sentry!=null)try{let n=r?.tags,i=r?.context,o=n!=null&&Object.keys(n).length>0,s=i!=null&&Object.values(i).some(a=>a!=null);return!o&&!s?this.sentry.captureException(t):FB(a=>{if(o&&a.setTags(n),i!=null)for(let[c,u]of Object.entries(i))u!=null&&a.setContext(c,u);return this.sentry?.captureException(t,void 0,a)})}catch{return}}async flush(){this.sentry!=null&&await Promise.resolve(this.sentry.flush(2e3)).catch(()=>{})}};_t();var IAi=class{originalWrite;redirected=!1;redirect(){if(this.redirected)throw new j({message:"StdoutRedirector: already redirected \u2014 did you forget to restore()?",code:j.Code.InternalError});this.originalWrite=process.stdout.write,process.stdout.write=process.stderr.write.bind(process.stderr),this.redirected=!0}restore(){!this.redirected||this.originalWrite==null||(process.stdout.write=this.originalWrite,this.originalWrite=void 0,this.redirected=!1)}async withRedirect(t){this.redirect();try{return await t()}finally{this.restore()}}};jt();D0();_t();var UYt=class{result=zf.Success;lastFailureMessage=void 0;logImmediately;logPrefix;title;subtasks=[];shouldBufferLogs;bufferedLogs=[];status="notStarted";onResult;instrumentPostHogEventImpl;captureExceptionImpl;emitAutomationTelemetryEventImpl;constructor({logImmediately:t,logPrefix:r,title:n,takeOverTerminal:i,onResult:o,shouldBufferLogs:s,instrumentPostHogEvent:a,captureException:c,emitAutomationTelemetryEvent:u}){this.logImmediately=t,this.logPrefix=r??"",this.title=n,this.takeOverTerminal=i,this.onResult=o,this.shouldBufferLogs=s,this.instrumentPostHogEventImpl=a,this.captureExceptionImpl=c,this.emitAutomationTelemetryEventImpl=u}start(){return this.status="running",this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.status="finished",this.flushLogs(),this.onResult?.(this.getResult()))}isFinished(){return this.status==="finished"}takeOverTerminal;failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),this.finish(),new pu}failWithoutThrowing(t,r,n){this.result=zf.Failure,!(r instanceof pu)&&(t!=null&&(this.lastFailureMessage=t),ZLt({message:t,error:r,logger:this.logger}),bAi(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=UI(this.logAtLevel.bind(this));addInteractiveTask({name:t,subtitle:r}){let n=new Hbs({name:t,subtitle:r,logImmediately:i=>this.logImmediately(i),logPrefix:`${this.logPrefix}${Ee.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()===zf.Success}printInteractiveTasks({spinner:t}){return this.subtasks.map(r=>r.print({spinner:t})).join(`
4914
4914
  `)}},Hbs=class extends UYt{name;subtitle;constructor({name:t,subtitle:r,...n}){super(n),this.name=t,this.subtitle=r}start(){return super.start(),this.logAtLevelWithOverrides(qn.Info,["Started."],{omitOnTTY:!0}),this.flushLogs(),this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.result===zf.Success?this.logAtLevelWithOverrides(qn.Info,["Finished."],{omitOnTTY:!0}):this.logAtLevelWithOverrides(qn.Error,["Failed."],{omitOnTTY:!0}),super.finish())}setSubtitle(t){this.subtitle=t}print({spinner:t}){let r=[this.name];return this.subtitle!=null&&r.push(Ee.dim(this.subtitle)),r.push(...this.subtasks.map(n=>n.print({spinner:t}))),Pj({prefix:this.getIcon({spinner:t}),content:r.join(`
4915
4915
  `)})}printInteractiveTasks({spinner:t}){return this.print({spinner:t})}getIcon({spinner:t}){let r=this.subtasks.length>0;switch(this.status){case"notStarted":return r?Ee.dim("\u25B8 "):Ee.dim("\u25E6 ");case"running":return r?Ee.cyan("\u25BE "):t;case"finished":switch(this.getResult()){case zf.Success:return r?Ee.green("\u25BE "):Ee.green("\u2713 ");case zf.Failure:return r?Ee.red("\u25BE "):Ee.red("x ")}}}getResult(){if(this.result===zf.Failure)return zf.Failure;for(let t of this.subtasks)if(t.getResult()===zf.Failure)return zf.Failure;return zf.Success}};_t();var Dtl=we(DMe(),1);function Rtl(e){return e.filter(t=>t.isUpgradeAvailable).length>0}function Rog(e){return(e.cliUpgradeInfo?.isUpgradeAvailable??!1)||Rtl(e.generatorUpgradeInfo)}async function Ftl({cliEnvironment:e,upgradeInfo:t}){if(!Rog(t)||e.packageVersion==t.cliUpgradeInfo?.latestVersion)return;let r=`${Ee.underline("Upgrades available")}
4916
4916
 
@@ -4919,7 +4919,7 @@ For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides
4919
4919
  Run ${Ee.cyan("fern generator upgrade")} to upgrade your generators.`),i.length>2&&(r+=`
4920
4920
  Run ${Ee.cyan("fern generator upgrade --list")} to see the full list of generator upgrades available.`),Tot(r,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"})}async function Kbs({generatorUpgradeInfo:e,header:t,limit:r,includeBoxen:n=!0}){if(!Rtl(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+=`
4921
4921
  ${await Fog(a.generatorName)} (${a.apiName!=null?"API: "+a.apiName+", ":""}Group: ${a.generatorGroup}) `+Ee.dim(a.currentVersion)+Ee.reset(" \u2192 ")+Ee.green(a.latestVersion);return i+=`
4922
- `,n?Tot(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function Fog(e){let r=await new Dtl.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new j({message:`Generator ${e} not found`,code:j.Code.ConfigError});return r.body.displayName}_t();async function kog({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await ktl({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=vMe(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await Q1({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 ktl({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=vMe(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await Q1({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 ktl({cliContext:e,apiWorkspaces:t,perGeneratorAction:r,generatorFilter:n,groupFilter:i}){await Promise.all(t.map(async o=>{await e.runTaskForWorkspace(o,async s=>{let a=await q3({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?ly(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 Ntl(e,t,r){let n=[];for(let[i,o]of Object.entries(e))for(let[s,a]of Object.entries(o)){r.debug(`Checking if ${s} in group ${i} has an upgrade available...`);let c;try{c=UQ(a.latestVersion,a.previousVersion)}catch{throw new j({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:j.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 CAi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await kog({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(...Ntl(u,c,t.logger));else s.push(...Ntl(a.versions,void 0,t.logger))}return s}_t();async function jhe({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await zRt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new j({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:j.Code.NetworkError})}}var jtl=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],wAi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=qn.Info;isLocal;stdoutRedirector=new IAi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await V_t();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new h3t(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 vAi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new yAi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.27.2"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${Ee.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new pu}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof pu)&&(ZLt({message:t,error:r,logger:this.logger}),bAi(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)+`
4922
+ `,n?Tot(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function Fog(e){let r=await new Dtl.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new j({message:`Generator ${e} not found`,code:j.Code.ConfigError});return r.body.displayName}_t();async function kog({cliContext:e,project:{apiWorkspaces:t},generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){if(t.length===1){let a={type:"singleApi",versions:{}};return await ktl({cliContext:e,apiWorkspaces:t,perGeneratorAction:async(c,u,l,p)=>{a.versions[u]==null&&(a.versions[u]={});let d=vMe(l.name);if(d==null){p.logger.debug(`Skipping unknown generator: ${l.name}`);return}let f=await Q1({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 ktl({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=vMe(u.name);if(p==null){l.logger.debug(`Skipping unknown generator: ${u.name}`);return}let d=await Q1({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 ktl({cliContext:e,apiWorkspaces:t,perGeneratorAction:r,generatorFilter:n,groupFilter:i}){await Promise.all(t.map(async o=>{await e.runTaskForWorkspace(o,async s=>{let a=await q3({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?ly(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 Ntl(e,t,r){let n=[];for(let[i,o]of Object.entries(e))for(let[s,a]of Object.entries(o)){r.debug(`Checking if ${s} in group ${i} has an upgrade available...`);let c;try{c=UQ(a.latestVersion,a.previousVersion)}catch{throw new j({message:`Generator "${s}" has an invalid version "${a.previousVersion}" in generators.yml. Use an exact version like 1.2.3.`,code:j.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 CAi({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o}){let s=[];if(e!=null){let a=await kog({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(...Ntl(u,c,t.logger));else s.push(...Ntl(a.versions,void 0,t.logger))}return s}_t();async function jhe({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await zRt(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new j({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:j.Code.NetworkError})}}var jtl=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],wAi=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=qn.Info;isLocal;stdoutRedirector=new IAi;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await V_t();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new h3t(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 vAi({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new yAi(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.27.3"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${Ee.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new pu}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof pu)&&(ZLt({message:t,error:r,logger:this.logger}),bAi(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)+`
4923
4923
  `),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 Ftl({cliEnvironment:this.environment,upgradeInfo:t});r!=null&&(r.endsWith(`
4924
4924
  `)||(r+=`
4925
4925
  `),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=lOi(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 UYt(t);return this.ttyAwareLogger.registerTask(r),r}USE_NODE_18_OR_ABOVE_MESSAGE="The Fern CLI requires Node 18+ or above.";async runTaskWithInit(t,r){let n=this.addTaskWithInit(t).start(),i;try{i=await r(n)}catch(o){throw n.failWithoutThrowing(void 0,o),new pu}finally{n.finish()}return i}instrumentPostHogEvent(t){this.isLocal||this.posthogManager.sendEvent(t)}instrumentPostHogAutomationEvent(t){this.isLocal||this.posthogManager.sendAutomationEvent(t)}captureException(t,r){return this.sentryClient.captureException(t,r)}emitAutomationTelemetryEvent(t,r){this.automationTelemetryManager.emit(t,r)}logger=UI((t,...r)=>this.log(t,...r));stderr=UI((t,...r)=>this.logStderr(t,...r));constructTaskInitForWorkspace(t){let r=t.type==="docs"?"docs":t.workspaceName??"api",n=Qtl(r),i=1+(this.longestWorkspaceName!=null?Qtl(this.longestWorkspaceName):n).length,o=n.padEnd(i),s=jtl[this.numTasks++%jtl.length],a=Ee.hex(s)(o);return{...this.constructTaskInit(),logPrefix:a,title:Ee.hex(s).bold(r)}}constructTaskInit(){return{logImmediately:t=>this.logImmediately(t),takeOverTerminal:t=>this.ttyAwareLogger.takeOverTerminal(t),onResult:t=>{t===zf.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=>Fx.indexOf(i.level)>=Fx.indexOf(this.logLevel));this.ttyAwareLogger.log(n,{includeDebugInfo:this.logLevel===qn.Debug,stderr:r||this.jsonMode})}_suppressUpgradeMessage=!1;suppressUpgradeMessage(){this._suppressUpgradeMessage=!0}_isUpgradeAvailable;async isUpgradeAvailable({includePreReleases:t=!1}={}){if(this._isUpgradeAvailable==null){this.logger.debug(`Checking if ${this.environment.packageName} upgrade is available...`);let r=await jhe({cliEnvironment:this.environment,includePreReleases:t}),n=UQ(r,this.environment.packageVersion);this.logger.debug(`Latest version: ${r}. `+(n?"Upgrade available.":"No upgrade available."));let i={isUpgradeAvailable:n,latestVersion:r},o=await CAi({project:this.project,cliContext:this});this._isUpgradeAvailable={cliUpgradeInfo:i,generatorUpgradeInfo:o}}return this._isUpgradeAvailable}async confirmPrompt(t,r=!1){try{return await Wbs({message:t,choices:[{name:"No",value:!1},{name:"Yes",value:!0}],default:r,theme:{prefix:Ee.yellow("?"),style:{answer:i=>Ee.cyan(i),message:i=>Ee.bold(i),highlight:i=>Ee.cyan(i)}}})}catch(n){throw n?.name==="ExitPromptError"?(this.logger.info(`