@fern-api/ruby-dynamic-snippets 0.0.4 → 0.0.5
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/cjs/DynamicSnippetsGenerator.cjs +4 -4
- package/cjs/DynamicSnippetsGenerator.cjs.map +1 -1
- package/cjs/EndpointSnippetGenerator.cjs +1 -1
- package/cjs/EndpointSnippetGenerator.cjs.map +1 -1
- package/cjs/context/DynamicSnippetsGeneratorContext.cjs +6 -6
- package/cjs/context/DynamicSnippetsGeneratorContext.cjs.map +1 -1
- package/cjs/context/DynamicToLiteralMapper.cjs +5 -5
- package/cjs/context/DynamicToLiteralMapper.cjs.map +1 -1
- package/cjs/index.cjs +4 -4
- package/cjs/index.cjs.map +1 -1
- package/esm/DynamicSnippetsGenerator.js +1 -1
- package/esm/EndpointSnippetGenerator.js +1 -1
- package/esm/{chunk-WYOR4H34.js → chunk-24Z62MLO.js} +2 -2
- package/esm/{chunk-M3XXD3D4.js → chunk-AGVSP2TB.js} +2 -2
- package/esm/{chunk-M3XXD3D4.js.map → chunk-AGVSP2TB.js.map} +1 -1
- package/esm/{chunk-Y7AZOK45.js → chunk-CUHUKCRC.js} +2 -2
- package/esm/{chunk-BFNNFVSX.js → chunk-CWYMFRFT.js} +2 -2
- package/esm/{chunk-BFNNFVSX.js.map → chunk-CWYMFRFT.js.map} +1 -1
- package/esm/context/DynamicSnippetsGeneratorContext.js +1 -1
- package/esm/context/DynamicToLiteralMapper.js +1 -1
- package/esm/index.js +1 -1
- package/package.json +1 -1
- /package/esm/{chunk-WYOR4H34.js.map → chunk-24Z62MLO.js.map} +0 -0
- /package/esm/{chunk-Y7AZOK45.js.map → chunk-CUHUKCRC.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import{a}from"./chunk-CUHUKCRC.js";import"./chunk-AGVSP2TB.js";import"./chunk-24Z62MLO.js";import"./chunk-CWYMFRFT.js";import"./chunk-SFFHNMMU.js";export{a as DynamicSnippetsGenerator};
|
|
2
2
|
//# sourceMappingURL=DynamicSnippetsGenerator.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import{a}from"./chunk-AGVSP2TB.js";import"./chunk-SFFHNMMU.js";export{a as EndpointSnippetGenerator};
|
|
2
2
|
//# sourceMappingURL=EndpointSnippetGenerator.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as h}from"./chunk-
|
|
1
|
+
import{a as h}from"./chunk-CWYMFRFT.js";import{a as d,b as r,c as o,g as b,h as i}from"./chunk-SFFHNMMU.js";r();o();r();o();r();o();r();o();r();o();r();o();r();o();var Y=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis,S=Y;var Q=typeof self=="object"&&self&&self.Object===Object&&self,X=S||Q||Function("return this")(),v=X;var $=v.Symbol,p=$;r();o();var R=Object.prototype,_=R.hasOwnProperty,ee=R.toString,m=p?p.toStringTag:void 0;function te(e){var a=_.call(e,m),t=e[m];try{e[m]=void 0;var f=!0}catch(x){}var l=ee.call(e);return f&&(a?e[m]=t:delete e[m]),l}var C=te;r();o();var re=Object.prototype,oe=re.toString;function ae(e){return oe.call(e)}var I=ae;var fe="[object Null]",se="[object Undefined]",N=p?p.toStringTag:void 0;function ue(e){return e==null?e===void 0?se:fe:N&&N in Object(e)?C(e):I(e)}var A=ue;r();o();function le(e){return e!=null&&typeof e=="object"}var T=le;var pe="[object Symbol]";function me(e){return typeof e=="symbol"||T(e)&&A(e)==pe}var j=me;r();o();r();o();function de(e,a){for(var t=-1,f=e==null?0:e.length,l=Array(f);++t<f;)l[t]=a(e[t],t,e);return l}var O=de;r();o();var ie=Array.isArray,w=ie;var ne=1/0,k=p?p.prototype:void 0,E=k?k.toString:void 0;function W(e){if(typeof e=="string")return e;if(w(e))return O(e,W)+"";if(j(e))return E?E.call(e):"";var a=e+"";return a=="0"&&1/e==-ne?"-0":a}var B=W;r();o();function xe(e){return e==null?"":B(e)}var M=xe;r();o();r();o();r();o();r();o();function ce(e,a,t){var f=-1,l=e.length;a<0&&(a=-a>l?0:l+a),t=t>l?l:t,t<0&&(t+=l),l=a>t?0:t-a>>>0,a>>>=0;for(var x=Array(l);++f<l;)x[f]=e[f+a];return x}var F=ce;function ge(e,a,t){var f=e.length;return t=t===void 0?f:t,!a&&t>=f?e:F(e,a,t)}var L=ge;r();o();var ye="\\ud800-\\udfff",be="\\u0300-\\u036f",he="\\ufe20-\\ufe2f",Se="\\u20d0-\\u20ff",ve=be+he+Se,Re="\\ufe0e\\ufe0f",Ce="\\u200d",Ie=RegExp("["+Ce+ye+ve+Re+"]");function Ne(e){return Ie.test(e)}var n=Ne;r();o();r();o();function Ae(e){return e.split("")}var D=Ae;r();o();var P="\\ud800-\\udfff",Te="\\u0300-\\u036f",je="\\ufe20-\\ufe2f",Oe="\\u20d0-\\u20ff",we=Te+je+Oe,ke="\\ufe0e\\ufe0f",Ee="["+P+"]",c="["+we+"]",g="\\ud83c[\\udffb-\\udfff]",We="(?:"+c+"|"+g+")",z="[^"+P+"]",U="(?:\\ud83c[\\udde6-\\uddff]){2}",q="[\\ud800-\\udbff][\\udc00-\\udfff]",Be="\\u200d",V=We+"?",G="["+ke+"]?",Me="(?:"+Be+"(?:"+[z,U,q].join("|")+")"+G+V+")*",Fe=G+V+Me,Le="(?:"+[z+c+"?",c,U,q,Ee].join("|")+")",De=RegExp(g+"(?="+g+")|"+Le+Fe,"g");function Pe(e){return e.match(De)||[]}var J=Pe;function ze(e){return n(e)?J(e):D(e)}var K=ze;function Ue(e){return function(a){a=M(a);var t=n(a)?K(a):void 0,f=t?t[0]:a.charAt(0),l=t?L(t,1).join(""):a.slice(1);return f[e]()+l}}var H=Ue;var qe=H("toUpperCase"),y=qe;var Z=class e extends b{constructor({ir:t,config:f}){super({ir:t,config:f});d(this,"ir");d(this,"customConfig");d(this,"dynamicTypeLiteralMapper");this.ir=t,this.customConfig=f.customConfig!=null?f.customConfig:void 0,this.dynamicTypeLiteralMapper=new h({context:this})}clone(){return new e({ir:this.ir,config:this.config})}getRootClientClassReference(){return i.classReference({name:this.getRootClientClassName(),modules:[this.getRootModuleName()]})}getRootClientClassName(){return"Client"}getRootModuleName(){var t,f;return y((f=(t=this.customConfig)==null?void 0:t.clientModuleName)!=null?f:this.config.organization)}isSingleEnvironmentID(t){return typeof t=="string"}isMultiEnvironmentValues(t){return typeof t=="object"}getEnvironmentTypeReferenceFromID(t){let f=this.resolveEnvironmentName(t);if(f!=null)return i.codeblock(l=>{l.writeNode(this.getEnvironmentClassReference()),l.write("::"),l.write(this.getEnumName(f))})}getEnvironmentClassReference(){return i.classReference({name:"Environment",modules:[this.getRootModuleName()]})}getEnumName(t){return this.getName(t.screamingSnakeCase.safeName)}getMethodName(t){return this.getName(t.snakeCase.safeName)}getPropertyName(t){return this.getName(t.snakeCase.safeName)}getName(t){return t}};export{Z as a};
|
|
2
2
|
/*! Bundled license information:
|
|
3
3
|
|
|
4
4
|
lodash-es/lodash.js:
|
|
@@ -12,4 +12,4 @@ lodash-es/lodash.js:
|
|
|
12
12
|
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
13
13
|
*)
|
|
14
14
|
*/
|
|
15
|
-
//# sourceMappingURL=chunk-
|
|
15
|
+
//# sourceMappingURL=chunk-24Z62MLO.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as d,b as
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as d,b as m,c as p,d as u,f as c,h as n}from"./chunk-SFFHNMMU.js";m();p();var y="client",l=class{constructor({context:e,formatter:t}){d(this,"context");d(this,"formatter");this.context=e,this.formatter=t}async generateSnippet({endpoint:e,request:t}){var a;return await this.buildCodeBlock({endpoint:e,snippet:t}).toStringAsync({customConfig:(a=this.context.customConfig)!=null?a:{},formatter:this.formatter})}generateSnippetSync({endpoint:e,request:t}){var a;return this.buildCodeBlock({endpoint:e,snippet:t}).toString({customConfig:(a=this.context.customConfig)!=null?a:{},formatter:this.formatter})}async generateSnippetAst({endpoint:e,request:t,options:r}){return this.buildCodeBlock({endpoint:e,snippet:t})}buildCodeBlock({endpoint:e,snippet:t}){return n.codeblock(r=>{r.writeNodeStatement(this.constructClient({endpoint:e,snippet:t})),r.newLine(),r.writeNodeStatement(this.callMethod({endpoint:e,snippet:t}))})}constructClient({endpoint:e,snippet:t}){return n.codeblock(r=>{r.addRequire(this.context.getRootModuleName().toLowerCase());let a=this.context.getRootClientClassReference(),s=this.getRootClientBuilderArgs({endpoint:e,snippet:t});r.write(`${y} = `),r.writeNode(n.instantiateClass({classReference:a,arguments_:s}))})}getRootClientBaseUrlArg({baseUrl:e,environment:t}){if(e!=null&&t!=null)return this.context.errors.add({severity:"CRITICAL",message:"Cannot specify both baseUrl and environment options"}),[];if(e!=null)return[n.keywordArgument({name:"base_url",value:n.TypeLiteral.string(e)})];if(t!=null){if(this.context.isSingleEnvironmentID(t)){let r=this.context.getEnvironmentTypeReferenceFromID(t);return r==null?(this.context.errors.add({severity:"CRITICAL",message:`Environment ID ${t} not found`}),[]):[n.keywordArgument({name:"environment",value:r})]}if(this.context.isMultiEnvironmentValues(t))return this.context.errors.add({severity:"CRITICAL",message:"Multi-environment values are not supported in Ruby snippets yet"}),[]}return[]}getRootClientAuthArgs({auth:e,values:t}){if(t.type!==e.type)return this.addError(this.context.newAuthMismatchError({auth:e,values:t}).message),[];switch(e.type){case"basic":return t.type==="basic"?this.getRootClientBasicAuthArgs({auth:e,values:t}):[];case"bearer":return t.type==="bearer"?this.getRootClientBearerAuthArgs({auth:e,values:t}):[];case"header":return t.type==="header"?this.getRootClientHeaderAuthArgs({auth:e,values:t}):[];case"oauth":return t.type==="oauth"?this.getRootClientOAuthArgs({auth:e,values:t}):[];case"inferred":return this.addWarning("Ruby SDK does not support inferred auth yet"),[];default:u(e)}}addError(e){this.context.errors.add({severity:c.Critical,message:e})}addWarning(e){this.context.errors.add({severity:c.Warning,message:e})}getRootClientBasicAuthArgs({auth:e,values:t}){return[n.keywordArgument({name:e.username.snakeCase.safeName,value:n.TypeLiteral.string(t.username)}),n.keywordArgument({name:e.password.snakeCase.safeName,value:n.TypeLiteral.string(t.password)})]}getRootClientBearerAuthArgs({auth:e,values:t}){return[n.keywordArgument({name:e.token.snakeCase.safeName,value:n.TypeLiteral.string(t.token)})]}getRootClientHeaderAuthArgs({auth:e,values:t}){return[n.keywordArgument({name:e.header.name.name.snakeCase.safeName,value:n.TypeLiteral.string(t.value)})]}getRootClientOAuthArgs({auth:e,values:t}){return[n.keywordArgument({name:e.clientId.snakeCase.safeName,value:n.TypeLiteral.string(t.clientId)}),n.keywordArgument({name:e.clientSecret.snakeCase.safeName,value:n.TypeLiteral.string(t.clientSecret)})]}getRootClientHeaderArgs({headers:e,values:t}){let r=[];for(let a of e){let s=t[a.name.name.originalName];s!=null&&typeof s=="string"&&r.push(n.keywordArgument({name:a.name.name.snakeCase.safeName,value:n.TypeLiteral.string(s)}))}return r}getRootClientBuilderArgs({endpoint:e,snippet:t}){let r=[];e.auth!=null&&(t.auth!=null?r.push(...this.getRootClientAuthArgs({auth:e.auth,values:t.auth})):this.context.errors.add({severity:"WARNING",message:`Auth with ${e.auth.type} configuration is required for this endpoint`}));let a=this.getRootClientBaseUrlArg({baseUrl:t.baseURL,environment:t.environment});return a.length>0&&r.push(...a),this.context.errors.scope("Headers"),this.context.ir.headers!=null&&t.headers!=null&&r.push(...this.getRootClientHeaderArgs({headers:this.context.ir.headers,values:t.headers})),this.context.errors.unscope(),r}callMethod({endpoint:e,snippet:t}){let r={on:n.codeblock(y),method:this.getMethod({endpoint:e}),arguments_:[]};switch(e.request.type){case"inlined":r.keywordArguments=this.getMethodArgsForInlinedRequest({request:e.request,snippet:t});break;case"body":r.arguments_=this.getMethodArgsForBodyRequest({request:e.request,snippet:t});break;default:u(e.request)}return n.invokeMethod(r)}getMethodArgsForInlinedRequest({request:e,snippet:t}){let r=[];if(r.push(...this.getNamedParameterArgs({kind:"PathParameters",namedParameters:e.pathParameters,values:t.pathParameters})),r.push(...this.getNamedParameterArgs({kind:"QueryParameters",namedParameters:e.queryParameters,values:t.queryParameters})),r.push(...this.getNamedParameterArgs({kind:"Headers",namedParameters:e.headers,values:t.headers})),e.body!=null)switch(e.body.type){case"properties":r.push(...this.getMethodArgsForPropertiesRequest({request:e.body,snippet:t}));break;case"referenced":case"fileUpload":break;default:u(e.body)}return r}getNamedParameterArgs({kind:e,namedParameters:t,values:r}){let a=[];if(this.context.errors.scope(e),t!=null){let s=this.context.associateByWireValue({parameters:t,values:r!=null?r:{},ignoreMissingParameters:!0});for(let i of s){let o=this.context.dynamicTypeLiteralMapper.convert(i);n.TypeLiteral.isNop(o)||a.push(n.keywordArgument({name:this.context.getPropertyName(i.name.name),value:o}))}}return this.context.errors.unscope(),a}getMethodArgsForPropertiesRequest({request:e,snippet:t}){var s;let r=[],a=this.context.associateByWireValue({parameters:e.value,values:(s=this.context.getRecord(t.requestBody))!=null?s:{}});for(let i of a){let o=this.context.dynamicTypeLiteralMapper.convert(i);n.TypeLiteral.isNop(o)||r.push(n.keywordArgument({name:this.context.getPropertyName(i.name.name),value:o}))}return r}getMethodArgsForBodyRequest({request:e,snippet:t}){var a;let r=[];if(this.context.errors.scope("PathParameters"),e.pathParameters!=null){let s=this.context.associateByWireValue({parameters:e.pathParameters,values:(a=t.pathParameters)!=null?a:{},ignoreMissingParameters:!0});for(let i of s)r.push(n.positionalArgument({value:this.context.dynamicTypeLiteralMapper.convert(i)}))}if(this.context.errors.unscope(),e.body!=null)switch(e.body.type){case"bytes":this.context.errors.add({severity:"CRITICAL",message:"Bytes request body is not supported in Ruby snippets yet"});break;case"typeReference":r.push(n.positionalArgument({value:this.context.dynamicTypeLiteralMapper.convert({typeReference:e.body.value,value:this.context.getRecord(t.requestBody)})}));break;default:u(e.body)}return r}getMethod({endpoint:e}){return e.declaration.fernFilepath.allParts.length>0?`${e.declaration.fernFilepath.allParts.map(t=>`${this.context.getMethodName(t)}`).join(".")}.${this.context.getMethodName(e.declaration.name)}`:this.context.getMethodName(e.declaration.name)}};export{l as a};
|
|
2
|
+
//# sourceMappingURL=chunk-AGVSP2TB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/EndpointSnippetGenerator.ts"],"sourcesContent":["import { AbstractFormatter, Options, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { ruby } from \"@fern-api/ruby-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\n\nconst CLIENT_VAR_NAME = \"client\";\n\nexport class EndpointSnippetGenerator {\n private context: DynamicSnippetsGeneratorContext;\n private formatter: AbstractFormatter | undefined;\n\n constructor({ context, formatter }: { context: DynamicSnippetsGeneratorContext; formatter?: AbstractFormatter }) {\n this.context = context;\n this.formatter = formatter;\n }\n\n public async generateSnippet({\n endpoint,\n request\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n }): Promise<string> {\n const code = this.buildCodeBlock({ endpoint, snippet: request });\n return await code.toStringAsync({\n customConfig: this.context.customConfig ?? {},\n formatter: this.formatter\n });\n }\n\n public generateSnippetSync({\n endpoint,\n request\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n }): string {\n const code = this.buildCodeBlock({ endpoint, snippet: request });\n return code.toString({\n customConfig: this.context.customConfig ?? {},\n formatter: this.formatter\n });\n }\n\n public async generateSnippetAst({\n endpoint,\n request,\n options\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n options?: Options;\n }): Promise<ruby.AstNode> {\n return this.buildCodeBlock({ endpoint, snippet: request });\n }\n\n private buildCodeBlock({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.AstNode {\n // In Ruby, concise and full styles are the same\n return ruby.codeblock((writer) => {\n writer.writeNodeStatement(this.constructClient({ endpoint, snippet }));\n writer.newLine();\n writer.writeNodeStatement(this.callMethod({ endpoint, snippet }));\n });\n }\n\n private constructClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.AstNode {\n return ruby.codeblock((writer) => {\n writer.addRequire(this.context.getRootModuleName().toLowerCase());\n\n const clientClassRef = this.context.getRootClientClassReference();\n const builderArgs = this.getRootClientBuilderArgs({ endpoint, snippet });\n\n writer.write(`${CLIENT_VAR_NAME} = `);\n writer.writeNode(\n ruby.instantiateClass({\n classReference: clientClassRef,\n arguments_: builderArgs\n })\n );\n });\n }\n\n // Helper for base URL/environment argument\n private getRootClientBaseUrlArg({\n baseUrl,\n environment\n }: {\n baseUrl: string | undefined;\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n }): ruby.KeywordArgument[] {\n if (baseUrl != null && environment != null) {\n this.context.errors.add({\n severity: \"CRITICAL\",\n message: \"Cannot specify both baseUrl and environment options\"\n });\n return [];\n }\n if (baseUrl != null) {\n return [\n ruby.keywordArgument({\n name: \"base_url\",\n value: ruby.TypeLiteral.string(baseUrl)\n })\n ];\n }\n if (environment != null) {\n if (this.context.isSingleEnvironmentID(environment)) {\n const environmentTypeReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n if (environmentTypeReference == null) {\n this.context.errors.add({\n severity: \"CRITICAL\",\n message: `Environment ID ${environment} not found`\n });\n return [];\n }\n\n return [\n ruby.keywordArgument({\n name: \"environment\",\n value: environmentTypeReference\n })\n ];\n }\n if (this.context.isMultiEnvironmentValues(environment)) {\n this.context.errors.add({\n severity: \"CRITICAL\",\n message: \"Multi-environment values are not supported in Ruby snippets yet\"\n });\n return [];\n }\n }\n return [];\n }\n\n // Helper for auth arguments\n private getRootClientAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.Auth;\n values: FernIr.dynamic.AuthValues;\n }): ruby.KeywordArgument[] {\n if (values.type !== auth.type) {\n this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n return [];\n }\n\n switch (auth.type) {\n case \"basic\":\n return values.type === \"basic\" ? this.getRootClientBasicAuthArgs({ auth, values }) : [];\n case \"bearer\":\n return values.type === \"bearer\" ? this.getRootClientBearerAuthArgs({ auth, values }) : [];\n case \"header\":\n return values.type === \"header\" ? this.getRootClientHeaderAuthArgs({ auth, values }) : [];\n case \"oauth\":\n return values.type === \"oauth\" ? this.getRootClientOAuthArgs({ auth, values }) : [];\n case \"inferred\":\n this.addWarning(\"Ruby SDK does not support inferred auth yet\");\n return [];\n default:\n assertNever(auth);\n }\n }\n\n private addError(message: string): void {\n this.context.errors.add({ severity: Severity.Critical, message });\n }\n\n private addWarning(message: string): void {\n this.context.errors.add({ severity: Severity.Warning, message });\n }\n\n private getRootClientBasicAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BasicAuth;\n values: FernIr.dynamic.BasicAuthValues;\n }): ruby.KeywordArgument[] {\n return [\n ruby.keywordArgument({\n name: auth.username.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.username)\n }),\n ruby.keywordArgument({\n name: auth.password.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.password)\n })\n ];\n }\n\n private getRootClientBearerAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BearerAuth;\n values: FernIr.dynamic.BearerAuthValues;\n }): ruby.KeywordArgument[] {\n return [\n ruby.keywordArgument({\n name: auth.token.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.token)\n })\n ];\n }\n\n private getRootClientHeaderAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.HeaderAuth;\n values: FernIr.dynamic.HeaderAuthValues;\n }): ruby.KeywordArgument[] {\n return [\n ruby.keywordArgument({\n name: auth.header.name.name.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.value as string)\n })\n ];\n }\n\n private getRootClientOAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.OAuth;\n values: FernIr.dynamic.OAuthValues;\n }): ruby.KeywordArgument[] {\n // OAuth client credentials\n return [\n ruby.keywordArgument({\n name: auth.clientId.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.clientId)\n }),\n ruby.keywordArgument({\n name: auth.clientSecret.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.clientSecret)\n })\n ];\n }\n\n // Helper for headers\n private getRootClientHeaderArgs({\n headers,\n values\n }: {\n headers: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): ruby.KeywordArgument[] {\n const args: ruby.KeywordArgument[] = [];\n for (const header of headers) {\n const value = values[header.name.name.originalName];\n if (value != null && typeof value === \"string\") {\n args.push(\n ruby.keywordArgument({\n name: header.name.name.snakeCase.safeName,\n value: ruby.TypeLiteral.string(value)\n })\n );\n }\n }\n return args;\n }\n\n // Main builder\n private getRootClientBuilderArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.KeywordArgument[] {\n const builderArgs: ruby.KeywordArgument[] = [];\n\n // Auth\n if (endpoint.auth != null) {\n if (snippet.auth != null) {\n builderArgs.push(...this.getRootClientAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n } else {\n this.context.errors.add({\n severity: \"WARNING\",\n message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n });\n }\n }\n\n // Base URL / Environment\n const baseUrlArgs = this.getRootClientBaseUrlArg({\n baseUrl: snippet.baseURL,\n environment: snippet.environment\n });\n if (baseUrlArgs.length > 0) {\n builderArgs.push(...baseUrlArgs);\n }\n\n // Headers\n this.context.errors.scope(\"Headers\");\n if (this.context.ir.headers != null && snippet.headers != null) {\n builderArgs.push(\n ...this.getRootClientHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n );\n }\n this.context.errors.unscope();\n\n return builderArgs;\n }\n\n private callMethod({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.MethodInvocation {\n const invokeMethodArgs: ruby.MethodInvocation.Args = {\n on: ruby.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: []\n };\n\n switch (endpoint.request.type) {\n case \"inlined\":\n invokeMethodArgs.keywordArguments = this.getMethodArgsForInlinedRequest({\n request: endpoint.request,\n snippet\n });\n break;\n case \"body\":\n invokeMethodArgs.arguments_ = this.getMethodArgsForBodyRequest({\n request: endpoint.request,\n snippet\n });\n break;\n default:\n assertNever(endpoint.request);\n }\n\n return ruby.invokeMethod(invokeMethodArgs);\n }\n\n private getMethodArgsForInlinedRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.KeywordArgument[] {\n const args: ruby.KeywordArgument[] = [];\n\n args.push(\n ...this.getNamedParameterArgs({\n kind: \"PathParameters\",\n namedParameters: request.pathParameters,\n values: snippet.pathParameters\n })\n );\n args.push(\n ...this.getNamedParameterArgs({\n kind: \"QueryParameters\",\n namedParameters: request.queryParameters,\n values: snippet.queryParameters\n })\n );\n args.push(\n ...this.getNamedParameterArgs({\n kind: \"Headers\",\n namedParameters: request.headers,\n values: snippet.headers\n })\n );\n\n // Handle request.body if present\n if (request.body != null) {\n switch (request.body.type) {\n case \"properties\":\n args.push(...this.getMethodArgsForPropertiesRequest({ request: request.body, snippet }));\n break;\n case \"referenced\":\n case \"fileUpload\":\n // Not implemented for Ruby snippets yet\n break;\n default:\n assertNever(request.body);\n }\n }\n\n return args;\n }\n\n private getNamedParameterArgs({\n kind,\n namedParameters,\n values\n }: {\n kind: \"PathParameters\" | \"QueryParameters\" | \"Headers\";\n namedParameters: FernIr.dynamic.NamedParameter[] | undefined;\n values: Record<string, unknown> | undefined;\n }): ruby.KeywordArgument[] {\n const args: ruby.KeywordArgument[] = [];\n this.context.errors.scope(kind);\n if (namedParameters != null) {\n const associated = this.context.associateByWireValue({\n parameters: namedParameters,\n values: values ?? {},\n ignoreMissingParameters: true\n });\n for (const parameter of associated) {\n args.push(\n ruby.keywordArgument({\n name: this.context.getPropertyName(parameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n })\n );\n }\n }\n this.context.errors.unscope();\n return args;\n }\n\n private getMethodArgsForPropertiesRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequestBody.Properties;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.KeywordArgument[] {\n const args: ruby.KeywordArgument[] = [];\n\n const bodyProperties = this.context.associateByWireValue({\n parameters: request.value,\n values: this.context.getRecord(snippet.requestBody) ?? {}\n });\n for (const parameter of bodyProperties) {\n args.push(\n ruby.keywordArgument({\n name: this.context.getPropertyName(parameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n })\n );\n }\n return args;\n }\n\n private getMethodArgsForBodyRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.BodyRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.AstNode[] {\n const args: ruby.AstNode[] = [];\n\n // Add path parameters as positional arguments\n this.context.errors.scope(\"PathParameters\");\n if (request.pathParameters != null) {\n const associated = this.context.associateByWireValue({\n parameters: request.pathParameters,\n values: snippet.pathParameters ?? {},\n ignoreMissingParameters: true\n });\n for (const parameter of associated) {\n args.push(\n ruby.positionalArgument({\n value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n })\n );\n }\n }\n this.context.errors.unscope();\n\n // Add body as a positional argument\n if (request.body != null) {\n switch (request.body.type) {\n case \"bytes\":\n // Not supported in Ruby snippets yet\n this.context.errors.add({\n severity: \"CRITICAL\",\n message: \"Bytes request body is not supported in Ruby snippets yet\"\n });\n break;\n case \"typeReference\":\n args.push(\n ruby.positionalArgument({\n value: this.context.dynamicTypeLiteralMapper.convert({\n typeReference: request.body.value,\n value: this.context.getRecord(snippet.requestBody)\n })\n })\n );\n break;\n default:\n assertNever(request.body);\n }\n }\n\n return args;\n }\n\n private getMethod({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n return `${endpoint.declaration.fernFilepath.allParts\n .map((val) => `${this.context.getMethodName(val)}`)\n .join(\".\")}.${this.context.getMethodName(endpoint.declaration.name)}`;\n }\n return this.context.getMethodName(endpoint.declaration.name);\n }\n}\n"],"mappings":"2EAAAA,IAAAC,IAOA,IAAMC,EAAkB,SAEXC,EAAN,KAA+B,CAIlC,YAAY,CAAE,QAAAC,EAAS,UAAAC,CAAU,EAAgF,CAHjHC,EAAA,KAAQ,WACRA,EAAA,KAAQ,aAGJ,KAAK,QAAUF,EACf,KAAK,UAAYC,CACrB,CAEA,MAAa,gBAAgB,CACzB,SAAAE,EACA,QAAAC,CACJ,EAGoB,CAxBxB,IAAAC,EA0BQ,OAAO,MADM,KAAK,eAAe,CAAE,SAAAF,EAAU,QAASC,CAAQ,CAAC,EAC7C,cAAc,CAC5B,cAAcC,EAAA,KAAK,QAAQ,eAAb,KAAAA,EAA6B,CAAC,EAC5C,UAAW,KAAK,SACpB,CAAC,CACL,CAEO,oBAAoB,CACvB,SAAAF,EACA,QAAAC,CACJ,EAGW,CAtCf,IAAAC,EAwCQ,OADa,KAAK,eAAe,CAAE,SAAAF,EAAU,QAASC,CAAQ,CAAC,EACnD,SAAS,CACjB,cAAcC,EAAA,KAAK,QAAQ,eAAb,KAAAA,EAA6B,CAAC,EAC5C,UAAW,KAAK,SACpB,CAAC,CACL,CAEA,MAAa,mBAAmB,CAC5B,SAAAF,EACA,QAAAC,EACA,QAAAE,CACJ,EAI0B,CACtB,OAAO,KAAK,eAAe,CAAE,SAAAH,EAAU,QAASC,CAAQ,CAAC,CAC7D,CAEQ,eAAe,CACnB,SAAAD,EACA,QAAAI,CACJ,EAGiB,CAEb,OAAOC,EAAK,UAAWC,GAAW,CAC9BA,EAAO,mBAAmB,KAAK,gBAAgB,CAAE,SAAAN,EAAU,QAAAI,CAAQ,CAAC,CAAC,EACrEE,EAAO,QAAQ,EACfA,EAAO,mBAAmB,KAAK,WAAW,CAAE,SAAAN,EAAU,QAAAI,CAAQ,CAAC,CAAC,CACpE,CAAC,CACL,CAEQ,gBAAgB,CACpB,SAAAJ,EACA,QAAAI,CACJ,EAGiB,CACb,OAAOC,EAAK,UAAWC,GAAW,CAC9BA,EAAO,WAAW,KAAK,QAAQ,kBAAkB,EAAE,YAAY,CAAC,EAEhE,IAAMC,EAAiB,KAAK,QAAQ,4BAA4B,EAC1DC,EAAc,KAAK,yBAAyB,CAAE,SAAAR,EAAU,QAAAI,CAAQ,CAAC,EAEvEE,EAAO,MAAM,GAAGX,CAAe,KAAK,EACpCW,EAAO,UACHD,EAAK,iBAAiB,CAClB,eAAgBE,EAChB,WAAYC,CAChB,CAAC,CACL,CACJ,CAAC,CACL,CAGQ,wBAAwB,CAC5B,QAAAC,EACA,YAAAC,CACJ,EAG2B,CACvB,GAAID,GAAW,MAAQC,GAAe,KAClC,YAAK,QAAQ,OAAO,IAAI,CACpB,SAAU,WACV,QAAS,qDACb,CAAC,EACM,CAAC,EAEZ,GAAID,GAAW,KACX,MAAO,CACHJ,EAAK,gBAAgB,CACjB,KAAM,WACN,MAAOA,EAAK,YAAY,OAAOI,CAAO,CAC1C,CAAC,CACL,EAEJ,GAAIC,GAAe,KAAM,CACrB,GAAI,KAAK,QAAQ,sBAAsBA,CAAW,EAAG,CACjD,IAAMC,EAA2B,KAAK,QAAQ,kCAAkCD,CAAW,EAC3F,OAAIC,GAA4B,MAC5B,KAAK,QAAQ,OAAO,IAAI,CACpB,SAAU,WACV,QAAS,kBAAkBD,CAAW,YAC1C,CAAC,EACM,CAAC,GAGL,CACHL,EAAK,gBAAgB,CACjB,KAAM,cACN,MAAOM,CACX,CAAC,CACL,CACJ,CACA,GAAI,KAAK,QAAQ,yBAAyBD,CAAW,EACjD,YAAK,QAAQ,OAAO,IAAI,CACpB,SAAU,WACV,QAAS,iEACb,CAAC,EACM,CAAC,CAEhB,CACA,MAAO,CAAC,CACZ,CAGQ,sBAAsB,CAC1B,KAAAE,EACA,OAAAC,CACJ,EAG2B,CACvB,GAAIA,EAAO,OAASD,EAAK,KACrB,YAAK,SAAS,KAAK,QAAQ,qBAAqB,CAAE,KAAAA,EAAM,OAAAC,CAAO,CAAC,EAAE,OAAO,EAClE,CAAC,EAGZ,OAAQD,EAAK,KAAM,CACf,IAAK,QACD,OAAOC,EAAO,OAAS,QAAU,KAAK,2BAA2B,CAAE,KAAAD,EAAM,OAAAC,CAAO,CAAC,EAAI,CAAC,EAC1F,IAAK,SACD,OAAOA,EAAO,OAAS,SAAW,KAAK,4BAA4B,CAAE,KAAAD,EAAM,OAAAC,CAAO,CAAC,EAAI,CAAC,EAC5F,IAAK,SACD,OAAOA,EAAO,OAAS,SAAW,KAAK,4BAA4B,CAAE,KAAAD,EAAM,OAAAC,CAAO,CAAC,EAAI,CAAC,EAC5F,IAAK,QACD,OAAOA,EAAO,OAAS,QAAU,KAAK,uBAAuB,CAAE,KAAAD,EAAM,OAAAC,CAAO,CAAC,EAAI,CAAC,EACtF,IAAK,WACD,YAAK,WAAW,6CAA6C,EACtD,CAAC,EACZ,QACIC,EAAYF,CAAI,CACxB,CACJ,CAEQ,SAASG,EAAuB,CACpC,KAAK,QAAQ,OAAO,IAAI,CAAE,SAAUC,EAAS,SAAU,QAAAD,CAAQ,CAAC,CACpE,CAEQ,WAAWA,EAAuB,CACtC,KAAK,QAAQ,OAAO,IAAI,CAAE,SAAUC,EAAS,QAAS,QAAAD,CAAQ,CAAC,CACnE,CAEQ,2BAA2B,CAC/B,KAAAH,EACA,OAAAC,CACJ,EAG2B,CACvB,MAAO,CACHR,EAAK,gBAAgB,CACjB,KAAMO,EAAK,SAAS,UAAU,SAC9B,MAAOP,EAAK,YAAY,OAAOQ,EAAO,QAAQ,CAClD,CAAC,EACDR,EAAK,gBAAgB,CACjB,KAAMO,EAAK,SAAS,UAAU,SAC9B,MAAOP,EAAK,YAAY,OAAOQ,EAAO,QAAQ,CAClD,CAAC,CACL,CACJ,CAEQ,4BAA4B,CAChC,KAAAD,EACA,OAAAC,CACJ,EAG2B,CACvB,MAAO,CACHR,EAAK,gBAAgB,CACjB,KAAMO,EAAK,MAAM,UAAU,SAC3B,MAAOP,EAAK,YAAY,OAAOQ,EAAO,KAAK,CAC/C,CAAC,CACL,CACJ,CAEQ,4BAA4B,CAChC,KAAAD,EACA,OAAAC,CACJ,EAG2B,CACvB,MAAO,CACHR,EAAK,gBAAgB,CACjB,KAAMO,EAAK,OAAO,KAAK,KAAK,UAAU,SACtC,MAAOP,EAAK,YAAY,OAAOQ,EAAO,KAAe,CACzD,CAAC,CACL,CACJ,CAEQ,uBAAuB,CAC3B,KAAAD,EACA,OAAAC,CACJ,EAG2B,CAEvB,MAAO,CACHR,EAAK,gBAAgB,CACjB,KAAMO,EAAK,SAAS,UAAU,SAC9B,MAAOP,EAAK,YAAY,OAAOQ,EAAO,QAAQ,CAClD,CAAC,EACDR,EAAK,gBAAgB,CACjB,KAAMO,EAAK,aAAa,UAAU,SAClC,MAAOP,EAAK,YAAY,OAAOQ,EAAO,YAAY,CACtD,CAAC,CACL,CACJ,CAGQ,wBAAwB,CAC5B,QAAAI,EACA,OAAAJ,CACJ,EAG2B,CACvB,IAAMK,EAA+B,CAAC,EACtC,QAAWC,KAAUF,EAAS,CAC1B,IAAMG,EAAQP,EAAOM,EAAO,KAAK,KAAK,YAAY,EAC9CC,GAAS,MAAQ,OAAOA,GAAU,UAClCF,EAAK,KACDb,EAAK,gBAAgB,CACjB,KAAMc,EAAO,KAAK,KAAK,UAAU,SACjC,MAAOd,EAAK,YAAY,OAAOe,CAAK,CACxC,CAAC,CACL,CAER,CACA,OAAOF,CACX,CAGQ,yBAAyB,CAC7B,SAAAlB,EACA,QAAAI,CACJ,EAG2B,CACvB,IAAMI,EAAsC,CAAC,EAGzCR,EAAS,MAAQ,OACbI,EAAQ,MAAQ,KAChBI,EAAY,KAAK,GAAG,KAAK,sBAAsB,CAAE,KAAMR,EAAS,KAAM,OAAQI,EAAQ,IAAK,CAAC,CAAC,EAE7F,KAAK,QAAQ,OAAO,IAAI,CACpB,SAAU,UACV,QAAS,aAAaJ,EAAS,KAAK,IAAI,8CAC5C,CAAC,GAKT,IAAMqB,EAAc,KAAK,wBAAwB,CAC7C,QAASjB,EAAQ,QACjB,YAAaA,EAAQ,WACzB,CAAC,EACD,OAAIiB,EAAY,OAAS,GACrBb,EAAY,KAAK,GAAGa,CAAW,EAInC,KAAK,QAAQ,OAAO,MAAM,SAAS,EAC/B,KAAK,QAAQ,GAAG,SAAW,MAAQjB,EAAQ,SAAW,MACtDI,EAAY,KACR,GAAG,KAAK,wBAAwB,CAAE,QAAS,KAAK,QAAQ,GAAG,QAAS,OAAQJ,EAAQ,OAAQ,CAAC,CACjG,EAEJ,KAAK,QAAQ,OAAO,QAAQ,EAErBI,CACX,CAEQ,WAAW,CACf,SAAAR,EACA,QAAAI,CACJ,EAG0B,CACtB,IAAMkB,EAA+C,CACjD,GAAIjB,EAAK,UAAUV,CAAe,EAClC,OAAQ,KAAK,UAAU,CAAE,SAAAK,CAAS,CAAC,EACnC,WAAY,CAAC,CACjB,EAEA,OAAQA,EAAS,QAAQ,KAAM,CAC3B,IAAK,UACDsB,EAAiB,iBAAmB,KAAK,+BAA+B,CACpE,QAAStB,EAAS,QAClB,QAAAI,CACJ,CAAC,EACD,MACJ,IAAK,OACDkB,EAAiB,WAAa,KAAK,4BAA4B,CAC3D,QAAStB,EAAS,QAClB,QAAAI,CACJ,CAAC,EACD,MACJ,QACIU,EAAYd,EAAS,OAAO,CACpC,CAEA,OAAOK,EAAK,aAAaiB,CAAgB,CAC7C,CAEQ,+BAA+B,CACnC,QAAArB,EACA,QAAAG,CACJ,EAG2B,CACvB,IAAMc,EAA+B,CAAC,EAyBtC,GAvBAA,EAAK,KACD,GAAG,KAAK,sBAAsB,CAC1B,KAAM,iBACN,gBAAiBjB,EAAQ,eACzB,OAAQG,EAAQ,cACpB,CAAC,CACL,EACAc,EAAK,KACD,GAAG,KAAK,sBAAsB,CAC1B,KAAM,kBACN,gBAAiBjB,EAAQ,gBACzB,OAAQG,EAAQ,eACpB,CAAC,CACL,EACAc,EAAK,KACD,GAAG,KAAK,sBAAsB,CAC1B,KAAM,UACN,gBAAiBjB,EAAQ,QACzB,OAAQG,EAAQ,OACpB,CAAC,CACL,EAGIH,EAAQ,MAAQ,KAChB,OAAQA,EAAQ,KAAK,KAAM,CACvB,IAAK,aACDiB,EAAK,KAAK,GAAG,KAAK,kCAAkC,CAAE,QAASjB,EAAQ,KAAM,QAAAG,CAAQ,CAAC,CAAC,EACvF,MACJ,IAAK,aACL,IAAK,aAED,MACJ,QACIU,EAAYb,EAAQ,IAAI,CAChC,CAGJ,OAAOiB,CACX,CAEQ,sBAAsB,CAC1B,KAAAK,EACA,gBAAAC,EACA,OAAAX,CACJ,EAI2B,CACvB,IAAMK,EAA+B,CAAC,EAEtC,GADA,KAAK,QAAQ,OAAO,MAAMK,CAAI,EAC1BC,GAAmB,KAAM,CACzB,IAAMC,EAAa,KAAK,QAAQ,qBAAqB,CACjD,WAAYD,EACZ,OAAQX,GAAA,KAAAA,EAAU,CAAC,EACnB,wBAAyB,EAC7B,CAAC,EACD,QAAWa,KAAaD,EACpBP,EAAK,KACDb,EAAK,gBAAgB,CACjB,KAAM,KAAK,QAAQ,gBAAgBqB,EAAU,KAAK,IAAI,EACtD,MAAO,KAAK,QAAQ,yBAAyB,QAAQA,CAAS,CAClE,CAAC,CACL,CAER,CACA,YAAK,QAAQ,OAAO,QAAQ,EACrBR,CACX,CAEQ,kCAAkC,CACtC,QAAAjB,EACA,QAAAG,CACJ,EAG2B,CAvb/B,IAAAF,EAwbQ,IAAMgB,EAA+B,CAAC,EAEhCS,EAAiB,KAAK,QAAQ,qBAAqB,CACrD,WAAY1B,EAAQ,MACpB,QAAQC,EAAA,KAAK,QAAQ,UAAUE,EAAQ,WAAW,IAA1C,KAAAF,EAA+C,CAAC,CAC5D,CAAC,EACD,QAAWwB,KAAaC,EACpBT,EAAK,KACDb,EAAK,gBAAgB,CACjB,KAAM,KAAK,QAAQ,gBAAgBqB,EAAU,KAAK,IAAI,EACtD,MAAO,KAAK,QAAQ,yBAAyB,QAAQA,CAAS,CAClE,CAAC,CACL,EAEJ,OAAOR,CACX,CAEQ,4BAA4B,CAChC,QAAAjB,EACA,QAAAG,CACJ,EAGmB,CA/cvB,IAAAF,EAgdQ,IAAMgB,EAAuB,CAAC,EAI9B,GADA,KAAK,QAAQ,OAAO,MAAM,gBAAgB,EACtCjB,EAAQ,gBAAkB,KAAM,CAChC,IAAMwB,EAAa,KAAK,QAAQ,qBAAqB,CACjD,WAAYxB,EAAQ,eACpB,QAAQC,EAAAE,EAAQ,iBAAR,KAAAF,EAA0B,CAAC,EACnC,wBAAyB,EAC7B,CAAC,EACD,QAAWwB,KAAaD,EACpBP,EAAK,KACDb,EAAK,mBAAmB,CACpB,MAAO,KAAK,QAAQ,yBAAyB,QAAQqB,CAAS,CAClE,CAAC,CACL,CAER,CAIA,GAHA,KAAK,QAAQ,OAAO,QAAQ,EAGxBzB,EAAQ,MAAQ,KAChB,OAAQA,EAAQ,KAAK,KAAM,CACvB,IAAK,QAED,KAAK,QAAQ,OAAO,IAAI,CACpB,SAAU,WACV,QAAS,0DACb,CAAC,EACD,MACJ,IAAK,gBACDiB,EAAK,KACDb,EAAK,mBAAmB,CACpB,MAAO,KAAK,QAAQ,yBAAyB,QAAQ,CACjD,cAAeJ,EAAQ,KAAK,MAC5B,MAAO,KAAK,QAAQ,UAAUG,EAAQ,WAAW,CACrD,CAAC,CACL,CAAC,CACL,EACA,MACJ,QACIU,EAAYb,EAAQ,IAAI,CAChC,CAGJ,OAAOiB,CACX,CAEQ,UAAU,CAAE,SAAAlB,CAAS,EAAkD,CAC3E,OAAIA,EAAS,YAAY,aAAa,SAAS,OAAS,EAC7C,GAAGA,EAAS,YAAY,aAAa,SACvC,IAAK4B,GAAQ,GAAG,KAAK,QAAQ,cAAcA,CAAG,CAAC,EAAE,EACjD,KAAK,GAAG,CAAC,IAAI,KAAK,QAAQ,cAAc5B,EAAS,YAAY,IAAI,CAAC,GAEpE,KAAK,QAAQ,cAAcA,EAAS,YAAY,IAAI,CAC/D,CACJ","names":["init_process","init_buffer","CLIENT_VAR_NAME","EndpointSnippetGenerator","context","formatter","__publicField","endpoint","request","_a","options","snippet","ruby_exports","writer","clientClassRef","builderArgs","baseUrl","environment","environmentTypeReference","auth","values","assertNever","message","Severity","headers","args","header","value","baseUrlArgs","invokeMethodArgs","kind","namedParameters","associated","parameter","bodyProperties","val"]}
|
|
1
|
+
{"version":3,"sources":["../../src/EndpointSnippetGenerator.ts"],"sourcesContent":["import { AbstractFormatter, Options, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { ruby } from \"@fern-api/ruby-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\n\nconst CLIENT_VAR_NAME = \"client\";\n\nexport class EndpointSnippetGenerator {\n private context: DynamicSnippetsGeneratorContext;\n private formatter: AbstractFormatter | undefined;\n\n constructor({ context, formatter }: { context: DynamicSnippetsGeneratorContext; formatter?: AbstractFormatter }) {\n this.context = context;\n this.formatter = formatter;\n }\n\n public async generateSnippet({\n endpoint,\n request\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n }): Promise<string> {\n const code = this.buildCodeBlock({ endpoint, snippet: request });\n return await code.toStringAsync({\n customConfig: this.context.customConfig ?? {},\n formatter: this.formatter\n });\n }\n\n public generateSnippetSync({\n endpoint,\n request\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n }): string {\n const code = this.buildCodeBlock({ endpoint, snippet: request });\n return code.toString({\n customConfig: this.context.customConfig ?? {},\n formatter: this.formatter\n });\n }\n\n public async generateSnippetAst({\n endpoint,\n request,\n options\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n options?: Options;\n }): Promise<ruby.AstNode> {\n return this.buildCodeBlock({ endpoint, snippet: request });\n }\n\n private buildCodeBlock({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.AstNode {\n // In Ruby, concise and full styles are the same\n return ruby.codeblock((writer) => {\n writer.writeNodeStatement(this.constructClient({ endpoint, snippet }));\n writer.newLine();\n writer.writeNodeStatement(this.callMethod({ endpoint, snippet }));\n });\n }\n\n private constructClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.AstNode {\n return ruby.codeblock((writer) => {\n writer.addRequire(this.context.getRootModuleName().toLowerCase());\n\n const clientClassRef = this.context.getRootClientClassReference();\n const builderArgs = this.getRootClientBuilderArgs({ endpoint, snippet });\n\n writer.write(`${CLIENT_VAR_NAME} = `);\n writer.writeNode(\n ruby.instantiateClass({\n classReference: clientClassRef,\n arguments_: builderArgs\n })\n );\n });\n }\n\n // Helper for base URL/environment argument\n private getRootClientBaseUrlArg({\n baseUrl,\n environment\n }: {\n baseUrl: string | undefined;\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n }): ruby.KeywordArgument[] {\n if (baseUrl != null && environment != null) {\n this.context.errors.add({\n severity: \"CRITICAL\",\n message: \"Cannot specify both baseUrl and environment options\"\n });\n return [];\n }\n if (baseUrl != null) {\n return [\n ruby.keywordArgument({\n name: \"base_url\",\n value: ruby.TypeLiteral.string(baseUrl)\n })\n ];\n }\n if (environment != null) {\n if (this.context.isSingleEnvironmentID(environment)) {\n const environmentTypeReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n if (environmentTypeReference == null) {\n this.context.errors.add({\n severity: \"CRITICAL\",\n message: `Environment ID ${environment} not found`\n });\n return [];\n }\n\n return [\n ruby.keywordArgument({\n name: \"environment\",\n value: environmentTypeReference\n })\n ];\n }\n if (this.context.isMultiEnvironmentValues(environment)) {\n this.context.errors.add({\n severity: \"CRITICAL\",\n message: \"Multi-environment values are not supported in Ruby snippets yet\"\n });\n return [];\n }\n }\n return [];\n }\n\n // Helper for auth arguments\n private getRootClientAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.Auth;\n values: FernIr.dynamic.AuthValues;\n }): ruby.KeywordArgument[] {\n if (values.type !== auth.type) {\n this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n return [];\n }\n\n switch (auth.type) {\n case \"basic\":\n return values.type === \"basic\" ? this.getRootClientBasicAuthArgs({ auth, values }) : [];\n case \"bearer\":\n return values.type === \"bearer\" ? this.getRootClientBearerAuthArgs({ auth, values }) : [];\n case \"header\":\n return values.type === \"header\" ? this.getRootClientHeaderAuthArgs({ auth, values }) : [];\n case \"oauth\":\n return values.type === \"oauth\" ? this.getRootClientOAuthArgs({ auth, values }) : [];\n case \"inferred\":\n this.addWarning(\"Ruby SDK does not support inferred auth yet\");\n return [];\n default:\n assertNever(auth);\n }\n }\n\n private addError(message: string): void {\n this.context.errors.add({ severity: Severity.Critical, message });\n }\n\n private addWarning(message: string): void {\n this.context.errors.add({ severity: Severity.Warning, message });\n }\n\n private getRootClientBasicAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BasicAuth;\n values: FernIr.dynamic.BasicAuthValues;\n }): ruby.KeywordArgument[] {\n return [\n ruby.keywordArgument({\n name: auth.username.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.username)\n }),\n ruby.keywordArgument({\n name: auth.password.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.password)\n })\n ];\n }\n\n private getRootClientBearerAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BearerAuth;\n values: FernIr.dynamic.BearerAuthValues;\n }): ruby.KeywordArgument[] {\n return [\n ruby.keywordArgument({\n name: auth.token.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.token)\n })\n ];\n }\n\n private getRootClientHeaderAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.HeaderAuth;\n values: FernIr.dynamic.HeaderAuthValues;\n }): ruby.KeywordArgument[] {\n return [\n ruby.keywordArgument({\n name: auth.header.name.name.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.value as string)\n })\n ];\n }\n\n private getRootClientOAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.OAuth;\n values: FernIr.dynamic.OAuthValues;\n }): ruby.KeywordArgument[] {\n // OAuth client credentials\n return [\n ruby.keywordArgument({\n name: auth.clientId.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.clientId)\n }),\n ruby.keywordArgument({\n name: auth.clientSecret.snakeCase.safeName,\n value: ruby.TypeLiteral.string(values.clientSecret)\n })\n ];\n }\n\n // Helper for headers\n private getRootClientHeaderArgs({\n headers,\n values\n }: {\n headers: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): ruby.KeywordArgument[] {\n const args: ruby.KeywordArgument[] = [];\n for (const header of headers) {\n const value = values[header.name.name.originalName];\n if (value != null && typeof value === \"string\") {\n args.push(\n ruby.keywordArgument({\n name: header.name.name.snakeCase.safeName,\n value: ruby.TypeLiteral.string(value)\n })\n );\n }\n }\n return args;\n }\n\n // Main builder\n private getRootClientBuilderArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.KeywordArgument[] {\n const builderArgs: ruby.KeywordArgument[] = [];\n\n // Auth\n if (endpoint.auth != null) {\n if (snippet.auth != null) {\n builderArgs.push(...this.getRootClientAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n } else {\n this.context.errors.add({\n severity: \"WARNING\",\n message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n });\n }\n }\n\n // Base URL / Environment\n const baseUrlArgs = this.getRootClientBaseUrlArg({\n baseUrl: snippet.baseURL,\n environment: snippet.environment\n });\n if (baseUrlArgs.length > 0) {\n builderArgs.push(...baseUrlArgs);\n }\n\n // Headers\n this.context.errors.scope(\"Headers\");\n if (this.context.ir.headers != null && snippet.headers != null) {\n builderArgs.push(\n ...this.getRootClientHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n );\n }\n this.context.errors.unscope();\n\n return builderArgs;\n }\n\n private callMethod({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.MethodInvocation {\n const invokeMethodArgs: ruby.MethodInvocation.Args = {\n on: ruby.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: []\n };\n\n switch (endpoint.request.type) {\n case \"inlined\":\n invokeMethodArgs.keywordArguments = this.getMethodArgsForInlinedRequest({\n request: endpoint.request,\n snippet\n });\n break;\n case \"body\":\n invokeMethodArgs.arguments_ = this.getMethodArgsForBodyRequest({\n request: endpoint.request,\n snippet\n });\n break;\n default:\n assertNever(endpoint.request);\n }\n\n return ruby.invokeMethod(invokeMethodArgs);\n }\n\n private getMethodArgsForInlinedRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.KeywordArgument[] {\n const args: ruby.KeywordArgument[] = [];\n\n args.push(\n ...this.getNamedParameterArgs({\n kind: \"PathParameters\",\n namedParameters: request.pathParameters,\n values: snippet.pathParameters\n })\n );\n args.push(\n ...this.getNamedParameterArgs({\n kind: \"QueryParameters\",\n namedParameters: request.queryParameters,\n values: snippet.queryParameters\n })\n );\n args.push(\n ...this.getNamedParameterArgs({\n kind: \"Headers\",\n namedParameters: request.headers,\n values: snippet.headers\n })\n );\n\n // Handle request.body if present\n if (request.body != null) {\n switch (request.body.type) {\n case \"properties\":\n args.push(...this.getMethodArgsForPropertiesRequest({ request: request.body, snippet }));\n break;\n case \"referenced\":\n case \"fileUpload\":\n // Not implemented for Ruby snippets yet\n break;\n default:\n assertNever(request.body);\n }\n }\n\n return args;\n }\n\n private getNamedParameterArgs({\n kind,\n namedParameters,\n values\n }: {\n kind: \"PathParameters\" | \"QueryParameters\" | \"Headers\";\n namedParameters: FernIr.dynamic.NamedParameter[] | undefined;\n values: Record<string, unknown> | undefined;\n }): ruby.KeywordArgument[] {\n const args: ruby.KeywordArgument[] = [];\n this.context.errors.scope(kind);\n if (namedParameters != null) {\n const associated = this.context.associateByWireValue({\n parameters: namedParameters,\n values: values ?? {},\n ignoreMissingParameters: true\n });\n for (const parameter of associated) {\n const value = this.context.dynamicTypeLiteralMapper.convert(parameter);\n // Skip nop values (undefined/null) to avoid generating empty arguments like \"channel: ,\"\n if (ruby.TypeLiteral.isNop(value)) {\n continue;\n }\n args.push(\n ruby.keywordArgument({\n name: this.context.getPropertyName(parameter.name.name),\n value\n })\n );\n }\n }\n this.context.errors.unscope();\n return args;\n }\n\n private getMethodArgsForPropertiesRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequestBody.Properties;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.KeywordArgument[] {\n const args: ruby.KeywordArgument[] = [];\n\n const bodyProperties = this.context.associateByWireValue({\n parameters: request.value,\n values: this.context.getRecord(snippet.requestBody) ?? {}\n });\n for (const parameter of bodyProperties) {\n const value = this.context.dynamicTypeLiteralMapper.convert(parameter);\n // Skip nop values (undefined/null) to avoid generating empty arguments like \"channel: ,\"\n if (ruby.TypeLiteral.isNop(value)) {\n continue;\n }\n args.push(\n ruby.keywordArgument({\n name: this.context.getPropertyName(parameter.name.name),\n value\n })\n );\n }\n return args;\n }\n\n private getMethodArgsForBodyRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.BodyRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): ruby.AstNode[] {\n const args: ruby.AstNode[] = [];\n\n // Add path parameters as positional arguments\n this.context.errors.scope(\"PathParameters\");\n if (request.pathParameters != null) {\n const associated = this.context.associateByWireValue({\n parameters: request.pathParameters,\n values: snippet.pathParameters ?? {},\n ignoreMissingParameters: true\n });\n for (const parameter of associated) {\n args.push(\n ruby.positionalArgument({\n value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n })\n );\n }\n }\n this.context.errors.unscope();\n\n // Add body as a positional argument\n if (request.body != null) {\n switch (request.body.type) {\n case \"bytes\":\n // Not supported in Ruby snippets yet\n this.context.errors.add({\n severity: \"CRITICAL\",\n message: \"Bytes request body is not supported in Ruby snippets yet\"\n });\n break;\n case \"typeReference\":\n args.push(\n ruby.positionalArgument({\n value: this.context.dynamicTypeLiteralMapper.convert({\n typeReference: request.body.value,\n value: this.context.getRecord(snippet.requestBody)\n })\n })\n );\n break;\n default:\n assertNever(request.body);\n }\n }\n\n return args;\n }\n\n private getMethod({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n return `${endpoint.declaration.fernFilepath.allParts\n .map((val) => `${this.context.getMethodName(val)}`)\n .join(\".\")}.${this.context.getMethodName(endpoint.declaration.name)}`;\n }\n return this.context.getMethodName(endpoint.declaration.name);\n }\n}\n"],"mappings":"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","names":["init_process","init_buffer","CLIENT_VAR_NAME","EndpointSnippetGenerator","context","formatter","__publicField","endpoint","request","_a","options","snippet","ruby_exports","writer","clientClassRef","builderArgs","baseUrl","environment","environmentTypeReference","auth","values","assertNever","message","Severity","headers","args","header","value","baseUrlArgs","invokeMethodArgs","kind","namedParameters","associated","parameter","bodyProperties","val"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as o}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as o}from"./chunk-AGVSP2TB.js";import{a as i}from"./chunk-24Z62MLO.js";import{a as t,b as r,c as n,e as p}from"./chunk-SFFHNMMU.js";r();n();var a=class extends p{constructor({ir:e,config:s,formatter:c}){super(new i({ir:e,config:s}));t(this,"formatter");this.formatter=c}async generate(e){return super.generate(e)}generateSync(e){return super.generateSync(e)}async generateSnippetAst(e){return super.generateSnippetAst(e)}createSnippetGenerator(e){return new o({context:e,formatter:this.formatter})}};export{a};
|
|
2
|
+
//# sourceMappingURL=chunk-CUHUKCRC.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as l,b as u,c as y,d as s,f as o,h as r}from"./chunk-SFFHNMMU.js";u();y();var v=class{constructor({context:e}){l(this,"context");this.context=e}convert(e){if(e.value===null)return this.context.isNullable(e.typeReference)?r.TypeLiteral.nil():(this.context.errors.add({severity:o.Critical,message:"Expected non-null value, but got null"}),r.TypeLiteral.nop());if(e.value===void 0)return r.TypeLiteral.nop();switch(e.typeReference.type){case"list":return this.convertList({list:e.typeReference.value,value:e.value});case"literal":return this.convertLiteral({literalType:e.typeReference.value,value:e.value});case"map":return this.convertMap({map:e.typeReference,value:e.value});case"named":{let t=this.context.resolveNamedType({typeId:e.typeReference.value});return t==null?r.TypeLiteral.nop():this.convertNamed({named:t,value:e.value,as:e.as})}case"optional":return this.convert({typeReference:e.typeReference.value,value:e.value,as:e.as});case"nullable":return this.convert({typeReference:e.typeReference.value,value:e.value,as:e.as});case"primitive":return this.convertPrimitive({primitive:e.typeReference.value,value:e.value,as:e.as});case"set":return this.convertSet({set:e.typeReference.value,value:e.value});case"unknown":return r.TypeLiteral.nop();default:s(e.typeReference)}}convertLiteral({literalType:e,value:t}){switch(e.type){case"boolean":{let i=this.context.getValueAsBoolean({value:t});return i==null?r.TypeLiteral.nop():r.TypeLiteral.boolean(i)}case"string":{let i=this.context.getValueAsString({value:t});return i==null?r.TypeLiteral.nop():r.TypeLiteral.string(i)}default:s(e)}}convertList({list:e,value:t}){return Array.isArray(t)?r.TypeLiteral.list(t.map((i,n)=>{this.context.errors.scope({index:n});try{return this.convert({typeReference:e,value:i})}finally{this.context.errors.unscope()}})):(this.context.errors.add({severity:o.Critical,message:`Expected array but got: ${typeof t}`}),r.TypeLiteral.nop())}convertSet({set:e,value:t}){return Array.isArray(t)?r.TypeLiteral.set(t.map((i,n)=>{this.context.errors.scope({index:n});try{return this.convert({typeReference:e,value:i})}finally{this.context.errors.unscope()}})):(this.context.errors.add({severity:o.Critical,message:`Expected array but got: ${typeof t}`}),r.TypeLiteral.nop())}convertMap({map:e,value:t}){return typeof t!="object"||t==null?(this.context.errors.add({severity:o.Critical,message:`Expected object but got: ${t==null?"null":typeof t}`}),r.TypeLiteral.nop()):r.TypeLiteral.hash(Object.entries(t).map(([i,n])=>{this.context.errors.scope(i);try{return{key:this.convert({typeReference:e.key,value:i,as:"key"}),value:this.convert({typeReference:e.value,value:n})}}finally{this.context.errors.unscope()}}))}convertNamed({named:e,value:t,as:i}){switch(e.type){case"alias":return this.convert({typeReference:e.typeReference,value:t,as:i});case"discriminatedUnion":return r.TypeLiteral.nop();case"object":return this.convertObject({object:e,value:t});case"enum":return r.TypeLiteral.nop();case"undiscriminatedUnion":return r.TypeLiteral.nop();default:s(e)}}convertPrimitive({primitive:e,value:t,as:i}){switch(e){case"INTEGER":case"LONG":case"UINT":case"UINT_64":{let n=this.getValueAsNumber({value:t,as:i});return n==null?r.TypeLiteral.nop():r.TypeLiteral.integer(n)}case"FLOAT":case"DOUBLE":{let n=this.getValueAsNumber({value:t});return n==null?r.TypeLiteral.nop():r.TypeLiteral.float(n)}case"BOOLEAN":{let n=this.getValueAsBoolean({value:t,as:i});return n==null?r.TypeLiteral.nop():r.TypeLiteral.boolean(n)}case"BASE_64":case"BIG_INTEGER":case"STRING":{let n=this.context.getValueAsString({value:t});return n==null?r.TypeLiteral.nop():r.TypeLiteral.string(n)}case"UUID":{let n=this.context.getValueAsString({value:t});return n==null?r.TypeLiteral.nop():r.TypeLiteral.string(n)}case"DATE":{let n=this.context.getValueAsString({value:t});return n==null?r.TypeLiteral.nop():r.TypeLiteral.string(n)}case"DATE_TIME":{let n=this.context.getValueAsString({value:t});return n==null?r.TypeLiteral.nop():r.TypeLiteral.string(n)}default:s(e)}}convertObject({object:e,value:t}){return typeof t!="object"||t==null?(this.context.errors.add({severity:o.Critical,message:`Expected object but got: ${t==null?"null":typeof t}`}),r.TypeLiteral.nop()):r.TypeLiteral.hash(Object.entries(t).map(([i,n])=>{var c,p;this.context.errors.scope(i);let a=e.properties.find(T=>T.name.wireValue===i),f=(c=a==null?void 0:a.typeReference)!=null?c:{type:"unknown"},m=(p=a==null?void 0:a.name.name.snakeCase.safeName)!=null?p:i,d={key:r.TypeLiteral.string(m),value:this.convert({typeReference:f,value:n})};return this.context.errors.unscope(),d}))}getValueAsNumber({value:e,as:t}){let i=t==="key"&&typeof e=="string"?Number(e):e;return this.context.getValueAsNumber({value:i})}getValueAsBoolean({value:e,as:t}){let i=t==="key"?typeof e=="string"?e==="true":!!e:e;return this.context.getValueAsBoolean({value:i})}};export{v as a};
|
|
2
|
+
//# sourceMappingURL=chunk-CWYMFRFT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/context/DynamicToLiteralMapper.ts"],"sourcesContent":["import { Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { ruby } from \"@fern-api/ruby-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n interface Args {\n typeReference: FernIr.dynamic.TypeReference;\n value: unknown;\n as?: ConvertedAs;\n }\n\n // Identifies what the type is being converted as, which sometimes influences how\n // the type is instantiated.\n type ConvertedAs = \"key\";\n}\n\nexport class DynamicTypeLiteralMapper {\n private context: DynamicSnippetsGeneratorContext;\n\n constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n this.context = context;\n }\n\n public convert(args: DynamicTypeLiteralMapper.Args): ruby.AstNode {\n // eslint-disable-next-line eqeqeq\n if (args.value === null) {\n if (this.context.isNullable(args.typeReference)) {\n return ruby.TypeLiteral.nil();\n }\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"Expected non-null value, but got null\"\n });\n return ruby.TypeLiteral.nop();\n }\n if (args.value === undefined) {\n return ruby.TypeLiteral.nop();\n }\n switch (args.typeReference.type) {\n case \"list\":\n return this.convertList({ list: args.typeReference.value, value: args.value });\n case \"literal\":\n return this.convertLiteral({ literalType: args.typeReference.value, value: args.value });\n case \"map\":\n return this.convertMap({ map: args.typeReference, value: args.value });\n case \"named\": {\n const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n if (named == null) {\n return ruby.TypeLiteral.nop();\n }\n return this.convertNamed({ named, value: args.value, as: args.as });\n }\n case \"optional\":\n return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n case \"nullable\":\n return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n case \"primitive\":\n return this.convertPrimitive({ primitive: args.typeReference.value, value: args.value, as: args.as });\n case \"set\":\n return this.convertSet({ set: args.typeReference.value, value: args.value });\n case \"unknown\":\n return ruby.TypeLiteral.nop();\n default:\n assertNever(args.typeReference);\n }\n }\n\n private convertLiteral({\n literalType,\n value\n }: {\n literalType: FernIr.dynamic.LiteralType;\n value: unknown;\n }): ruby.AstNode {\n switch (literalType.type) {\n case \"boolean\": {\n const bool = this.context.getValueAsBoolean({ value });\n if (bool == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.boolean(bool);\n }\n case \"string\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.string(str);\n }\n default:\n assertNever(literalType);\n }\n }\n\n private convertList({ list, value }: { list: FernIr.dynamic.TypeReference; value: unknown }): ruby.AstNode {\n if (!Array.isArray(value)) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected array but got: ${typeof value}`\n });\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.list(\n value.map((v, index) => {\n this.context.errors.scope({ index });\n try {\n return this.convert({ typeReference: list, value: v });\n } finally {\n this.context.errors.unscope();\n }\n })\n );\n }\n\n private convertSet({ set, value }: { set: FernIr.dynamic.TypeReference; value: unknown }): ruby.AstNode {\n if (!Array.isArray(value)) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected array but got: ${typeof value}`\n });\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.set(\n value.map((v, index) => {\n this.context.errors.scope({ index });\n try {\n return this.convert({ typeReference: set, value: v });\n } finally {\n this.context.errors.unscope();\n }\n })\n );\n }\n\n private convertMap({ map, value }: { map: FernIr.dynamic.MapType; value: unknown }): ruby.AstNode {\n if (typeof value !== \"object\" || value == null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n });\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.hash(\n Object.entries(value).map(([key, value]) => {\n this.context.errors.scope(key);\n try {\n return {\n key: this.convert({ typeReference: map.key, value: key, as: \"key\" }),\n value: this.convert({ typeReference: map.value, value })\n };\n } finally {\n this.context.errors.unscope();\n }\n })\n );\n }\n\n private convertNamed({\n named,\n value,\n as\n }: {\n named: FernIr.dynamic.NamedType;\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): ruby.AstNode {\n switch (named.type) {\n case \"alias\": {\n return this.convert({ typeReference: named.typeReference, value, as });\n }\n case \"discriminatedUnion\":\n // Not implemented\n return ruby.TypeLiteral.nop();\n case \"object\":\n // Not implemented\n return this.convertObject({ object: named, value });\n case \"enum\":\n // Not implemented\n return ruby.TypeLiteral.nop();\n case \"undiscriminatedUnion\":\n // Not implemented\n return ruby.TypeLiteral.nop();\n default:\n assertNever(named);\n }\n }\n\n private convertPrimitive({\n primitive,\n value,\n as\n }: {\n primitive: FernIr.dynamic.PrimitiveTypeV1;\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): ruby.AstNode {\n switch (primitive) {\n case \"INTEGER\":\n case \"LONG\":\n case \"UINT\":\n case \"UINT_64\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.integer(num);\n }\n case \"FLOAT\":\n case \"DOUBLE\": {\n const num = this.getValueAsNumber({ value });\n if (num == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.float(num);\n }\n case \"BOOLEAN\": {\n const bool = this.getValueAsBoolean({ value, as });\n if (bool == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.boolean(bool);\n }\n case \"BASE_64\":\n case \"BIG_INTEGER\":\n case \"STRING\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.string(str);\n }\n case \"UUID\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.string(str);\n }\n case \"DATE\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.string(str);\n }\n case \"DATE_TIME\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.string(str);\n }\n default:\n assertNever(primitive);\n }\n }\n\n private convertObject({ object, value }: { object: FernIr.dynamic.ObjectType; value: unknown }): ruby.AstNode {\n if (typeof value !== \"object\" || value == null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n });\n return ruby.TypeLiteral.nop();\n }\n\n return ruby.TypeLiteral.hash(\n Object.entries(value as Record<string, unknown>).map(([key, val]) => {\n this.context.errors.scope(key);\n const property = object.properties.find((p) => p.name.wireValue === key);\n const typeReference = property?.typeReference ?? { type: \"unknown\" };\n const astNode = {\n key: ruby.TypeLiteral.string(key),\n value: this.convert({ typeReference, value: val })\n };\n this.context.errors.unscope();\n return astNode;\n })\n );\n }\n\n private getValueAsNumber({\n value,\n as\n }: {\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): number | undefined {\n const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n return this.context.getValueAsNumber({ value: num });\n }\n\n private getValueAsBoolean({\n value,\n as\n }: {\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): boolean | undefined {\n const bool = as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : Boolean(value)) : value;\n return this.context.getValueAsBoolean({ value: bool });\n }\n}\n"],"mappings":"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","names":["init_process","init_buffer","DynamicTypeLiteralMapper","context","__publicField","args","ruby_exports","Severity","named","assertNever","literalType","value","bool","str","list","v","index","set","map","key","as","primitive","num","object","val","_a","property","p","typeReference","astNode"]}
|
|
1
|
+
{"version":3,"sources":["../../src/context/DynamicToLiteralMapper.ts"],"sourcesContent":["import { Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { ruby } from \"@fern-api/ruby-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n interface Args {\n typeReference: FernIr.dynamic.TypeReference;\n value: unknown;\n as?: ConvertedAs;\n }\n\n // Identifies what the type is being converted as, which sometimes influences how\n // the type is instantiated.\n type ConvertedAs = \"key\";\n}\n\nexport class DynamicTypeLiteralMapper {\n private context: DynamicSnippetsGeneratorContext;\n\n constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n this.context = context;\n }\n\n public convert(args: DynamicTypeLiteralMapper.Args): ruby.AstNode {\n // eslint-disable-next-line eqeqeq\n if (args.value === null) {\n if (this.context.isNullable(args.typeReference)) {\n return ruby.TypeLiteral.nil();\n }\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"Expected non-null value, but got null\"\n });\n return ruby.TypeLiteral.nop();\n }\n if (args.value === undefined) {\n return ruby.TypeLiteral.nop();\n }\n switch (args.typeReference.type) {\n case \"list\":\n return this.convertList({ list: args.typeReference.value, value: args.value });\n case \"literal\":\n return this.convertLiteral({ literalType: args.typeReference.value, value: args.value });\n case \"map\":\n return this.convertMap({ map: args.typeReference, value: args.value });\n case \"named\": {\n const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n if (named == null) {\n return ruby.TypeLiteral.nop();\n }\n return this.convertNamed({ named, value: args.value, as: args.as });\n }\n case \"optional\":\n return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n case \"nullable\":\n return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n case \"primitive\":\n return this.convertPrimitive({ primitive: args.typeReference.value, value: args.value, as: args.as });\n case \"set\":\n return this.convertSet({ set: args.typeReference.value, value: args.value });\n case \"unknown\":\n return ruby.TypeLiteral.nop();\n default:\n assertNever(args.typeReference);\n }\n }\n\n private convertLiteral({\n literalType,\n value\n }: {\n literalType: FernIr.dynamic.LiteralType;\n value: unknown;\n }): ruby.AstNode {\n switch (literalType.type) {\n case \"boolean\": {\n const bool = this.context.getValueAsBoolean({ value });\n if (bool == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.boolean(bool);\n }\n case \"string\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.string(str);\n }\n default:\n assertNever(literalType);\n }\n }\n\n private convertList({ list, value }: { list: FernIr.dynamic.TypeReference; value: unknown }): ruby.AstNode {\n if (!Array.isArray(value)) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected array but got: ${typeof value}`\n });\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.list(\n value.map((v, index) => {\n this.context.errors.scope({ index });\n try {\n return this.convert({ typeReference: list, value: v });\n } finally {\n this.context.errors.unscope();\n }\n })\n );\n }\n\n private convertSet({ set, value }: { set: FernIr.dynamic.TypeReference; value: unknown }): ruby.AstNode {\n if (!Array.isArray(value)) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected array but got: ${typeof value}`\n });\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.set(\n value.map((v, index) => {\n this.context.errors.scope({ index });\n try {\n return this.convert({ typeReference: set, value: v });\n } finally {\n this.context.errors.unscope();\n }\n })\n );\n }\n\n private convertMap({ map, value }: { map: FernIr.dynamic.MapType; value: unknown }): ruby.AstNode {\n if (typeof value !== \"object\" || value == null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n });\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.hash(\n Object.entries(value).map(([key, value]) => {\n this.context.errors.scope(key);\n try {\n return {\n key: this.convert({ typeReference: map.key, value: key, as: \"key\" }),\n value: this.convert({ typeReference: map.value, value })\n };\n } finally {\n this.context.errors.unscope();\n }\n })\n );\n }\n\n private convertNamed({\n named,\n value,\n as\n }: {\n named: FernIr.dynamic.NamedType;\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): ruby.AstNode {\n switch (named.type) {\n case \"alias\": {\n return this.convert({ typeReference: named.typeReference, value, as });\n }\n case \"discriminatedUnion\":\n // Not implemented\n return ruby.TypeLiteral.nop();\n case \"object\":\n // Not implemented\n return this.convertObject({ object: named, value });\n case \"enum\":\n // Not implemented\n return ruby.TypeLiteral.nop();\n case \"undiscriminatedUnion\":\n // Not implemented\n return ruby.TypeLiteral.nop();\n default:\n assertNever(named);\n }\n }\n\n private convertPrimitive({\n primitive,\n value,\n as\n }: {\n primitive: FernIr.dynamic.PrimitiveTypeV1;\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): ruby.AstNode {\n switch (primitive) {\n case \"INTEGER\":\n case \"LONG\":\n case \"UINT\":\n case \"UINT_64\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.integer(num);\n }\n case \"FLOAT\":\n case \"DOUBLE\": {\n const num = this.getValueAsNumber({ value });\n if (num == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.float(num);\n }\n case \"BOOLEAN\": {\n const bool = this.getValueAsBoolean({ value, as });\n if (bool == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.boolean(bool);\n }\n case \"BASE_64\":\n case \"BIG_INTEGER\":\n case \"STRING\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.string(str);\n }\n case \"UUID\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.string(str);\n }\n case \"DATE\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.string(str);\n }\n case \"DATE_TIME\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return ruby.TypeLiteral.nop();\n }\n return ruby.TypeLiteral.string(str);\n }\n default:\n assertNever(primitive);\n }\n }\n\n private convertObject({ object, value }: { object: FernIr.dynamic.ObjectType; value: unknown }): ruby.AstNode {\n if (typeof value !== \"object\" || value == null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n });\n return ruby.TypeLiteral.nop();\n }\n\n return ruby.TypeLiteral.hash(\n Object.entries(value as Record<string, unknown>).map(([key, val]) => {\n this.context.errors.scope(key);\n const property = object.properties.find((p) => p.name.wireValue === key);\n const typeReference = property?.typeReference ?? { type: \"unknown\" };\n // Use snake_case property name for Ruby, falling back to wire value if not found\n const propertyName = property?.name.name.snakeCase.safeName ?? key;\n const astNode = {\n key: ruby.TypeLiteral.string(propertyName),\n value: this.convert({ typeReference, value: val })\n };\n this.context.errors.unscope();\n return astNode;\n })\n );\n }\n\n private getValueAsNumber({\n value,\n as\n }: {\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): number | undefined {\n const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n return this.context.getValueAsNumber({ value: num });\n }\n\n private getValueAsBoolean({\n value,\n as\n }: {\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): boolean | undefined {\n const bool = as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : Boolean(value)) : value;\n return this.context.getValueAsBoolean({ value: bool });\n }\n}\n"],"mappings":"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","names":["init_process","init_buffer","DynamicTypeLiteralMapper","context","__publicField","args","ruby_exports","Severity","named","assertNever","literalType","value","bool","str","list","v","index","set","map","key","as","primitive","num","object","val","_a","_b","property","p","typeReference","propertyName","astNode"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-24Z62MLO.js";import"../chunk-CWYMFRFT.js";import"../chunk-SFFHNMMU.js";export{a as DynamicSnippetsGeneratorContext};
|
|
2
2
|
//# sourceMappingURL=DynamicSnippetsGeneratorContext.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-CWYMFRFT.js";import"../chunk-SFFHNMMU.js";export{a as DynamicTypeLiteralMapper};
|
|
2
2
|
//# sourceMappingURL=DynamicToLiteralMapper.js.map
|
package/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as n}from"./chunk-
|
|
1
|
+
import{a as n}from"./chunk-CUHUKCRC.js";import"./chunk-AGVSP2TB.js";import"./chunk-24Z62MLO.js";import"./chunk-CWYMFRFT.js";import{b as e,c as r}from"./chunk-SFFHNMMU.js";e();r();export{n as DynamicSnippetsGenerator};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|