@fern-api/ruby-dynamic-snippets 1.4.4 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -18,9 +18,9 @@ ${t}`)}return t}getContent(){let t=this.stringifyRequires();return t.length>0?`$
|
|
|
18
18
|
|
|
19
19
|
${this.buffer}`:this.buffer}stringifyRequires(){return Array.from(this.requires).map(t=>`require "${t}"`).join(`
|
|
20
20
|
`)}};var B=class extends me{async toStringAsync({customConfig:t,formatter:e}={}){let i=new Ie({customConfig:t??{},formatter:e});return this.write(i),i.toStringAsync()}toString({customConfig:t,formatter:e}={}){let i=new Ie({customConfig:t??{},formatter:e});return this.write(i),i.toString()}typeDefinitionToString({customConfig:t,formatter:e}={}){let i=new Ie({customConfig:t??{},formatter:e});return this.writeTypeDefinition(i),i.toString()}writeTypeDefinition(t){}};var ne=class extends B{constructor({name:e,modules:i,fullyQualified:s}){super();y(this,"name");y(this,"modules");y(this,"fullyQualified");this.name=e,this.modules=i??[],this.fullyQualified=s??!1}write(e){if(this.fullyQualified||this.modules.length>0){let i=[...this.modules,this.name].join("::");e.write(i);return}e.write(this.name)}};var g={};ct(g,{AstNode:()=>B,ClassInstantiation:()=>he,ClassReference:()=>ne,Class_:()=>ue,CodeBlock:()=>ye,KeywordArgument:()=>ge,KeywordParameter:()=>xe,Method:()=>se,MethodInvocation:()=>we,MethodKind:()=>oe,Module_:()=>ae,Parameter:()=>W,Type:()=>ie,TypeLiteral:()=>Ve,TypeParameter:()=>be,Writer:()=>Y,begin:()=>Io,classReference:()=>wo,class_:()=>mo,codeblock:()=>it,comment:()=>go,falseValue:()=>po,ifElse:()=>Eo,instantiateClass:()=>bo,invokeMethod:()=>To,keywordArgument:()=>vo,method:()=>yo,module:()=>ho,nilValue:()=>fo,parameters:()=>co,positionalArgument:()=>Ao,raise:()=>ko,trueValue:()=>lo,typeParameter:()=>xo,wrapInModules:()=>Ro});c();m();d();c();m();d();var et=class extends B{constructor({body:e,rescues:i}){super();y(this,"body");y(this,"rescues");this.body=e,this.rescues=i}write(e){e.write("begin"),e.writeLine(),this.body&&(e.indent(),this.body.write(e),e.writeNewLineIfLastLineNot(),e.dedent());for(let{errorClass:i,errorVariable:s,body:p}of this.rescues)e.write("rescue"),i&&(e.write(" "),i.write(e)),s&&(e.write(" => "),e.write(s)),e.writeLine(),p&&(e.indent(),p.write(e),e.writeNewLineIfLastLineNot(),e.dedent());e.write("end")}};c();m();d();var tt=class extends B{constructor({if:e,elseIf:i,elseBody:s}){super();y(this,"ifBranch");y(this,"elseIfs");y(this,"elseBody");this.ifBranch=e,this.elseIfs=i??[],this.elseBody=s?Array.isArray(s)?s:[s]:void 0}write(e){e.write("if "),this.ifBranch.condition.write(e),e.writeLine(),e.indent();for(let i of this.ifBranch.thenBody)i.write(e),e.writeNewLineIfLastLineNot();e.dedent();for(let i of this.elseIfs){e.write("elsif "),i.condition.write(e),e.writeLine(),e.indent();for(let s of i.thenBody)s.write(e),e.writeNewLineIfLastLineNot();e.dedent()}if(this.elseBody&&this.elseBody.length>0){e.writeLine("else"),e.indent();for(let i of this.elseBody)i.write(e),e.writeNewLineIfLastLineNot();e.dedent()}e.write("end"),e.writeNewLineIfLastLineNot()}};c();m();d();c();m();d();c();m();d();var ao=120,uo=2,X=class extends B{constructor({docs:e}){super();y(this,"docs");this.docs=e}write(e){this.docs!=null&&this.docs.split(`
|
|
21
|
-
`).forEach(i=>{this.wrapLine(i,e).forEach(p=>{e.writeLine(`# ${p}`)})})}wrapLine(e,i){let s=i.currentIndentLevel*2,p=ao-s-uo;if(e.length<=p)return[e];if(p<20)return[e];let a=e.split(/(\s+)/),w=[],b="";for(let R of a){if(R===""||b===""&&/^\s+$/.test(R))continue;let I=b+R;I.length<=p?b=I:(b.trim()!==""&&w.push(b.trimEnd()),b=R.trimStart(),b.length>p&&(w.push(b),b=""))}return b.trim()!==""&&w.push(b.trimEnd()),w.length===0?[e]:w}};c();m();d();c();m();d();var ie=class l extends B{constructor(e){super();y(this,"internalType");this.internalType=e}write(e){if(this.internalType)switch(this.internalType?.type){case"integer":e.write("Integer");return;case"string":e.write("String");return;case"class":e.writeNode(this.internalType.reference);return;case"instance":break;case"boolean":e.write("Internal::Types::Boolean");return;case"nil":break;case"top":break;case"bot":break;case"void":break;case"boolish":break;case"union":if(this.internalType.elems.length===2&&this.internalType.elems[1]?.internalType?.type==="nil"){let i=this.internalType.elems[0];i?.write(e)}break;case"intersection":break;case"array":e.write("Internal::Types::Array["),this.internalType.elem.write(e),e.write("]");return;case"hash":e.write("Internal::Types::Hash["),this.internalType.keyType.write(e),e.write(", "),this.internalType.valueType.write(e),e.write("]");return;case"object":e.write("Object");break;case"singleton":break;case"generic":break;case"self":break;case"tuple":break;default:L(this.internalType)}}writeTypeDefinition(e){if(this.internalType)switch(this.internalType.type){case"self":e.write("self");break;case"class":e.write(this.internalType.reference.toString(e));break;case"instance":e.write("instance");break;case"boolean":e.write("bool");break;case"nil":e.write("nil");break;case"top":e.write("top");break;case"bot":e.write("bot");break;case"void":e.write("void");break;case"boolish":e.write("boolish");break;case"string":e.write("String");break;case"integer":e.write("Integer");break;case"union":e.delimit({nodes:this.internalType.elems,delimiter:" | ",writeFunction:i=>i.writeTypeDefinition(e)});break;case"intersection":e.delimit({nodes:this.internalType.elems,delimiter:" & ",writeFunction:i=>i.writeTypeDefinition(e)});break;case"array":e.write("Array["),this.internalType.elem.writeTypeDefinition(e),e.write("]");break;case"hash":e.write("Hash["),this.internalType.keyType.writeTypeDefinition(e),e.write(", "),this.internalType.valueType.writeTypeDefinition(e),e.write("]");break;case"object":e.write(this.internalType.klass);break;case"singleton":e.write("singleton("),e.write(this.internalType.klass),e.write(")");break;case"tuple":e.write("["),e.delimit({nodes:this.internalType.elems,delimiter:", ",writeFunction:i=>i.write(e)}),e.write("]");break;case"generic":e.write(`${this.internalType.baseKlass}[`),e.delimit({nodes:this.internalType.parameters,delimiter:", ",writeFunction:i=>i.writeTypeDefinition(e)}),e.write("]");break;default:L(this.internalType)}else e.write("untyped")}static untyped(){return new this(void 0)}static self(){return new this({type:"self"})}static class_(e){return new this({type:"class",reference:new ne({name:e.name,modules:e.modules,fullyQualified:!0})})}static instance(){return new this({type:"instance"})}static boolean(){return new this({type:"boolean"})}static nil(){return new this({type:"nil"})}static top(){return new this({type:"top"})}static bot(){return new this({type:"bot"})}static void(){return new this({type:"void"})}static boolish(){return new this({type:"boolish"})}static string(){return new this({type:"string"})}static integer(){return new this({type:"integer"})}static union(e){return new this({type:"union",elems:e})}static intersection(e){return new this({type:"intersection",elems:e})}static array(e){return new this({type:"array",elem:e})}static hash(e,i){return new this({type:"hash",keyType:e,valueType:i})}static object(e){return new this({type:"object",klass:e})}static singleton(e){return new this({type:"singleton",klass:e})}static tuple(e){return new this({type:"tuple",elems:e})}static generic(e,i){return new this({type:"generic",baseKlass:e,parameters:i})}static nilable(e){return l.union([e,l.nil()])}nilable(){return l.nilable(this)}};var oe={Instance:"instance",Class_:"class"},Fn={Public:"public",Private:"private",Protected:"protected"},se=class extends B{constructor({name:e,docstring:i,kind:s,visibility:p,parameters:a,returnType:w,statements:b,splatOptionDocs:R}){super();y(this,"name");y(this,"docstring");y(this,"kind");y(this,"positionalParameters");y(this,"keywordParameters");y(this,"positionalSplatParameter");y(this,"keywordSplatParameter");y(this,"yieldParameter");y(this,"visibility");y(this,"statements");y(this,"returnType");y(this,"splatOptionDocs");this.name=e,this.docstring=i,this.kind=s??oe.Instance,this.visibility=p??Fn.Public,this.positionalParameters=a?.positional??[],this.keywordParameters=a?.keyword??[],this.positionalSplatParameter=a?.positionalSplat,this.keywordSplatParameter=a?.keywordSplat,this.yieldParameter=a?.yield,this.returnType=w??ie.untyped(),this.statements=b??[],this.splatOptionDocs=R??[]}addStatement(e){this.statements.push(e)}write(e){this.docstring&&new X({docs:this.docstring}).write(e);let i=this.positionalParameters.length>0||this.keywordParameters.length>0||this.keywordSplatParameter!=null;this.docstring&&i&&e.writeLine("#");for(let s of this.positionalParameters){e.write(`# @option ${s.name} [`);let p=new Y({customConfig:e.customConfig});s.type.writeTypeDefinition(p),e.write(this.normalizeForYard(p.toString())),e.write("]"),e.newLine()}for(let s of this.keywordParameters){e.write(`# @param ${s.name} [`);let p=new Y({customConfig:e.customConfig});s.type.writeTypeDefinition(p),e.write(this.normalizeForYard(p.toString())),e.write("]"),s.docs&&e.write(` ${s.docs}`),e.newLine()}if(this.keywordSplatParameter!=null){e.write(`# @param ${this.keywordSplatParameter.name} [`);let s=new Y({customConfig:e.customConfig});this.keywordSplatParameter.type.writeTypeDefinition(s),e.write(this.normalizeForYard(s.toString())),e.write("]"),this.keywordSplatParameter.docs&&e.write(` ${this.keywordSplatParameter.docs}`),e.newLine()}for(let s of this.splatOptionDocs)e.writeLine(`# ${s}`);if(this.returnType!=null){(i||this.docstring)&&e.writeLine("#"),e.write("# @return [");let s=new Y({customConfig:e.customConfig});this.returnType.writeTypeDefinition(s),e.write(this.normalizeForYard(s.toString())),e.write("]"),e.newLine()}switch(this.visibility!==Fn.Public&&(e.write(this.visibility),this.kind===oe.Class_&&e.write("_class_method"),e.write(" ")),this.kind){case oe.Instance:e.write(`def ${this.name}`);break;case oe.Class_:e.write(`def self.${this.name}`);break}this.parameters.length&&(e.write("("),e.delimit({nodes:this.parameters,delimiter:", ",writeFunction:s=>s.write(e)}),e.write(")")),this.statements.length?(e.newLine(),e.indent(),this.statements.forEach((s,p)=>{s.write(e),p<this.statements.length-1&&e.newLine()}),e.writeNewLineIfLastLineNot(),e.dedent(),e.write("end")):e.write("; end"),e.newLine()}writeTypeDefinition(e){e.write(`def ${this.name}: (`),this.parameters.forEach((i,s)=>{i.writeTypeDefinition(e),s<this.parameters.length-1&&e.write(", ")}),e.write(") -> "),this.returnType.writeTypeDefinition(e)}normalizeForYard(e){let i=e.replace(/\s*\|\s*/g,", ");return i=i.replace(/\bbool\b/g,"Boolean"),i=i.replace(/(^|,\s*)nil(?:,\s*nil)+(?=,|\]|$)/g,"$1nil"),i=i.replace(/Hash\[untyped,\s*untyped\]/g,"Hash"),i}get parameters(){return[...this.positionalParameters,...this.keywordParameters,this.positionalSplatParameter,this.keywordSplatParameter,this.yieldParameter].flatMap(e=>e!==void 0?e:[])}};c();m();d();var ae=class l extends B{constructor({name:e,namespace:i,typeParameters:s,docstring:p,statements:a}){super();y(this,"name");y(this,"namespace");y(this,"typeParameters");y(this,"docstring");y(this,"statements");this.name=e,this.namespace=i??new Set,this.typeParameters=s??[],this.docstring=p,this.statements=a??[],this.populateChildNamespaces()}addStatement(e){this.statements.push(e)}write(e){this.docstring&&new X({docs:this.docstring}).write(e),e.write(`module ${this.name}`),this.statements.length?(e.newLine(),e.indent(),this.statements.forEach((i,s)=>{i.write(e),s<this.statements.length-1&&e.newLine()}),e.dedent(),e.write("end")):e.write("; end"),e.newLine()}writeTypeDefinition(e){e.write(`module ${this.name}`),this.typeParameters.length&&(e.write("["),e.delimit({nodes:this.typeParameters,delimiter:", ",writeFunction:i=>i.writeTypeDefinition(e)}),e.write("]")),e.newLine(),this.statements.length&&(e.indent(),this.statements.forEach(i=>{i.writeTypeDefinition(e),e.newLine()}),e.dedent()),e.write("end")}populateChildNamespaces(){this.statements.filter(e=>e instanceof l||e instanceof ue).forEach(e=>{e.namespace=new Set([...this.namespace,this]),e.populateChildNamespaces()})}get fullyQualifiedNamespace(){return[...this.namespace,this].map(e=>e.name).join("::")}};var ue=class extends ae{constructor({name:e,superclass:i,typeParameters:s,docstring:p,statements:a}){super({name:e,docstring:p,typeParameters:s});y(this,"superclass");y(this,"statements");y(this,"methods",[]);this.superclass=i,this.statements=a??[]}addStatement(e){this.statements.push(e)}addStatements(e){this.statements.push(...e)}addInstanceMethod(e,i,s){let p=new se({name:e,kind:oe.Instance,returnType:i,statements:s});this.addMethod(p)}addMethod(e){this.methods.push(e)}addMethods(e){e.forEach(i=>this.addMethod(i))}write(e){if(this.docstring&&new X({docs:this.docstring}).write(e),e.write(`class ${this.name}`),this.superclass&&(e.write(" < "),this.superclass.write(e)),!this.hasBody()){e.writeLine("; end");return}this.statements.length&&(e.newLine(),e.indent(),this.statements.forEach((i,s)=>{i.write(e),e.newLine()}),e.dedent()),this.methods.length&&(e.newLine(),e.indent(),this.methods.forEach(i=>{i.write(e)}),e.dedent()),e.writeLine("end")}hasBody(){return this.statements.length>0||this.methods.length>0}writeTypeDefinition(e){e.write(`class ${this.name}`),this.typeParameters.length&&(e.write("["),e.delimit({nodes:this.typeParameters,delimiter:", ",writeFunction:i=>i.writeTypeDefinition(e)}),e.write("]")),this.superclass&&(e.write(" < "),this.superclass.write(e)),e.newLine(),this.statements.length&&(e.indent(),this.statements.forEach(i=>{i.writeTypeDefinition(e),e.newLine()}),e.dedent()),e.write("end")}};c();m();d();var he=class extends B{constructor({classReference:e,arguments_:i}){super();y(this,"classReference");y(this,"arguments_");this.classReference=e,this.arguments_=i}write(e){e.writeNode(this.classReference),e.write("."),e.write("new"),this.arguments_.length!==0&&(e.write("("),this.arguments_.length>1?(e.indent(),e.newLine(),this.arguments_.forEach((i,s)=>{s>0&&(e.write(","),e.newLine()),i.write(e)}),e.newLine(),e.dedent()):this.arguments_.forEach((i,s)=>{s>0&&e.write(", "),i.write(e)}),e.write(")"))}};c();m();d();var ye=class extends B{constructor(e){super();y(this,"arg");this.arg=e}write(e){return new J(this.arg).write(e)}};c();m();d();var ge=class extends B{constructor({name:e,value:i}){super();y(this,"name");y(this,"value");this.name=e,this.value=i}write(e){e.write(`${this.name}: `),this.value.write(e)}};c();m();d();c();m();d();var W=class extends B{constructor({name:e,type:i,optional:s,docs:p}){super();y(this,"name");y(this,"type");y(this,"optional");y(this,"docs");this.name=e,this.type=i??ie.untyped(),this.optional=s??!1,this.docs=p}};var xe=class extends W{constructor({name:e,type:i,initializer:s,optional:p}){super({name:e,type:i,optional:p});y(this,"initializer");this.initializer=s}write(e){e.write(`${this.name}:`),this.initializer&&(e.write(" "),e.writeNode(this.initializer))}writeTypeDefinition(e){this.optional&&e.write("?"),e.write(`${this.name}: `),this.type.writeTypeDefinition(e)}};c();m();d();var Oe=class extends W{constructor(){super(...arguments);y(this,"initializer")}write(e){e.write(`**${this.name}`)}writeTypeDefinition(e){e.write("**"),this.type.writeTypeDefinition(e)}};c();m();d();var we=class extends B{constructor({on:e,method:i,arguments_:s,keywordArguments:p,block:a}){super();y(this,"on");y(this,"method");y(this,"arguments_");y(this,"keywordArguments");y(this,"block");this.on=e,this.method=i,this.arguments_=s,this.keywordArguments=p,this.block=a}write(e){this.on.write(e),e.write("."),e.write(this.method);let i=[];for(let s of this.arguments_)i.push({kind:"positional",node:s});for(let s of this.keywordArguments||[])i.push({kind:"keyword",arg:s});if(!(i.length===0&&this.block==null)&&(e.write("("),i.length>1?(e.indent(),e.newLine(),i.forEach((s,p)=>{p>0&&(e.write(","),e.newLine()),Pn(e,s)}),e.newLine(),e.dedent()):i.forEach((s,p)=>{p>0&&e.write(", "),Pn(e,s)}),e.write(")"),this.block)){let[s,p]=this.block;e.write(" do"),s.length>0&&(e.write(" |"),s.forEach((a,w)=>{w>0&&e.write(", "),e.write(a)}),e.write("|")),e.newLine(),e.indent();for(let a of p)a.write(e),e.writeNewLineIfLastLineNot();e.dedent(),e.write("end")}}};function Pn(l,t){switch(t.kind){case"positional":t.node.write(l);break;case"keyword":t.arg.write(l);break;default:L(t)}}c();m();d();var $e=class extends B{constructor({value:e}){super();y(this,"value");this.value=e}write(e){this.value.write(e)}};c();m();d();var _e=class extends W{constructor({name:e,type:i,optional:s,initializer:p}){super({name:e,type:i,optional:s});y(this,"initializer");this.initializer=p}write(e){e.write(this.name),this.initializer&&e.write(` = ${this.initializer.write(e)}`)}writeTypeDefinition(e){this.optional&&e.write("?"),this.type.writeTypeDefinition(e)}};c();m();d();var je=class extends W{write(t){t.write(`*${this.name}`)}writeTypeDefinition(t){t.write("*"),this.type.writeTypeDefinition(t)}};c();m();d();var Ve=class l extends B{constructor(e){super();y(this,"internalType");this.internalType=e}static string(e){return new this({type:"str",value:e})}static integer(e){return new this({type:"int",value:e})}static float(e){return new this({type:"float",value:e})}static boolean(e){return new this({type:"bool",value:e})}static hash(e){return new this({type:"hash",entries:e})}static set(e){return new this({type:"set",values:e})}static list(e){return new this({type:"list",values:e})}static nop(){return new this({type:"nop"})}static nil(){return new this({type:"nil"})}static isNop(e){return e instanceof l&&e.internalType.type==="nop"}static isNil(e){return e instanceof l&&e.internalType.type==="nil"}write(e){switch(this.internalType.type){case"str":{let i=this.internalType.value.replaceAll(`\r
|
|
21
|
+
`).forEach(i=>{this.wrapLine(i,e).forEach(p=>{e.writeLine(`# ${p}`)})})}wrapLine(e,i){let s=i.currentIndentLevel*2,p=ao-s-uo;if(e.length<=p)return[e];if(p<20)return[e];let a=e.split(/(\s+)/),w=[],b="";for(let R of a){if(R===""||b===""&&/^\s+$/.test(R))continue;let I=b+R;I.length<=p?b=I:(b.trim()!==""&&w.push(b.trimEnd()),b=R.trimStart(),b.length>p&&(w.push(b),b=""))}return b.trim()!==""&&w.push(b.trimEnd()),w.length===0?[e]:w}};c();m();d();c();m();d();var ie=class l extends B{constructor(e){super();y(this,"internalType");this.internalType=e}write(e){if(this.internalType)switch(this.internalType?.type){case"integer":e.write("Integer");return;case"string":e.write("String");return;case"class":e.writeNode(this.internalType.reference);return;case"instance":break;case"boolean":e.write("Internal::Types::Boolean");return;case"nil":break;case"top":break;case"bot":break;case"void":break;case"boolish":break;case"union":if(this.internalType.elems.length===2&&this.internalType.elems[1]?.internalType?.type==="nil"){let i=this.internalType.elems[0];i?.write(e)}break;case"intersection":break;case"array":e.write("Internal::Types::Array["),this.internalType.elem.write(e),e.write("]");return;case"hash":e.write("Internal::Types::Hash["),this.internalType.keyType.write(e),e.write(", "),this.internalType.valueType.write(e),e.write("]");return;case"object":e.write("Object");break;case"singleton":break;case"generic":break;case"self":break;case"tuple":break;default:L(this.internalType)}}writeTypeDefinition(e){if(this.internalType)switch(this.internalType.type){case"self":e.write("self");break;case"class":e.write(this.internalType.reference.toString(e));break;case"instance":e.write("instance");break;case"boolean":e.write("bool");break;case"nil":e.write("nil");break;case"top":e.write("top");break;case"bot":e.write("bot");break;case"void":e.write("void");break;case"boolish":e.write("boolish");break;case"string":e.write("String");break;case"integer":e.write("Integer");break;case"union":e.delimit({nodes:this.internalType.elems,delimiter:" | ",writeFunction:i=>i.writeTypeDefinition(e)});break;case"intersection":e.delimit({nodes:this.internalType.elems,delimiter:" & ",writeFunction:i=>i.writeTypeDefinition(e)});break;case"array":e.write("Array["),this.internalType.elem.writeTypeDefinition(e),e.write("]");break;case"hash":e.write("Hash["),this.internalType.keyType.writeTypeDefinition(e),e.write(", "),this.internalType.valueType.writeTypeDefinition(e),e.write("]");break;case"object":e.write(this.internalType.klass);break;case"singleton":e.write("singleton("),e.write(this.internalType.klass),e.write(")");break;case"tuple":e.write("["),e.delimit({nodes:this.internalType.elems,delimiter:", ",writeFunction:i=>i.write(e)}),e.write("]");break;case"generic":e.write(`${this.internalType.baseKlass}[`),e.delimit({nodes:this.internalType.parameters,delimiter:", ",writeFunction:i=>i.writeTypeDefinition(e)}),e.write("]");break;default:L(this.internalType)}else e.write("untyped")}static untyped(){return new this(void 0)}static self(){return new this({type:"self"})}static class_(e){return new this({type:"class",reference:new ne({name:e.name,modules:e.modules,fullyQualified:!0})})}static instance(){return new this({type:"instance"})}static boolean(){return new this({type:"boolean"})}static nil(){return new this({type:"nil"})}static top(){return new this({type:"top"})}static bot(){return new this({type:"bot"})}static void(){return new this({type:"void"})}static boolish(){return new this({type:"boolish"})}static string(){return new this({type:"string"})}static integer(){return new this({type:"integer"})}static union(e){return new this({type:"union",elems:e})}static intersection(e){return new this({type:"intersection",elems:e})}static array(e){return new this({type:"array",elem:e})}static hash(e,i){return new this({type:"hash",keyType:e,valueType:i})}static object(e){return new this({type:"object",klass:e})}static singleton(e){return new this({type:"singleton",klass:e})}static tuple(e){return new this({type:"tuple",elems:e})}static generic(e,i){return new this({type:"generic",baseKlass:e,parameters:i})}static nilable(e){return l.union([e,l.nil()])}nilable(){return l.nilable(this)}};var oe={Instance:"instance",Class_:"class"},Fn={Public:"public",Private:"private",Protected:"protected"},se=class extends B{constructor({name:e,docstring:i,kind:s,visibility:p,parameters:a,returnType:w,statements:b,splatOptionDocs:R}){super();y(this,"name");y(this,"docstring");y(this,"kind");y(this,"positionalParameters");y(this,"keywordParameters");y(this,"positionalSplatParameter");y(this,"keywordSplatParameter");y(this,"yieldParameter");y(this,"visibility");y(this,"statements");y(this,"returnType");y(this,"splatOptionDocs");this.name=e,this.docstring=i,this.kind=s??oe.Instance,this.visibility=p??Fn.Public,this.positionalParameters=a?.positional??[],this.keywordParameters=a?.keyword??[],this.positionalSplatParameter=a?.positionalSplat,this.keywordSplatParameter=a?.keywordSplat,this.yieldParameter=a?.yield,this.returnType=w??ie.untyped(),this.statements=b??[],this.splatOptionDocs=R??[]}addStatement(e){this.statements.push(e)}write(e){this.docstring&&new X({docs:this.docstring}).write(e);let i=this.positionalParameters.length>0||this.keywordParameters.length>0||this.keywordSplatParameter!=null;this.docstring&&i&&e.writeLine("#");for(let s of this.positionalParameters){e.write(`# @option ${s.name} [`);let p=new Y({customConfig:e.customConfig});s.type.writeTypeDefinition(p),e.write(this.normalizeForYard(p.toString())),e.write("]"),e.newLine()}for(let s of this.keywordParameters){e.write(`# @param ${s.name} [`);let p=new Y({customConfig:e.customConfig});s.type.writeTypeDefinition(p),e.write(this.normalizeForYard(p.toString())),e.write("]"),s.docs&&e.write(` ${s.docs}`),e.newLine()}if(this.keywordSplatParameter!=null){e.write(`# @param ${this.keywordSplatParameter.name} [`);let s=new Y({customConfig:e.customConfig});this.keywordSplatParameter.type.writeTypeDefinition(s),e.write(this.normalizeForYard(s.toString())),e.write("]"),this.keywordSplatParameter.docs&&e.write(` ${this.keywordSplatParameter.docs}`),e.newLine()}for(let s of this.splatOptionDocs)e.writeLine(`# ${s}`);if(this.returnType!=null){(i||this.docstring)&&e.writeLine("#"),e.write("# @return [");let s=new Y({customConfig:e.customConfig});this.returnType.writeTypeDefinition(s),e.write(this.normalizeForYard(s.toString())),e.write("]"),e.newLine()}switch(this.visibility!==Fn.Public&&(e.write(this.visibility),this.kind===oe.Class_&&e.write("_class_method"),e.write(" ")),this.kind){case oe.Instance:e.write(`def ${this.name}`);break;case oe.Class_:e.write(`def self.${this.name}`);break}this.parameters.length&&(e.write("("),e.delimit({nodes:this.parameters,delimiter:", ",writeFunction:s=>s.write(e)}),e.write(")")),this.statements.length?(e.newLine(),e.indent(),this.statements.forEach((s,p)=>{s.write(e),p<this.statements.length-1&&e.newLine()}),e.writeNewLineIfLastLineNot(),e.dedent(),e.write("end")):e.write("; end"),e.newLine()}writeTypeDefinition(e){e.write(`def ${this.name}: (`),this.parameters.forEach((i,s)=>{i.writeTypeDefinition(e),s<this.parameters.length-1&&e.write(", ")}),e.write(") -> "),this.returnType.writeTypeDefinition(e)}normalizeForYard(e){let i=e.replace(/\s*\|\s*/g,", ");return i=i.replace(/\bbool\b/g,"Boolean"),i=i.replace(/(^|,\s*)nil(?:,\s*nil)+(?=,|\]|$)/g,"$1nil"),i=i.replace(/Hash\[untyped,\s*untyped\]/g,"Hash"),i}get parameters(){return[...this.positionalParameters,...this.keywordParameters,this.positionalSplatParameter,this.keywordSplatParameter,this.yieldParameter].flatMap(e=>e!==void 0?e:[])}};c();m();d();var ae=class l extends B{constructor({name:e,namespace:i,typeParameters:s,docstring:p,statements:a}){super();y(this,"name");y(this,"namespace");y(this,"typeParameters");y(this,"docstring");y(this,"statements");this.name=e,this.namespace=i??new Set,this.typeParameters=s??[],this.docstring=p,this.statements=a??[],this.populateChildNamespaces()}addStatement(e){this.statements.push(e)}write(e){this.docstring&&new X({docs:this.docstring}).write(e),e.write(`module ${this.name}`),this.statements.length?(e.newLine(),e.indent(),this.statements.forEach((i,s)=>{i.write(e),s<this.statements.length-1&&e.newLine()}),e.writeNewLineIfLastLineNot(),e.dedent(),e.write("end")):e.write("; end"),e.newLine()}writeTypeDefinition(e){e.write(`module ${this.name}`),this.typeParameters.length&&(e.write("["),e.delimit({nodes:this.typeParameters,delimiter:", ",writeFunction:i=>i.writeTypeDefinition(e)}),e.write("]")),e.newLine(),this.statements.length&&(e.indent(),this.statements.forEach(i=>{i.writeTypeDefinition(e),e.newLine()}),e.dedent()),e.write("end")}populateChildNamespaces(){this.statements.filter(e=>e instanceof l||e instanceof ue).forEach(e=>{e.namespace=new Set([...this.namespace,this]),e.populateChildNamespaces()})}get fullyQualifiedNamespace(){return[...this.namespace,this].map(e=>e.name).join("::")}};var ue=class extends ae{constructor({name:e,superclass:i,typeParameters:s,docstring:p,statements:a}){super({name:e,docstring:p,typeParameters:s});y(this,"superclass");y(this,"statements");y(this,"methods",[]);this.superclass=i,this.statements=a??[]}addStatement(e){this.statements.push(e)}addStatements(e){this.statements.push(...e)}addInstanceMethod(e,i,s){let p=new se({name:e,kind:oe.Instance,returnType:i,statements:s});this.addMethod(p)}addMethod(e){this.methods.push(e)}addMethods(e){e.forEach(i=>this.addMethod(i))}write(e){if(this.docstring&&new X({docs:this.docstring}).write(e),e.write(`class ${this.name}`),this.superclass&&(e.write(" < "),this.superclass.write(e)),!this.hasBody()){e.writeLine("; end");return}this.statements.length&&(e.newLine(),e.indent(),this.statements.forEach((i,s)=>{i.write(e),e.newLine()}),e.dedent()),this.methods.length&&(e.newLine(),e.indent(),this.methods.forEach(i=>{i.write(e)}),e.dedent()),e.writeLine("end")}hasBody(){return this.statements.length>0||this.methods.length>0}writeTypeDefinition(e){e.write(`class ${this.name}`),this.typeParameters.length&&(e.write("["),e.delimit({nodes:this.typeParameters,delimiter:", ",writeFunction:i=>i.writeTypeDefinition(e)}),e.write("]")),this.superclass&&(e.write(" < "),this.superclass.write(e)),e.newLine(),this.statements.length&&(e.indent(),this.statements.forEach(i=>{i.writeTypeDefinition(e),e.newLine()}),e.dedent()),e.write("end")}};c();m();d();var he=class extends B{constructor({classReference:e,arguments_:i}){super();y(this,"classReference");y(this,"arguments_");this.classReference=e,this.arguments_=i}write(e){e.writeNode(this.classReference),e.write("."),e.write("new"),this.arguments_.length!==0&&(e.write("("),this.arguments_.length>1?(e.indent(),e.newLine(),this.arguments_.forEach((i,s)=>{s>0&&(e.write(","),e.newLine()),i.write(e)}),e.newLine(),e.dedent()):this.arguments_.forEach((i,s)=>{s>0&&e.write(", "),i.write(e)}),e.write(")"))}};c();m();d();var ye=class extends B{constructor(e){super();y(this,"arg");this.arg=e}write(e){return new J(this.arg).write(e)}};c();m();d();var ge=class extends B{constructor({name:e,value:i}){super();y(this,"name");y(this,"value");this.name=e,this.value=i}write(e){e.write(`${this.name}: `),this.value.write(e)}};c();m();d();c();m();d();var W=class extends B{constructor({name:e,type:i,optional:s,docs:p}){super();y(this,"name");y(this,"type");y(this,"optional");y(this,"docs");this.name=e,this.type=i??ie.untyped(),this.optional=s??!1,this.docs=p}};var xe=class extends W{constructor({name:e,type:i,initializer:s,optional:p}){super({name:e,type:i,optional:p});y(this,"initializer");this.initializer=s}write(e){e.write(`${this.name}:`),this.initializer&&(e.write(" "),e.writeNode(this.initializer))}writeTypeDefinition(e){this.optional&&e.write("?"),e.write(`${this.name}: `),this.type.writeTypeDefinition(e)}};c();m();d();var Oe=class extends W{constructor(){super(...arguments);y(this,"initializer")}write(e){e.write(`**${this.name}`)}writeTypeDefinition(e){e.write("**"),this.type.writeTypeDefinition(e)}};c();m();d();var we=class extends B{constructor({on:e,method:i,arguments_:s,keywordArguments:p,block:a}){super();y(this,"on");y(this,"method");y(this,"arguments_");y(this,"keywordArguments");y(this,"block");this.on=e,this.method=i,this.arguments_=s,this.keywordArguments=p,this.block=a}write(e){this.on.write(e),e.write("."),e.write(this.method);let i=[];for(let s of this.arguments_)i.push({kind:"positional",node:s});for(let s of this.keywordArguments||[])i.push({kind:"keyword",arg:s});if(!(i.length===0&&this.block==null)&&(e.write("("),i.length>1?(e.indent(),e.newLine(),i.forEach((s,p)=>{p>0&&(e.write(","),e.newLine()),Pn(e,s)}),e.newLine(),e.dedent()):i.forEach((s,p)=>{p>0&&e.write(", "),Pn(e,s)}),e.write(")"),this.block)){let[s,p]=this.block;e.write(" do"),s.length>0&&(e.write(" |"),s.forEach((a,w)=>{w>0&&e.write(", "),e.write(a)}),e.write("|")),e.newLine(),e.indent();for(let a of p)a.write(e),e.writeNewLineIfLastLineNot();e.dedent(),e.write("end")}}};function Pn(l,t){switch(t.kind){case"positional":t.node.write(l);break;case"keyword":t.arg.write(l);break;default:L(t)}}c();m();d();var $e=class extends B{constructor({value:e}){super();y(this,"value");this.value=e}write(e){this.value.write(e)}};c();m();d();var _e=class extends W{constructor({name:e,type:i,optional:s,initializer:p}){super({name:e,type:i,optional:s});y(this,"initializer");this.initializer=p}write(e){e.write(this.name),this.initializer&&e.write(` = ${this.initializer.write(e)}`)}writeTypeDefinition(e){this.optional&&e.write("?"),this.type.writeTypeDefinition(e)}};c();m();d();var je=class extends W{write(t){t.write(`*${this.name}`)}writeTypeDefinition(t){t.write("*"),this.type.writeTypeDefinition(t)}};c();m();d();var Ve=class l extends B{constructor(e){super();y(this,"internalType");this.internalType=e}static string(e){return new this({type:"str",value:e})}static integer(e){return new this({type:"int",value:e})}static float(e){return new this({type:"float",value:e})}static boolean(e){return new this({type:"bool",value:e})}static hash(e){return new this({type:"hash",entries:e})}static set(e){return new this({type:"set",values:e})}static list(e){return new this({type:"list",values:e})}static nop(){return new this({type:"nop"})}static nil(){return new this({type:"nil"})}static isNop(e){return e instanceof l&&e.internalType.type==="nop"}static isNil(e){return e instanceof l&&e.internalType.type==="nil"}write(e){switch(this.internalType.type){case"str":{let i=this.internalType.value.replaceAll(`\r
|
|
22
22
|
`,`
|
|
23
|
-
`);
|
|
23
|
+
`);e.write(`"${i.replaceAll("\\","\\\\").replaceAll('"','\\"')}"`);break}case"int":{e.write(this.internalType.value.toString());break}case"float":{e.write(this.internalType.value.toString());break}case"bool":{e.write(this.internalType.value?"true":"false");break}case"hash":{let i=this.internalType.entries.filter(s=>!l.isNop(s.key)&&!l.isNop(s.value));if(i.length===0){e.write("{}");break}e.write(`{
|
|
24
24
|
`),i.forEach((s,p)=>{p>0&&e.writeLine(","),e.indent();let a=!1;if(s.key instanceof l&&s.key.internalType.type==="str"){let w=s.key.internalType.value;/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(w)&&(e.write(`${w}:`),a=!0)}a||(s.key.write(e),e.write(" =>")),e.write(" "),s.value.write(e),e.dedent()}),e.write(`
|
|
25
25
|
}`);break}case"set":{let i=this.internalType.values.filter(s=>!l.isNop(s));if(i.length===0){e.write("Set.new([])");break}e.write("Set.new(["),i.forEach((s,p)=>{p>0&&e.write(", "),s.write(e)}),e.write("])");break}case"list":{let i=this.internalType.values.filter(s=>!l.isNop(s));if(i.length===0){e.write("[]");break}if(i.length>=2&&i.every(s=>s instanceof l&&s.internalType.type==="str"&&!/[\s\\[\]]/.test(s.internalType.value))){let s=i.map(p=>p.internalType.value);e.write(`%w[${s.join(" ")}]`);break}e.write("["),i.forEach((s,p)=>{p>0&&e.write(", "),s.write(e)}),e.write("]");break}case"nop":break;case"nil":e.write("nil");break;default:L(this.internalType)}}};c();m();d();var rt;(function(l){l[l.Invariant=0]="Invariant",l.Covariant="out",l.Contravariant="in"})(rt||(rt={}));var be=class extends B{constructor({name:e,unchecked:i,bound:s,variance:p,defaultType:a}){super();y(this,"name");y(this,"unchecked");y(this,"bound");y(this,"variance");y(this,"defaultType");this.name=e,this.unchecked=i??!1,this.bound=s,this.variance=p??rt.Invariant,this.defaultType=a}write(e){}writeTypeDefinition(e){this.unchecked&&e.write("unchecked "),this.variance!=rt.Invariant&&e.write(`${this.variance} `),e.write(this.name),this.bound&&(e.write(" < "),this.bound.writeTypeDefinition(e)),this.defaultType&&(e.write(" = "),this.defaultType.writeTypeDefinition(e))}};c();m();d();var qe=class extends W{constructor(){super(...arguments);y(this,"initializer")}write(e){e.write(`&${this.name}`)}};c();m();d();var nt=class extends B{constructor({errorClass:e,message:i}){super();y(this,"errorClass");y(this,"message");this.errorClass=e,this.message=i}write(e){e.write("raise"),this.errorClass&&(e.write(" "),this.errorClass.write(e)),this.message&&(this.errorClass&&e.write(", "),this.message.write(e))}};function it(l){return new ye(l)}function lo(){return it("true")}function po(){return it("false")}function fo(){return it("nil")}var co={positional(l){return new _e(l)},keyword(l){return new xe(l)},positionalSplat(l){return new je(l)},keywordSplat(l){return new Oe(l)},yield(l){return new qe(l)}};function mo(l){return new ue(l)}function ho(l){return new ae(l)}function yo(l){return new se(l)}function go(l){return new X(l)}function xo(l){return new be(l)}function wo(l){return new ne(l)}function bo(l){return new he(l)}function vo(l){return new ge(l)}function To(l){return new we(l)}function Ao(l){return new $e(l)}function Eo(l){return new tt(l)}function Io(l){return new et(l)}function ko(l){return new nt(l)}function Ro(l,t){let e=l;for(let i of t.toReversed())i.addStatement(e),e=i;return e}c();m();d();var ot=class l{constructor({context:t}){y(this,"context");this.context=t}convert(t){if(t.value===null)return this.context.isNullable(t.typeReference)?g.TypeLiteral.nil():(this.context.errors.add({severity:S.Critical,message:"Expected non-null value, but got null"}),g.TypeLiteral.nop());if(t.value===void 0)return g.TypeLiteral.nop();switch(t.typeReference.type){case"list":return this.convertList({list:t.typeReference.value,value:t.value});case"literal":return this.convertLiteral({literalType:t.typeReference.value,value:t.value});case"map":return this.convertMap({map:t.typeReference,value:t.value});case"named":{let e=this.context.resolveNamedType({typeId:t.typeReference.value});return e==null?g.TypeLiteral.nop():this.convertNamed({named:e,value:t.value,as:t.as})}case"optional":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as});case"nullable":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as});case"primitive":return this.convertPrimitive({primitive:t.typeReference.value,value:t.value,as:t.as});case"set":return this.convertSet({set:t.typeReference.value,value:t.value});case"unknown":return g.TypeLiteral.nop();default:L(t.typeReference)}}convertLiteral({literalType:t,value:e}){switch(t.type){case"boolean":{let i=this.context.getValueAsBoolean({value:e});return i==null?g.TypeLiteral.nop():g.TypeLiteral.boolean(i)}case"string":{let i=this.context.getValueAsString({value:e});return i==null?g.TypeLiteral.nop():g.TypeLiteral.string(i)}default:L(t)}}convertList({list:t,value:e}){return Array.isArray(e)?g.TypeLiteral.list(e.map((i,s)=>{this.context.errors.scope({index:s});try{return this.convert({typeReference:t,value:i})}finally{this.context.errors.unscope()}})):(this.context.errors.add({severity:S.Critical,message:`Expected array but got: ${typeof e}`}),g.TypeLiteral.nop())}convertSet({set:t,value:e}){return Array.isArray(e)?g.TypeLiteral.set(e.map((i,s)=>{this.context.errors.scope({index:s});try{return this.convert({typeReference:t,value:i})}finally{this.context.errors.unscope()}})):(this.context.errors.add({severity:S.Critical,message:`Expected array but got: ${typeof e}`}),g.TypeLiteral.nop())}convertMap({map:t,value:e}){return typeof e!="object"||e==null?(this.context.errors.add({severity:S.Critical,message:`Expected object but got: ${e==null?"null":typeof e}`}),g.TypeLiteral.nop()):g.TypeLiteral.hash(Object.entries(e).map(([i,s])=>{this.context.errors.scope(i);try{return{key:this.convert({typeReference:t.key,value:i,as:"key"}),value:this.convert({typeReference:t.value,value:s})}}finally{this.context.errors.unscope()}}))}convertNamed({named:t,value:e,as:i}){switch(t.type){case"alias":return this.convert({typeReference:t.typeReference,value:e,as:i});case"discriminatedUnion":return this.convertDiscriminatedUnion({discriminatedUnion:t,value:e});case"object":return this.convertObject({object:t,value:e});case"enum":return this.convertEnum({enum_:t,value:e});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:t,value:e});default:L(t)}}convertDiscriminatedUnion({discriminatedUnion:t,value:e}){let i=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:t,value:e});if(i==null)return g.TypeLiteral.nop();let s=i.singleDiscriminatedUnionType,p=this.convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:i,unionVariant:s});return p==null?g.TypeLiteral.nop():g.TypeLiteral.hash(p)}convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:t,unionVariant:e}){switch(e.type){case"samePropertiesAsObject":{let i=this.context.resolveNamedType({typeId:e.typeId});if(i==null)return;let s=this.convertNamed({named:i,value:t.value});return this.extractHashEntries(s)}case"singleProperty":try{this.context.errors.scope(e.discriminantValue.wireValue);let i=this.context.getRecord(t.value);return i==null?[{key:g.TypeLiteral.string(this.context.getPropertyName(e.discriminantValue.name)),value:this.convert({typeReference:e.typeReference,value:t.value})}]:[{key:g.TypeLiteral.string(this.context.getPropertyName(e.discriminantValue.name)),value:this.convert({typeReference:e.typeReference,value:i[e.discriminantValue.wireValue]})}]}finally{this.context.errors.unscope()}case"noProperties":return[];default:L(e)}}extractHashEntries(t){t instanceof g.TypeLiteral}convertEnum({enum_:t,value:e}){let i=this.getEnumValueName({enum_:t,value:e});return i==null?g.TypeLiteral.nop():g.TypeLiteral.string(i)}getEnumValueName({enum_:t,value:e}){if(typeof e!="string"){this.context.errors.add({severity:S.Critical,message:`Expected enum value string, got: ${typeof e}`});return}let i=t.values.find(s=>s.wireValue===e);if(i==null){this.context.errors.add({severity:S.Critical,message:`An enum value named "${e}" does not exist in this context`});return}return i.wireValue}convertUndiscriminatedUnion({undiscriminatedUnion:t,value:e}){let i=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:e});return i??g.TypeLiteral.nop()}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:e}){for(let i of t.types){let s=this.context.clone(),a=new l({context:s}).convert({typeReference:i,value:e});if(s.errors.empty())return a}this.context.errors.add({severity:S.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof e}" value`})}convertPrimitive({primitive:t,value:e,as:i}){switch(t){case"INTEGER":case"LONG":case"UINT":case"UINT_64":{let s=this.getValueAsNumber({value:e,as:i});return s==null?g.TypeLiteral.nop():g.TypeLiteral.integer(s)}case"FLOAT":case"DOUBLE":{let s=this.getValueAsNumber({value:e});return s==null?g.TypeLiteral.nop():g.TypeLiteral.float(s)}case"BOOLEAN":{let s=this.getValueAsBoolean({value:e,as:i});return s==null?g.TypeLiteral.nop():g.TypeLiteral.boolean(s)}case"BASE_64":case"BIG_INTEGER":case"STRING":{let s=this.context.getValueAsString({value:e});return s==null?g.TypeLiteral.nop():g.TypeLiteral.string(s)}case"UUID":{let s=this.context.getValueAsString({value:e});return s==null?g.TypeLiteral.nop():g.TypeLiteral.string(s)}case"DATE":{let s=this.context.getValueAsString({value:e});return s==null?g.TypeLiteral.nop():g.TypeLiteral.string(s)}case"DATE_TIME":case"DATE_TIME_RFC_2822":{let s=this.context.getValueAsString({value:e});return s==null?g.TypeLiteral.nop():g.TypeLiteral.string(s)}default:L(t)}}convertObject({object:t,value:e}){if(typeof e!="object"||e==null)return this.context.errors.add({severity:S.Critical,message:`Expected object but got: ${e==null?"null":typeof e}`}),g.TypeLiteral.nop();let i=this.convertObjectEntries({object:t,value:e});return g.TypeLiteral.hash(i)}convertObjectEntries({object:t,value:e}){let i=typeof e=="object"&&e!=null?e:{},s=new Set(Object.keys(i)),p=[];for(let[a,w]of Object.entries(i)){this.context.errors.scope(a);let b=t.properties.find(M=>M.name.wireValue===a),R=b?.typeReference??{type:"unknown"},I=b?.name.name.snakeCase.safeName??a,C=this.convert({typeReference:R,value:w});g.TypeLiteral.isNop(C)||p.push({key:g.TypeLiteral.string(I),value:C}),this.context.errors.unscope()}for(let a of t.properties){if(s.has(a.name.wireValue)||this.context.isOptional(a.typeReference)||this.context.isNullable(a.typeReference))continue;let w=this.synthesizeDefaultValue(a.typeReference);g.TypeLiteral.isNop(w)||p.push({key:g.TypeLiteral.string(a.name.name.snakeCase.safeName),value:w})}return p.filter(a=>!g.TypeLiteral.isNop(a.value))}synthesizeDefaultValue(t,e=new Set){switch(t.type){case"optional":case"nullable":return g.TypeLiteral.nop();case"primitive":return this.synthesizeDefaultPrimitive(t.value);case"literal":return this.synthesizeDefaultLiteral(t.value);case"list":return g.TypeLiteral.list([]);case"set":return g.TypeLiteral.list([]);case"map":return g.TypeLiteral.hash([]);case"named":{if(e.has(t.value))return g.TypeLiteral.nop();let i=this.context.resolveNamedType({typeId:t.value});return i==null?g.TypeLiteral.nop():this.synthesizeDefaultNamed({named:i,typeId:t.value,seen:e})}case"unknown":return g.TypeLiteral.nop();default:L(t)}}synthesizeDefaultPrimitive(t){switch(t){case"STRING":case"BASE_64":case"BIG_INTEGER":return g.TypeLiteral.string("string");case"INTEGER":case"LONG":case"UINT":case"UINT_64":return g.TypeLiteral.integer(1);case"FLOAT":case"DOUBLE":return g.TypeLiteral.float(1.1);case"BOOLEAN":return g.TypeLiteral.boolean(!0);case"DATE":return g.TypeLiteral.string("2024-01-15");case"DATE_TIME":case"DATE_TIME_RFC_2822":return g.TypeLiteral.string("2024-01-15T09:30:00Z");case"UUID":return g.TypeLiteral.string("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32");default:L(t)}}synthesizeDefaultLiteral(t){switch(t.type){case"boolean":return g.TypeLiteral.boolean(t.value);case"string":return g.TypeLiteral.string(t.value);default:L(t)}}synthesizeDefaultNamed({named:t,typeId:e,seen:i}){let s=new Set(i);switch(s.add(e),t.type){case"alias":return this.synthesizeDefaultValue(t.typeReference,s);case"enum":{let p=t.values[0];return p==null?g.TypeLiteral.nop():g.TypeLiteral.string(p.wireValue)}case"object":{let p=[];for(let a of t.properties){if(this.context.isOptional(a.typeReference)||this.context.isNullable(a.typeReference))continue;let w=this.synthesizeDefaultValue(a.typeReference,s);g.TypeLiteral.isNop(w)||p.push({key:g.TypeLiteral.string(a.name.name.snakeCase.safeName),value:w})}return g.TypeLiteral.hash(p)}case"discriminatedUnion":case"undiscriminatedUnion":return g.TypeLiteral.nop();default:L(t)}}getValueAsNumber({value:t,as:e}){let i=e==="key"&&typeof t=="string"?Number(t):t;return this.context.getValueAsNumber({value:i})}getValueAsBoolean({value:t,as:e}){let i=e==="key"?typeof t=="string"?t==="true":!!t:t;return this.context.getValueAsBoolean({value:i})}};var st=class l extends De{constructor({ir:e,config:i}){super({ir:e,config:i});y(this,"ir");y(this,"customConfig");y(this,"dynamicTypeLiteralMapper");this.ir=e,this.customConfig=i.customConfig!=null?i.customConfig:void 0,this.dynamicTypeLiteralMapper=new ot({context:this})}clone(){return new l({ir:this.ir,config:this.config})}getRootClientClassReference(){return g.classReference({name:this.getRootClientClassName(),modules:[this.getRootModuleName()]})}getRootClientClassName(){return this.customConfig?.clientModuleName??"Client"}getRootModuleName(){return xt(this.customConfig?.moduleName??this.config.organization)}isSingleEnvironmentID(e){return typeof e=="string"}isMultiEnvironmentValues(e){return typeof e=="object"}getEnvironmentTypeReferenceFromID(e){let i=this.resolveEnvironmentName(e);if(i!=null)return g.codeblock(s=>{s.writeNode(this.getEnvironmentClassReference()),s.write("::"),s.write(this.getEnumName(i))})}getEnvironmentClassReference(){return g.classReference({name:"Environment",modules:[this.getRootModuleName()]})}getEnumName(e){return this.getName(e.screamingSnakeCase.safeName)}getMethodName(e){return this.getName(e.snakeCase.safeName)}getPropertyName(e){return this.getName(e.snakeCase.safeName)}getName(e){return e}};c();m();d();var Un="client",No="@client",at=class{constructor({context:t,formatter:e}){y(this,"context");y(this,"formatter");this.context=t,this.formatter=e}async generateSnippet({endpoint:t,request:e}){return await this.buildCodeBlock({endpoint:t,snippet:e}).toStringAsync({customConfig:this.context.customConfig??{},formatter:this.formatter})}generateSnippetSync({endpoint:t,request:e}){return this.buildCodeBlock({endpoint:t,snippet:e}).toString({customConfig:this.context.customConfig??{},formatter:this.formatter})}async generateSnippetAst({endpoint:t,request:e,options:i}){return i?.skipClientInstantiation?this.buildCodeBlockWithoutClient({endpoint:t,snippet:e}):this.buildCodeBlock({endpoint:t,snippet:e})}buildCodeBlock({endpoint:t,snippet:e}){return g.codeblock(i=>{i.writeNodeStatement(this.constructClient({endpoint:t,snippet:e})),i.newLine(),i.writeNodeStatement(this.callMethod({endpoint:t,snippet:e}))})}buildCodeBlockWithoutClient({endpoint:t,snippet:e}){return g.codeblock(i=>{i.writeNodeStatement(this.callMethodOnExistingClient({endpoint:t,snippet:e}))})}constructClient({endpoint:t,snippet:e}){return g.codeblock(i=>{i.addRequire(this.context.getRootModuleName().toLowerCase());let s=this.context.getRootClientClassReference(),p=this.getRootClientBuilderArgs({endpoint:t,snippet:e});i.write(`${Un} = `),i.writeNode(g.instantiateClass({classReference:s,arguments_:p}))})}getRootClientBaseUrlArg({baseUrl:t,environment:e}){if(t!=null&&e!=null)return this.context.errors.add({severity:"CRITICAL",message:"Cannot specify both baseUrl and environment options"}),[];if(t!=null)return[g.keywordArgument({name:"base_url",value:g.TypeLiteral.string(t)})];if(e!=null){if(this.context.isSingleEnvironmentID(e)){let i=this.context.getEnvironmentTypeReferenceFromID(e);return i==null?(this.context.errors.add({severity:"CRITICAL",message:`Environment ID ${e} not found`}),[]):[g.keywordArgument({name:"environment",value:i})]}if(this.context.isMultiEnvironmentValues(e))return this.context.errors.add({severity:"CRITICAL",message:"Multi-environment values are not supported in Ruby snippets yet"}),[]}return[]}getRootClientAuthArgs({auth:t,values:e}){if(e.type!==t.type)return this.addError(this.context.newAuthMismatchError({auth:t,values:e}).message),[];switch(t.type){case"basic":return e.type==="basic"?this.getRootClientBasicAuthArgs({auth:t,values:e}):[];case"bearer":return e.type==="bearer"?this.getRootClientBearerAuthArgs({auth:t,values:e}):[];case"header":return e.type==="header"?this.getRootClientHeaderAuthArgs({auth:t,values:e}):[];case"oauth":return e.type==="oauth"?this.getRootClientOAuthArgs({auth:t,values:e}):[];case"inferred":return[];default:L(t)}}addError(t){this.context.errors.add({severity:S.Critical,message:t})}addWarning(t){this.context.errors.add({severity:S.Warning,message:t})}getRootClientBasicAuthArgs({auth:t,values:e}){let i=t,s=!!i.usernameOmit,p=!!i.passwordOmit,a=[];return s||a.push(g.keywordArgument({name:t.username.snakeCase.safeName,value:g.TypeLiteral.string(e.username)})),p||a.push(g.keywordArgument({name:t.password.snakeCase.safeName,value:g.TypeLiteral.string(e.password)})),a}getRootClientBearerAuthArgs({auth:t,values:e}){return[g.keywordArgument({name:t.token.snakeCase.safeName,value:g.TypeLiteral.string(e.token)})]}getRootClientHeaderAuthArgs({auth:t,values:e}){return[g.keywordArgument({name:t.header.name.name.snakeCase.safeName,value:g.TypeLiteral.string(e.value)})]}getRootClientOAuthArgs({auth:t,values:e}){return[g.keywordArgument({name:t.clientId.snakeCase.safeName,value:g.TypeLiteral.string(e.clientId)}),g.keywordArgument({name:t.clientSecret.snakeCase.safeName,value:g.TypeLiteral.string(e.clientSecret)})]}getRootClientHeaderArgs({headers:t,values:e}){let i=[];for(let s of t){let p=e[s.name.wireValue];p!=null&&typeof p=="string"&&i.push(g.keywordArgument({name:s.name.name.snakeCase.safeName,value:g.TypeLiteral.string(p)}))}return i}getRootClientBuilderArgs({endpoint:t,snippet:e}){let i=[];t.auth!=null&&(e.auth!=null?i.push(...this.getRootClientAuthArgs({auth:t.auth,values:e.auth})):this.context.errors.add({severity:"WARNING",message:`Auth with ${t.auth.type} configuration is required for this endpoint`}));let s=this.getRootClientBaseUrlArg({baseUrl:e.baseURL,environment:e.environment});return s.length>0&&i.push(...s),this.context.errors.scope("Headers"),this.context.ir.headers!=null&&e.headers!=null&&i.push(...this.getRootClientHeaderArgs({headers:this.context.ir.headers,values:e.headers})),this.context.errors.unscope(),i}callMethod({endpoint:t,snippet:e}){let i={on:g.codeblock(Un),method:this.getMethod({endpoint:t}),arguments_:[]};switch(t.request.type){case"inlined":i.keywordArguments=this.getMethodArgsForInlinedRequest({request:t.request,snippet:e});break;case"body":i.keywordArguments=this.getMethodArgsForBodyRequest({request:t.request,snippet:e});break;default:L(t.request)}let s=this.getRequestOptions({endpoint:t,snippet:e});return s!=null&&(i.keywordArguments=i.keywordArguments??[],i.keywordArguments.push(s)),g.invokeMethod(i)}callMethodOnExistingClient({endpoint:t,snippet:e}){let i={on:g.codeblock(No),method:this.getMethod({endpoint:t}),arguments_:[]};switch(t.request.type){case"inlined":i.keywordArguments=this.getMethodArgsForInlinedRequest({request:t.request,snippet:e});break;case"body":i.keywordArguments=this.getMethodArgsForBodyRequest({request:t.request,snippet:e});break;default:L(t.request)}let s=this.getRequestOptions({endpoint:t,snippet:e});return s!=null&&(i.keywordArguments=i.keywordArguments??[],i.keywordArguments.push(s)),g.invokeMethod(i)}getRequestOptions({endpoint:t,snippet:e}){let i=e.headers??{},s=Object.entries(i);if(s.length===0)return;let p=new Set;if(this.context.ir.headers!=null)for(let b of this.context.ir.headers)p.add(b.name.wireValue.toLowerCase());if(t.request.type==="inlined"&&t.request.headers!=null)for(let b of t.request.headers)p.add(b.name.wireValue.toLowerCase());let a=s.filter(([b])=>!p.has(b.toLowerCase()));if(a.length===0)return;let w=a.map(([b,R])=>({key:g.TypeLiteral.string(b),value:g.TypeLiteral.string(String(R))}));return g.keywordArgument({name:"request_options",value:g.TypeLiteral.hash([{key:g.TypeLiteral.string("additional_headers"),value:g.TypeLiteral.hash(w)}])})}getMethodArgsForInlinedRequest({request:t,snippet:e}){let i=[];if(i.push(...this.getNamedParameterArgs({kind:"PathParameters",namedParameters:t.pathParameters,values:e.pathParameters})),i.push(...this.getNamedParameterArgs({kind:"QueryParameters",namedParameters:t.queryParameters,values:e.queryParameters})),i.push(...this.getNamedParameterArgs({kind:"Headers",namedParameters:t.headers,values:e.headers})),t.body!=null&&e.requestBody!=null)switch(t.body.type){case"properties":i.push(...this.getMethodArgsForPropertiesRequest({request:t.body,snippet:e}));break;case"referenced":{let s=t.body.bodyType;if(s.type==="typeReference"){let p=s.value;if(p.type==="named"){let a=this.context.resolveNamedType({typeId:p.value});if(a!=null&&a.type==="object"){let w=this.context.getRecord(e.requestBody);if(w!=null){let b=this.getBodyFieldsAsKeywordArgs({namedType:a,bodyRecord:w});i.push(...b)}}else if(a!=null){let w=this.getBodyArgsForNonObjectType({namedType:a,typeRef:p,bodyValue:e.requestBody});i.push(...w)}}else{let a=this.context.dynamicTypeLiteralMapper.convert({typeReference:p,value:e.requestBody});g.TypeLiteral.isNop(a)||i.push(g.keywordArgument({name:t.body.bodyKey.snakeCase.safeName,value:a}))}}break}case"fileUpload":break;default:L(t.body)}return i}getNamedParameterArgs({kind:t,namedParameters:e,values:i}){let s=[];if(this.context.errors.scope(t),e!=null){let p=this.context.associateByWireValue({parameters:e,values:i??{},ignoreMissingParameters:!0});for(let a of p){let w=this.context.dynamicTypeLiteralMapper.convert(a);g.TypeLiteral.isNop(w)||s.push(g.keywordArgument({name:this.context.getPropertyName(a.name.name),value:w}))}}return this.context.errors.unscope(),s}getMethodArgsForPropertiesRequest({request:t,snippet:e}){let i=[],s=this.context.getRecord(e.requestBody)??{},p=this.context.associateByWireValue({parameters:t.value,values:s});for(let a of p){let w=this.context.dynamicTypeLiteralMapper.convert(a);g.TypeLiteral.isNop(w)||i.push(g.keywordArgument({name:this.context.getPropertyName(a.name.name),value:w}))}return i}getMethodArgsForBodyRequest({request:t,snippet:e}){let i=[];if(i.push(...this.getNamedParameterArgs({kind:"PathParameters",namedParameters:t.pathParameters,values:e.pathParameters})),t.body!=null&&e.requestBody!=null)switch(t.body.type){case"bytes":this.context.errors.add({severity:"CRITICAL",message:"Bytes request body is not supported in Ruby snippets yet"});break;case"typeReference":{let s=t.body.value;if(s.type==="named"){let p=this.context.resolveNamedType({typeId:s.value});if(p!=null&&p.type==="object"){let a=this.context.getRecord(e.requestBody);if(a!=null){let w=this.getBodyFieldsAsKeywordArgs({namedType:p,bodyRecord:a});i.push(...w)}}else if(p!=null){let a=this.getBodyArgsForNonObjectType({namedType:p,typeRef:s,bodyValue:e.requestBody});i.push(...a)}}else{let p=this.context.dynamicTypeLiteralMapper.convert({typeReference:s,value:e.requestBody});g.TypeLiteral.isNop(p)||i.push(g.keywordArgument({name:"request",value:p}))}break}default:L(t.body)}return i}getBodyArgsForNonObjectType({namedType:t,typeRef:e,bodyValue:i}){let s=[];switch(t.type){case"undiscriminatedUnion":{let p=this.context.getRecord(i);if(p!=null){for(let w of t.types)if(w.type==="named"){let b=this.context.resolveNamedType({typeId:w.value});if(b!=null&&b.type==="object"){let R=new Set(b.properties.map(M=>M.name.wireValue)),I=Object.keys(p);if(I.every(M=>R.has(M))&&I.length>0){let M=this.getBodyFieldsAsKeywordArgs({namedType:b,bodyRecord:p});return s.push(...M),s}}}}let a=this.context.dynamicTypeLiteralMapper.convert({typeReference:e,value:i});g.TypeLiteral.isNop(a)||s.push(g.keywordArgument({name:"request",value:a}));break}case"alias":{let p=t.typeReference;if(p.type==="named"){let w=this.context.resolveNamedType({typeId:p.value});if(w!=null&&w.type==="object"){let b=this.context.getRecord(i);if(b!=null){let R=this.getBodyFieldsAsKeywordArgs({namedType:w,bodyRecord:b});return s.push(...R),s}}}let a=this.context.dynamicTypeLiteralMapper.convert({typeReference:e,value:i});g.TypeLiteral.isNop(a)||s.push(g.keywordArgument({name:"request",value:a}));break}case"discriminatedUnion":case"enum":{let p=this.context.dynamicTypeLiteralMapper.convert({typeReference:e,value:i});g.TypeLiteral.isNop(p)||s.push(g.keywordArgument({name:"request",value:p}));break}case"object":break;default:L(t)}return s}getBodyFieldsAsKeywordArgs({namedType:t,bodyRecord:e}){let i=[];switch(t.type){case"object":{for(let s of t.properties){let p=s.name.wireValue,a=e[p];if(a!==void 0){this.context.errors.scope(p);let w=this.context.dynamicTypeLiteralMapper.convert({typeReference:s.typeReference,value:a});this.context.errors.unscope(),g.TypeLiteral.isNop(w)||i.push(g.keywordArgument({name:this.context.getPropertyName(s.name.name),value:w}))}}break}case"alias":case"discriminatedUnion":case"undiscriminatedUnion":case"enum":break;default:L(t)}return i}getMethod({endpoint:t}){return t.declaration.fernFilepath.allParts.length>0?`${t.declaration.fernFilepath.allParts.map(e=>`${this.context.getMethodName(e)}`).join(".")}.${this.context.getMethodName(t.declaration.name)}`:this.context.getMethodName(t.declaration.name)}};var ut=class extends Pe{constructor({ir:e,config:i,formatter:s}){super(new st({ir:e,config:i}));y(this,"formatter");this.formatter=s}async generate(e,i={}){return super.generate(e,i)}generateSync(e){return super.generateSync(e)}async generateSnippetAst(e,i){return super.generateSnippetAst(e,i)}createSnippetGenerator(e){return new at({context:e,formatter:this.formatter})}};0&&(module.exports={DynamicSnippetsGenerator});
|
|
26
26
|
/*! Bundled license information:
|