@fern-api/go-dynamic-snippets 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/cjs/DynamicSnippetsGenerator.cjs +7 -7
  2. package/cjs/DynamicSnippetsGenerator.cjs.map +1 -1
  3. package/cjs/DynamicSnippetsGenerator.d.cts +3 -2
  4. package/cjs/{DynamicSnippetsGeneratorContext-BusKoNq4.d.cts → DynamicSnippetsGeneratorContext-D8VcLYKk.d.cts} +1 -0
  5. package/cjs/EndpointSnippetGenerator.cjs +4 -4
  6. package/cjs/EndpointSnippetGenerator.cjs.map +1 -1
  7. package/cjs/EndpointSnippetGenerator.d.cts +7 -2
  8. package/cjs/context/DynamicSnippetsGeneratorContext.cjs +8 -8
  9. package/cjs/context/DynamicSnippetsGeneratorContext.cjs.map +1 -1
  10. package/cjs/context/DynamicSnippetsGeneratorContext.d.cts +1 -1
  11. package/cjs/context/DynamicTypeInstantiationMapper.cjs +8 -8
  12. package/cjs/context/DynamicTypeInstantiationMapper.cjs.map +1 -1
  13. package/cjs/context/DynamicTypeInstantiationMapper.d.cts +1 -1
  14. package/cjs/context/DynamicTypeMapper.cjs +4 -4
  15. package/cjs/context/DynamicTypeMapper.cjs.map +1 -1
  16. package/cjs/context/DynamicTypeMapper.d.cts +1 -1
  17. package/cjs/context/FilePropertyMapper.cjs +6 -6
  18. package/cjs/context/FilePropertyMapper.cjs.map +1 -1
  19. package/cjs/context/FilePropertyMapper.d.cts +1 -1
  20. package/cjs/index.cjs +7 -7
  21. package/cjs/index.cjs.map +1 -1
  22. package/cjs/index.d.cts +1 -1
  23. package/esm/DynamicSnippetsGenerator.d.ts +3 -2
  24. package/esm/DynamicSnippetsGenerator.js +1 -1
  25. package/esm/{DynamicSnippetsGeneratorContext-BusKoNq4.d.ts → DynamicSnippetsGeneratorContext-D8VcLYKk.d.ts} +1 -0
  26. package/esm/EndpointSnippetGenerator.d.ts +7 -2
  27. package/esm/EndpointSnippetGenerator.js +1 -1
  28. package/esm/chunk-3Z2URLHB.js +2 -0
  29. package/esm/chunk-3Z2URLHB.js.map +1 -0
  30. package/esm/{chunk-UZEM7EUP.js → chunk-B2A7QNZM.js} +2 -2
  31. package/esm/chunk-DVDVP26D.js +2 -0
  32. package/esm/chunk-DVDVP26D.js.map +1 -0
  33. package/esm/{chunk-GUJUKQKZ.js → chunk-JHIUGKJ4.js} +8 -8
  34. package/esm/chunk-JHIUGKJ4.js.map +1 -0
  35. package/esm/chunk-MYN2HZVH.js +2 -0
  36. package/esm/chunk-MYN2HZVH.js.map +1 -0
  37. package/esm/{chunk-2YRGTA73.js → chunk-SVPRIX53.js} +2 -2
  38. package/esm/chunk-TXVHHFW3.js +2 -0
  39. package/esm/chunk-TXVHHFW3.js.map +1 -0
  40. package/esm/{chunk-Q6YO7G6Y.js → chunk-ZNTXZ3YV.js} +2 -2
  41. package/esm/context/DynamicSnippetsGeneratorContext.d.ts +1 -1
  42. package/esm/context/DynamicSnippetsGeneratorContext.js +1 -1
  43. package/esm/context/DynamicTypeInstantiationMapper.d.ts +1 -1
  44. package/esm/context/DynamicTypeInstantiationMapper.js +1 -1
  45. package/esm/context/DynamicTypeMapper.d.ts +1 -1
  46. package/esm/context/DynamicTypeMapper.js +1 -1
  47. package/esm/context/FilePropertyMapper.d.ts +1 -1
  48. package/esm/context/FilePropertyMapper.js +1 -1
  49. package/esm/index.d.ts +1 -1
  50. package/esm/index.js +1 -1
  51. package/package.json +1 -1
  52. package/esm/chunk-BI26DLZ5.js +0 -2
  53. package/esm/chunk-BI26DLZ5.js.map +0 -1
  54. package/esm/chunk-D6NMQKNQ.js +0 -2
  55. package/esm/chunk-D6NMQKNQ.js.map +0 -1
  56. package/esm/chunk-FD44EP2P.js +0 -2
  57. package/esm/chunk-FD44EP2P.js.map +0 -1
  58. package/esm/chunk-GUJUKQKZ.js.map +0 -1
  59. package/esm/chunk-VCNL2JWU.js +0 -2
  60. package/esm/chunk-VCNL2JWU.js.map +0 -1
  61. /package/esm/{chunk-UZEM7EUP.js.map → chunk-B2A7QNZM.js.map} +0 -0
  62. /package/esm/{chunk-2YRGTA73.js.map → chunk-SVPRIX53.js.map} +0 -0
  63. /package/esm/{chunk-Q6YO7G6Y.js.map → chunk-ZNTXZ3YV.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-TXVHHFW3.js";import{a as o}from"./chunk-B2A7QNZM.js";import{a as i}from"./chunk-3Z2URLHB.js";import{e as r,f as n,g as p}from"./chunk-JHIUGKJ4.js";n();p();var s=class extends i{constructor({ir:e,config:t,formatter:c}){super(new o({ir:e,config:t}));r(this,"formatter");this.formatter=c}async generate(e,t){return super.generate(e,t)}generateSync(e,t){return super.generateSync(e,t)}async generateSnippetAst(e){return super.generateSnippetAst(e)}createSnippetGenerator(e){return new a({context:e,formatter:this.formatter})}};export{s as a};
2
+ //# sourceMappingURL=chunk-MYN2HZVH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/DynamicSnippetsGenerator.ts"],"sourcesContent":["import {\n AbstractAstNode,\n AbstractDynamicSnippetsGenerator,\n AbstractFormatter,\n FernGeneratorExec,\n Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n DynamicSnippetsGeneratorContext,\n EndpointSnippetGenerator\n> {\n private formatter: AbstractFormatter | undefined;\n\n constructor({\n ir,\n config,\n formatter\n }: {\n ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n config: FernGeneratorExec.GeneratorConfig;\n formatter?: AbstractFormatter;\n }) {\n super(new DynamicSnippetsGeneratorContext({ ir, config }));\n this.formatter = formatter;\n }\n\n public async generate(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options?: Options\n ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n return super.generate(request, options);\n }\n\n public generateSync(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options?: Options\n ): FernIr.dynamic.EndpointSnippetResponse {\n return super.generateSync(request, options);\n }\n\n public async generateSnippetAst(request: FernIr.dynamic.EndpointSnippetRequest): Promise<AbstractAstNode> {\n return super.generateSnippetAst(request);\n }\n\n protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n return new EndpointSnippetGenerator({ context, formatter: this.formatter });\n }\n}\n"],"mappings":"yKAAAA,IAAAC,IAWO,IAAMC,EAAN,cAAuCC,CAG5C,CAGE,YAAY,CACR,GAAAC,EACA,OAAAC,EACA,UAAAC,CACJ,EAIG,CACC,MAAM,IAAIC,EAAgC,CAAE,GAAAH,EAAI,OAAAC,CAAO,CAAC,CAAC,EAX7DG,EAAA,KAAQ,aAYJ,KAAK,UAAYF,CACrB,CAEA,MAAa,SACTG,EACAC,EAC+C,CAC/C,OAAO,MAAM,SAASD,EAASC,CAAO,CAC1C,CAEO,aACHD,EACAC,EACsC,CACtC,OAAO,MAAM,aAAaD,EAASC,CAAO,CAC9C,CAEA,MAAa,mBAAmBD,EAA0E,CACtG,OAAO,MAAM,mBAAmBA,CAAO,CAC3C,CAEU,uBAAuBE,EAAoE,CACjG,OAAO,IAAIC,EAAyB,CAAE,QAAAD,EAAS,UAAW,KAAK,SAAU,CAAC,CAC9E,CACJ","names":["init_process","init_buffer","DynamicSnippetsGenerator","AbstractDynamicSnippetsGenerator","ir","config","formatter","DynamicSnippetsGeneratorContext","__publicField","request","options","context","EndpointSnippetGenerator"]}
@@ -1,2 +1,2 @@
1
- import{e as p,f as s,g as y,h as l,j as o}from"./chunk-GUJUKQKZ.js";s();y();var c=class{constructor({context:t}){p(this,"context");this.context=t}getFilePropertyInfo({body:t,value:n}){var a;let e={fileFields:[],bodyPropertyFields:[]},i=(a=this.context.getRecord(n))!=null?a:{};for(let r of t.properties)switch(r.type){case"file":e.fileFields.push({name:this.context.getTypeName(r.name),value:this.getSingleFileProperty({property:r,record:i})});break;case"fileArray":e.fileFields.push({name:this.context.getTypeName(r.name),value:this.getArrayFileProperty({property:r,record:i})});break;case"bodyProperty":e.bodyPropertyFields.push({name:this.context.getTypeName(r.name.name),value:this.getBodyProperty({property:r,record:i})});break;default:l(r)}return e}getSingleFileProperty({property:t,record:n}){let e=this.context.getSingleFileValue({property:t,record:n})||"";return o.TypeInstantiation.reference(this.context.getNewStringsReaderFunctionInvocation(e))}getArrayFileProperty({property:t,record:n}){let e=this.context.getFileArrayValues({property:t,record:n});return e==null?o.TypeInstantiation.nop():o.TypeInstantiation.slice({valueType:o.Type.reference(this.context.getIoReaderTypeReference()),values:e.map(i=>o.TypeInstantiation.reference(this.context.getNewStringsReaderFunctionInvocation(i)))})}getBodyProperty({property:t,record:n}){let e=n[t.name.wireValue];return e==null?o.TypeInstantiation.nop():this.context.dynamicTypeInstantiationMapper.convert({typeReference:t.typeReference,value:e})}};export{c as a};
2
- //# sourceMappingURL=chunk-2YRGTA73.js.map
1
+ import{e as p,f as s,g as y,h as l,j as o}from"./chunk-JHIUGKJ4.js";s();y();var c=class{constructor({context:t}){p(this,"context");this.context=t}getFilePropertyInfo({body:t,value:n}){var a;let e={fileFields:[],bodyPropertyFields:[]},i=(a=this.context.getRecord(n))!=null?a:{};for(let r of t.properties)switch(r.type){case"file":e.fileFields.push({name:this.context.getTypeName(r.name),value:this.getSingleFileProperty({property:r,record:i})});break;case"fileArray":e.fileFields.push({name:this.context.getTypeName(r.name),value:this.getArrayFileProperty({property:r,record:i})});break;case"bodyProperty":e.bodyPropertyFields.push({name:this.context.getTypeName(r.name.name),value:this.getBodyProperty({property:r,record:i})});break;default:l(r)}return e}getSingleFileProperty({property:t,record:n}){let e=this.context.getSingleFileValue({property:t,record:n})||"";return o.TypeInstantiation.reference(this.context.getNewStringsReaderFunctionInvocation(e))}getArrayFileProperty({property:t,record:n}){let e=this.context.getFileArrayValues({property:t,record:n});return e==null?o.TypeInstantiation.nop():o.TypeInstantiation.slice({valueType:o.Type.reference(this.context.getIoReaderTypeReference()),values:e.map(i=>o.TypeInstantiation.reference(this.context.getNewStringsReaderFunctionInvocation(i)))})}getBodyProperty({property:t,record:n}){let e=n[t.name.wireValue];return e==null?o.TypeInstantiation.nop():this.context.dynamicTypeInstantiationMapper.convert({typeReference:t.typeReference,value:e})}};export{c as a};
2
+ //# sourceMappingURL=chunk-SVPRIX53.js.map
@@ -0,0 +1,2 @@
1
+ import{b as p,d}from"./chunk-3Z2URLHB.js";import{e as v,f as R,g as N,h as m,j as r}from"./chunk-JHIUGKJ4.js";R();N();var b="example",P="fern",T="do",I="client",l=r.TypeInstantiation,w="WireMockBaseURL",C="WireMockClient",x=class{constructor({context:e,formatter:t}){v(this,"context");v(this,"formatter");this.context=e,this.formatter=t}async generateSnippet({endpoint:e,request:t,options:n}){var s,a,c;return((a=(s=n==null?void 0:n.config)==null?void 0:s.outputWiremockTests)!=null?a:!1)?this.generateWiremockTest({endpoint:e,snippet:t}):await this.buildCodeBlock({endpoint:e,snippet:t}).toStringAsync({packageName:b,importPath:P,rootImportPath:this.context.rootImportPath,customConfig:(c=this.context.customConfig)!=null?c:{},formatter:this.formatter})}generateSnippetSync({endpoint:e,request:t,options:n}){var s,a,c;return((a=(s=n==null?void 0:n.config)==null?void 0:s.outputWiremockTests)!=null?a:!1)?this.generateWiremockTest({endpoint:e,snippet:t}):this.buildCodeBlock({endpoint:e,snippet:t}).toString({packageName:b,importPath:P,rootImportPath:this.context.rootImportPath,customConfig:(c=this.context.customConfig)!=null?c:{},formatter:this.formatter})}async generateSnippetAst({endpoint:e,request:t,options:n}){throw new Error("Unsupported")}generateWiremockTest({endpoint:e,snippet:t}){var o;return this.buildWiremockTestCodeBlock({endpoint:e,snippet:t}).toString({packageName:"wiremock",importPath:P,rootImportPath:this.context.rootImportPath,customConfig:(o=this.context.customConfig)!=null?o:{},formatter:this.formatter})}buildCodeBlock({endpoint:e,snippet:t}){return r.codeblock(n=>{n.writeNode(r.func({name:T,parameters:[],return_:[],body:r.codeblock(o=>{o.writeNode(this.constructClient({endpoint:e,snippet:t})),o.writeLine(),o.writeNode(this.callMethod({endpoint:e,snippet:t}))})})),n.writeNewLineIfLastLineNot()})}buildWiremockTestCodeBlock({endpoint:e,snippet:t}){return r.codeblock(n=>{n.writeNode(r.func({name:"Test"+this.context.getTestMethodName(e)+"WithWireMock",parameters:[r.parameter({name:"t",type:r.Type.pointer(r.Type.reference(this.context.getTestingTypeReference()))})],return_:[],body:r.codeblock(o=>{for(let i of this.buildWiremockTestSetup({endpoint:e}))o.writeNode(i),o.writeLine();o.writeLine(),o.writeNode(this.constructWiremockTestClient({endpoint:e,snippet:t})),o.writeLine(),o.writeNode(this.callClientMethodAndAssert({endpoint:e,snippet:t}))})})),n.writeNewLineIfLastLineNot()})}constructClient({endpoint:e,snippet:t}){return r.codeblock(n=>{n.write(`${I} := `),n.writeNode(this.getRootClientFuncInvocation(this.getConstructorArgs({endpoint:e,snippet:t})))})}constructWiremockTestClient({endpoint:e,snippet:t}){return r.codeblock(n=>{n.write(`${I} := `),n.writeNode(this.getRootClientFuncInvocation(this.getWiremockTestConstructorArgs()))})}writeMethodInvocation({writer:e,endpoint:t,snippet:n}){let{otherArgs:o,requestArg:i}=this.getMethodArgs({endpoint:t,snippet:n});if(i!=null)if(i instanceof r.TypeInstantiation&&r.TypeInstantiation.isNop(i))e.writeNode(r.invokeMethod({on:r.codeblock(I),method:this.getMethod({endpoint:t}),arguments_:[this.context.getContextTodoFunctionInvocation(),...o,r.codeblock("nil")]}));else{e.write("request := "),e.writeNode(i),e.writeLine();let s=r.codeblock("request");e.writeNode(r.invokeMethod({on:r.codeblock(I),method:this.getMethod({endpoint:t}),arguments_:[this.context.getContextTodoFunctionInvocation(),...o,s]}))}else e.writeNode(r.invokeMethod({on:r.codeblock(I),method:this.getMethod({endpoint:t}),arguments_:[this.context.getContextTodoFunctionInvocation(),...o]}))}callMethod({endpoint:e,snippet:t}){return r.codeblock(n=>{this.writeMethodInvocation({writer:n,endpoint:e,snippet:t})})}getConstructorArgs({endpoint:e,snippet:t}){let n=[],o=this.getConstructorBaseUrlArg({baseUrl:t.baseURL,environment:t.environment});return o!=null&&n.push(o),e.auth!=null&&(t.auth!=null?n.push(this.getConstructorAuthArg({auth:e.auth,values:t.auth})):this.context.errors.add({severity:p.Warning,message:`Auth with ${e.auth.type} configuration is required for this endpoint`})),this.context.errors.scope(d.Headers),this.context.ir.headers!=null&&t.headers!=null&&n.push(...this.getConstructorHeaderArgs({headers:this.context.ir.headers,values:t.headers})),this.context.errors.unscope(),n}getWiremockTestConstructorArgs(){return[r.codeblock(e=>{e.writeNode(r.invokeFunc({func:r.typeReference({name:"WithBaseURL",importPath:this.context.getOptionImportPath()}),arguments_:[r.codeblock(w)]}))})]}getConstructorAuthArg({auth:e,values:t}){if(t.type!==e.type)return this.addError(this.context.newAuthMismatchError({auth:e,values:t}).message),l.nop();switch(e.type){case"basic":return t.type==="basic"?this.getConstructorBasicAuthArg({auth:e,values:t}):l.nop();case"bearer":return t.type==="bearer"?this.getConstructorBearerAuthArg({auth:e,values:t}):l.nop();case"header":return t.type==="header"?this.getConstructorHeaderAuthArg({auth:e,values:t}):l.nop();case"oauth":return this.addWarning("The Go SDK doesn't support OAuth client credentials yet"),l.nop();case"inferred":return this.addWarning("The Go SDK Generator does not support Inferred auth scheme yet"),l.nop();default:m(e)}}addError(e){this.context.errors.add({severity:p.Critical,message:e})}addWarning(e){this.context.errors.add({severity:p.Warning,message:e})}getConstructorBasicAuthArg({auth:e,values:t}){return r.codeblock(n=>{n.writeNode(r.invokeFunc({func:r.typeReference({name:"WithBasicAuth",importPath:this.context.getOptionImportPath()}),arguments_:[r.TypeInstantiation.string(t.username),r.TypeInstantiation.string(t.password)]}))})}getConstructorBaseUrlArg({baseUrl:e,environment:t}){let n=this.getBaseUrlArg({baseUrl:e,environment:t});if(n!=null)return r.codeblock(o=>{o.writeNode(r.invokeFunc({func:r.typeReference({name:"WithBaseURL",importPath:this.context.getOptionImportPath()}),arguments_:[n]}))})}getBaseUrlArg({baseUrl:e,environment:t}){if(e!=null&&t!=null){this.context.errors.add({severity:p.Critical,message:"Cannot specify both baseUrl and environment options"});return}if(e!=null)return r.TypeInstantiation.string(e);if(t!=null){if(this.context.isSingleEnvironmentID(t)){let n=this.context.getEnvironmentTypeReferenceFromID(t);if(n==null){this.context.errors.add({severity:p.Warning,message:`Environment ${JSON.stringify(t)} was not found`});return}return r.TypeInstantiation.reference(n)}this.context.isMultiEnvironmentValues(t)&&this.context.errors.add({severity:p.Warning,message:"The Go SDK doesn't support a multi-environment client option yet; use the baseUrl option instead"})}}getConstructorBearerAuthArg({auth:e,values:t}){return r.codeblock(n=>{n.writeNode(r.invokeFunc({func:r.typeReference({name:`With${e.token.pascalCase.unsafeName}`,importPath:this.context.getOptionImportPath()}),arguments_:[r.TypeInstantiation.string(t.token)]}))})}getConstructorHeaderAuthArg({auth:e,values:t}){return r.codeblock(n=>{n.writeNode(r.invokeFunc({func:r.typeReference({name:`With${e.header.name.name.pascalCase.unsafeName}`,importPath:this.context.getOptionImportPath()}),arguments_:[this.context.dynamicTypeInstantiationMapper.convert({typeReference:e.header.typeReference,value:t.value})]}))})}getConstructorHeaderArgs({headers:e,values:t}){let n=[];for(let o of e){let i=this.getConstructorHeaderArg({header:o,value:t.value});i!=null&&n.push(i)}return n}getConstructorHeaderArg({header:e,value:t}){let n=this.context.dynamicTypeInstantiationMapper.convert({typeReference:e.typeReference,value:t});if(!r.TypeInstantiation.isNop(n))return r.codeblock(o=>{o.writeNode(r.invokeFunc({func:r.typeReference({name:`With${e.name.name.pascalCase.unsafeName}`,importPath:this.context.getOptionImportPath()}),arguments_:[n]}))})}getMethodArgs({endpoint:e,snippet:t}){switch(e.request.type){case"inlined":return this.getMethodArgsForInlinedRequest({request:e.request,snippet:t});case"body":return this.getMethodArgsForBodyRequest({request:e.request,snippet:t});default:m(e.request)}}getMethodArgsForBodyRequest({request:e,snippet:t}){var s,a;let n=[];this.context.errors.scope(d.PathParameters);let o=[...(s=this.context.ir.pathParameters)!=null?s:[],...(a=e.pathParameters)!=null?a:[]];o.length>0&&n.push(...this.getPathParameters({namedParameters:o,snippet:t}).map(c=>c.value)),this.context.errors.unscope(),this.context.errors.scope(d.RequestBody);let i=e.body!=null?this.getBodyRequestArg({body:e.body,value:t.requestBody}):void 0;return this.context.errors.unscope(),{otherArgs:n,requestArg:i}}getBodyRequestArg({body:e,value:t}){switch(e.type){case"bytes":return this.getBytesBodyRequestArg({value:t});case"typeReference":return this.context.dynamicTypeInstantiationMapper.convert({typeReference:e.value,value:t});default:m(e)}}getBytesBodyRequestArg({value:e}){return typeof e!="string"?(this.context.errors.add({severity:p.Critical,message:`Expected bytes value to be a string, got ${typeof e}`}),r.TypeInstantiation.nop()):r.TypeInstantiation.bytes(e)}getMethodArgsForInlinedRequest({request:e,snippet:t}){var h,g,y,f,u,k;let n=[],{inlinePathParameters:o,inlineFileProperties:i}={inlinePathParameters:(g=(h=this.context.customConfig)==null?void 0:h.inlinePathParameters)!=null?g:!0,inlineFileProperties:(f=(y=this.context.customConfig)==null?void 0:y.inlineFileProperties)!=null?f:!0};this.context.errors.scope(d.PathParameters);let s=[],a=[...(u=this.context.ir.pathParameters)!=null?u:[],...(k=e.pathParameters)!=null?k:[]];a.length>0&&s.push(...this.getPathParameters({namedParameters:a,snippet:t})),this.context.errors.unscope(),this.context.errors.scope(d.RequestBody);let c=this.getFilePropertyInfo({request:e,snippet:t});this.context.errors.unscope(),this.context.includePathParametersInWrappedRequest({request:e,inlinePathParameters:o})||n.push(...s.map(A=>A.value)),i||n.push(...c.fileFields.map(A=>A.value));let F=this.context.needsRequestParameter({request:e,inlinePathParameters:o,inlineFileProperties:i})?this.getInlinedRequestArg({request:e,snippet:t,pathParameterFields:this.context.includePathParametersInWrappedRequest({request:e,inlinePathParameters:o})?s:[],filePropertyInfo:c}):void 0;return{otherArgs:n,requestArg:F}}getFilePropertyInfo({request:e,snippet:t}){return e.body==null||!this.context.isFileUploadRequestBody(e.body)?{fileFields:[],bodyPropertyFields:[]}:this.context.filePropertyMapper.getFilePropertyInfo({body:e.body,value:t.requestBody})}getInlinedRequestArg({request:e,snippet:t,pathParameterFields:n,filePropertyInfo:o}){var h,g,y,f;this.context.errors.scope(d.QueryParameters);let s=this.context.associateQueryParametersByWireValue({parameters:(h=e.queryParameters)!=null?h:[],values:(g=t.queryParameters)!=null?g:{}}).map(u=>({name:u.name.name.pascalCase.unsafeName,value:this.context.dynamicTypeInstantiationMapper.convert(u)}));this.context.errors.unscope(),this.context.errors.scope(d.Headers);let c=this.context.associateByWireValue({parameters:(y=e.headers)!=null?y:[],values:(f=t.headers)!=null?f:{}}).map(u=>({name:u.name.name.pascalCase.unsafeName,value:this.context.dynamicTypeInstantiationMapper.convert(u)}));this.context.errors.unscope(),this.context.errors.scope(d.RequestBody);let F=e.body!=null?this.getInlinedRequestBodyStructFields({body:e.body,value:t.requestBody,filePropertyInfo:o}):[];return this.context.errors.unscope(),r.TypeInstantiation.structPointer({typeReference:r.typeReference({name:this.context.getMethodName(e.declaration.name),importPath:this.context.getImportPathForRequest(e.declaration.fernFilepath)}),fields:[...n,...s,...c,...F]})}getInlinedRequestBodyStructFields({body:e,value:t,filePropertyInfo:n}){switch(e.type){case"properties":return this.getInlinedRequestBodyPropertyStructFields({parameters:e.value,value:t});case"referenced":return[this.getReferencedRequestBodyPropertyStructField({body:e,value:t})];case"fileUpload":return this.getFileUploadRequestBodyStructFields({filePropertyInfo:n});default:m(e)}}getFileUploadRequestBodyStructFields({filePropertyInfo:e}){var t;return(t=this.context.customConfig)!=null&&t.inlineFileProperties?[...e.fileFields,...e.bodyPropertyFields]:e.bodyPropertyFields}getReferencedRequestBodyPropertyStructField({body:e,value:t}){return{name:this.context.getTypeName(e.bodyKey),value:this.getReferencedRequestBodyPropertyTypeInstantiation({body:e.bodyType,value:t})}}getReferencedRequestBodyPropertyTypeInstantiation({body:e,value:t}){switch(e.type){case"bytes":return this.getBytesBodyRequestArg({value:t});case"typeReference":return this.context.dynamicTypeInstantiationMapper.convert({typeReference:e.value,value:t});default:m(e)}}getInlinedRequestBodyPropertyStructFields({parameters:e,value:t}){var i;let n=[],o=this.context.associateByWireValue({parameters:e,values:(i=this.context.getRecord(t))!=null?i:{}});for(let s of o)n.push({name:this.context.getTypeName(s.name.name),value:this.context.dynamicTypeInstantiationMapper.convert(s)});return n}getPathParameters({namedParameters:e,snippet:t}){var i;let n=[],o=this.context.associateByWireValue({parameters:e,values:(i=t.pathParameters)!=null?i:{}});for(let s of o)n.push({name:this.context.getTypeName(s.name.name),value:this.context.dynamicTypeInstantiationMapper.convertToPointerIfPossible(s)});return n}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)}getRootClientFuncInvocation(e){return r.invokeFunc({func:r.typeReference({name:this.context.getClientConstructorName(),importPath:this.context.getClientImportPath()}),arguments_:e})}buildWiremockTestSetup({endpoint:e,errorCase:t}){let n="stub";return[]}callClientMethodAndAssert({endpoint:e,snippet:t}){return r.codeblock(n=>{this.writeMethodInvocation({writer:n,endpoint:e,snippet:t}),n.writeLine(),n.writeLine(),n.write("ok, countErr := "),n.writeNode(r.invokeMethod({on:r.codeblock(C),method:"Verify",arguments_:[r.invokeMethod({on:r.codeblock("stub"),method:"Request",arguments_:[],multiline:!1}),r.codeblock("1")],multiline:!1})),n.writeLine(),n.writeNode(r.invokeFunc({func:r.typeReference({name:"NoError",importPath:"github.com/stretchr/testify/require"}),arguments_:[r.codeblock("t"),r.codeblock("countErr"),r.TypeInstantiation.string("Failed to verify WireMock request was matched")],multiline:!1})),n.writeLine(),n.writeNode(r.invokeFunc({func:r.typeReference({name:"True",importPath:"github.com/stretchr/testify/require"}),arguments_:[r.codeblock("t"),r.codeblock("ok"),r.TypeInstantiation.string("WireMock request was not matched")],multiline:!1})),n.writeLine()})}};export{x as a};
2
+ //# sourceMappingURL=chunk-TXVHHFW3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/EndpointSnippetGenerator.ts"],"sourcesContent":["import { AbstractFormatter, Options, Scope, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { go } from \"@fern-api/go-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper\";\n\nconst SNIPPET_PACKAGE_NAME = \"example\";\nconst SNIPPET_IMPORT_PATH = \"fern\";\nconst SNIPPET_FUNC_NAME = \"do\";\nconst CLIENT_VAR_NAME = \"client\";\nconst TypeInst = go.TypeInstantiation;\nconst WIREMOCK_BASE_URL = \"WireMockBaseURL\";\nconst WIREMOCK_CLIENT_VAR_NAME = \"WireMockClient\";\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 options\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n options?: Options;\n }): Promise<string> {\n const outputWiremockTests =\n (options?.config as { outputWiremockTests?: boolean })?.outputWiremockTests ?? false;\n if (outputWiremockTests) {\n return this.generateWiremockTest({ endpoint, snippet: request });\n }\n const code = this.buildCodeBlock({ endpoint, snippet: request });\n return await code.toStringAsync({\n packageName: SNIPPET_PACKAGE_NAME,\n importPath: SNIPPET_IMPORT_PATH,\n rootImportPath: this.context.rootImportPath,\n customConfig: this.context.customConfig ?? {},\n formatter: this.formatter\n });\n }\n\n public generateSnippetSync({\n endpoint,\n request,\n options\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n options?: Options;\n }): string {\n const outputWiremockTests =\n (options?.config as { outputWiremockTests?: boolean })?.outputWiremockTests ?? false;\n if (outputWiremockTests) {\n return this.generateWiremockTest({ endpoint, snippet: request });\n }\n const code = this.buildCodeBlock({ endpoint, snippet: request });\n return code.toString({\n packageName: SNIPPET_PACKAGE_NAME,\n importPath: SNIPPET_IMPORT_PATH,\n rootImportPath: this.context.rootImportPath,\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<go.AstNode> {\n throw new Error(\"Unsupported\");\n }\n\n private generateWiremockTest({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): string {\n const code = this.buildWiremockTestCodeBlock({ endpoint, snippet });\n return code.toString({\n packageName: \"wiremock\",\n importPath: SNIPPET_IMPORT_PATH,\n rootImportPath: this.context.rootImportPath,\n customConfig: this.context.customConfig ?? {},\n formatter: this.formatter\n });\n }\n\n private buildCodeBlock({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.AstNode {\n return go.codeblock((writer) => {\n writer.writeNode(\n go.func({\n name: SNIPPET_FUNC_NAME,\n parameters: [],\n return_: [],\n body: go.codeblock((writer) => {\n writer.writeNode(this.constructClient({ endpoint, snippet }));\n writer.writeLine();\n writer.writeNode(this.callMethod({ endpoint, snippet }));\n })\n })\n );\n writer.writeNewLineIfLastLineNot();\n });\n }\n\n private buildWiremockTestCodeBlock({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.AstNode {\n return go.codeblock((writer) => {\n writer.writeNode(\n go.func({\n name: \"Test\" + this.context.getTestMethodName(endpoint) + \"WithWireMock\",\n parameters: [\n go.parameter({\n name: \"t\",\n type: go.Type.pointer(go.Type.reference(this.context.getTestingTypeReference()))\n })\n ],\n return_: [],\n body: go.codeblock((writer) => {\n for (const node of this.buildWiremockTestSetup({ endpoint })) {\n writer.writeNode(node);\n writer.writeLine();\n }\n writer.writeLine();\n writer.writeNode(this.constructWiremockTestClient({ endpoint, snippet }));\n writer.writeLine();\n writer.writeNode(this.callClientMethodAndAssert({ endpoint, snippet }));\n })\n })\n );\n // Not including error case for now until I can figure out why its not matching the wiremock stub\n // writer.writeLine();\n // writer.writeNode(\n // go.func({\n // name: \"Test\" + this.context.getMethodName(endpoint.declaration.name) + \"Error\" + \"WithWireMock\",\n // parameters: [\n // go.parameter({\n // name: \"t\",\n // type: go.Type.pointer(go.Type.reference(this.context.getTestingTypeReference()))\n // })\n // ],\n // return_: [],\n // body: go.codeblock((writer) => {\n // for (const node of this.buildWiremockTestSetup({ endpoint, errorCase: true })) {\n // writer.writeNode(node);\n // writer.writeLine();\n // }\n // writer.writeLine();\n // writer.writeNode(this.constructWiremockTestClient({ endpoint, snippet }));\n // writer.writeLine();\n // writer.writeNode(this.callClientMethodAndAssert({ endpoint, snippet }));\n // })\n // })\n // );\n writer.writeNewLineIfLastLineNot();\n });\n }\n\n private constructClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.CodeBlock {\n return go.codeblock((writer) => {\n writer.write(`${CLIENT_VAR_NAME} := `);\n writer.writeNode(this.getRootClientFuncInvocation(this.getConstructorArgs({ endpoint, snippet })));\n });\n }\n\n private constructWiremockTestClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.CodeBlock {\n return go.codeblock((writer) => {\n writer.write(`${CLIENT_VAR_NAME} := `);\n writer.writeNode(this.getRootClientFuncInvocation(this.getWiremockTestConstructorArgs()));\n });\n }\n\n private writeMethodInvocation({\n writer,\n endpoint,\n snippet\n }: {\n writer: go.Writer;\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): void {\n const { otherArgs, requestArg } = this.getMethodArgs({ endpoint, snippet });\n\n if (requestArg != null) {\n if (requestArg instanceof go.TypeInstantiation && go.TypeInstantiation.isNop(requestArg)) {\n writer.writeNode(\n go.invokeMethod({\n on: go.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: [this.context.getContextTodoFunctionInvocation(), ...otherArgs, go.codeblock(\"nil\")]\n })\n );\n } else {\n writer.write(\"request := \");\n writer.writeNode(requestArg);\n writer.writeLine();\n\n const requestRef = go.codeblock(\"request\");\n writer.writeNode(\n go.invokeMethod({\n on: go.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: [this.context.getContextTodoFunctionInvocation(), ...otherArgs, requestRef]\n })\n );\n }\n } else {\n writer.writeNode(\n go.invokeMethod({\n on: go.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: [this.context.getContextTodoFunctionInvocation(), ...otherArgs]\n })\n );\n }\n }\n\n private callMethod({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.CodeBlock {\n return go.codeblock((writer) => {\n this.writeMethodInvocation({ writer, endpoint, snippet });\n });\n }\n\n private getConstructorArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.AstNode[] {\n const args: go.AstNode[] = [];\n const baseUrlArg = this.getConstructorBaseUrlArg({\n baseUrl: snippet.baseURL,\n environment: snippet.environment\n });\n if (baseUrlArg != null) {\n args.push(baseUrlArg);\n }\n if (endpoint.auth != null) {\n if (snippet.auth != null) {\n args.push(this.getConstructorAuthArg({ auth: endpoint.auth, values: snippet.auth }));\n } else {\n this.context.errors.add({\n severity: Severity.Warning,\n message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n });\n }\n }\n this.context.errors.scope(Scope.Headers);\n if (this.context.ir.headers != null && snippet.headers != null) {\n args.push(...this.getConstructorHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers }));\n }\n this.context.errors.unscope();\n return args;\n }\n\n private getWiremockTestConstructorArgs(): go.AstNode[] {\n return [\n go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"WithBaseURL\",\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [go.codeblock(WIREMOCK_BASE_URL)]\n })\n );\n })\n ];\n }\n\n private getConstructorAuthArg({\n auth,\n values\n }: {\n auth: FernIr.dynamic.Auth;\n values: FernIr.dynamic.AuthValues;\n }): go.AstNode {\n if (values.type !== auth.type) {\n this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n return TypeInst.nop();\n }\n switch (auth.type) {\n case \"basic\":\n return values.type === \"basic\" ? this.getConstructorBasicAuthArg({ auth, values }) : TypeInst.nop();\n case \"bearer\":\n return values.type === \"bearer\" ? this.getConstructorBearerAuthArg({ auth, values }) : TypeInst.nop();\n case \"header\":\n return values.type === \"header\" ? this.getConstructorHeaderAuthArg({ auth, values }) : TypeInst.nop();\n case \"oauth\":\n this.addWarning(\"The Go SDK doesn't support OAuth client credentials yet\");\n return TypeInst.nop();\n case \"inferred\":\n this.addWarning(\"The Go SDK Generator does not support Inferred auth scheme yet\");\n return TypeInst.nop();\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 getConstructorBasicAuthArg({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BasicAuth;\n values: FernIr.dynamic.BasicAuthValues;\n }): go.AstNode {\n return go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"WithBasicAuth\",\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [\n go.TypeInstantiation.string(values.username),\n go.TypeInstantiation.string(values.password)\n ]\n })\n );\n });\n }\n\n private getConstructorBaseUrlArg({\n baseUrl,\n environment\n }: {\n baseUrl: string | undefined;\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n }): go.AstNode | undefined {\n const baseUrlArg = this.getBaseUrlArg({ baseUrl, environment });\n if (baseUrlArg == null) {\n return undefined;\n }\n return go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"WithBaseURL\",\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [baseUrlArg]\n })\n );\n });\n }\n\n private getBaseUrlArg({\n baseUrl,\n environment\n }: {\n baseUrl: string | undefined;\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n }): go.AstNode | undefined {\n if (baseUrl != null && environment != null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"Cannot specify both baseUrl and environment options\"\n });\n return undefined;\n }\n if (baseUrl != null) {\n return go.TypeInstantiation.string(baseUrl);\n }\n if (environment != null) {\n if (this.context.isSingleEnvironmentID(environment)) {\n const typeReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n if (typeReference == null) {\n this.context.errors.add({\n severity: Severity.Warning,\n message: `Environment ${JSON.stringify(environment)} was not found`\n });\n return undefined;\n }\n return go.TypeInstantiation.reference(typeReference);\n }\n if (this.context.isMultiEnvironmentValues(environment)) {\n this.context.errors.add({\n severity: Severity.Warning,\n message:\n \"The Go SDK doesn't support a multi-environment client option yet; use the baseUrl option instead\"\n });\n }\n }\n return undefined;\n }\n\n private getConstructorBearerAuthArg({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BearerAuth;\n values: FernIr.dynamic.BearerAuthValues;\n }): go.AstNode {\n return go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: `With${auth.token.pascalCase.unsafeName}`,\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [go.TypeInstantiation.string(values.token)]\n })\n );\n });\n }\n\n private getConstructorHeaderAuthArg({\n auth,\n values\n }: {\n auth: FernIr.dynamic.HeaderAuth;\n values: FernIr.dynamic.HeaderAuthValues;\n }): go.AstNode {\n return go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: `With${auth.header.name.name.pascalCase.unsafeName}`,\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [\n this.context.dynamicTypeInstantiationMapper.convert({\n typeReference: auth.header.typeReference,\n value: values.value\n })\n ]\n })\n );\n });\n }\n\n private getConstructorHeaderArgs({\n headers,\n values\n }: {\n headers: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): go.AstNode[] {\n const args: go.AstNode[] = [];\n for (const header of headers) {\n const arg = this.getConstructorHeaderArg({ header, value: values.value });\n if (arg != null) {\n args.push(arg);\n }\n }\n return args;\n }\n\n private getConstructorHeaderArg({\n header,\n value\n }: {\n header: FernIr.dynamic.NamedParameter;\n value: unknown;\n }): go.AstNode | undefined {\n const typeInstantiation = this.context.dynamicTypeInstantiationMapper.convert({\n typeReference: header.typeReference,\n value\n });\n if (go.TypeInstantiation.isNop(typeInstantiation)) {\n // Literal header values (e.g. \"X-API-Version\") should not be included in the\n // client constructor.\n return undefined;\n }\n return go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: `With${header.name.name.pascalCase.unsafeName}`,\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [typeInstantiation]\n })\n );\n });\n }\n\n private getMethodArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): { otherArgs: go.AstNode[]; requestArg: go.AstNode | undefined } {\n switch (endpoint.request.type) {\n case \"inlined\":\n return this.getMethodArgsForInlinedRequest({ request: endpoint.request, snippet });\n case \"body\":\n return this.getMethodArgsForBodyRequest({ request: endpoint.request, snippet });\n default:\n assertNever(endpoint.request);\n }\n }\n\n private getMethodArgsForBodyRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.BodyRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): { otherArgs: go.AstNode[]; requestArg: go.AstNode | undefined } {\n const otherArgs: go.AstNode[] = [];\n\n this.context.errors.scope(Scope.PathParameters);\n const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n if (pathParameters.length > 0) {\n otherArgs.push(\n ...this.getPathParameters({ namedParameters: pathParameters, snippet }).map((field) => field.value)\n );\n }\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.RequestBody);\n const requestArg: go.AstNode | undefined =\n request.body != null\n ? this.getBodyRequestArg({ body: request.body, value: snippet.requestBody })\n : undefined;\n this.context.errors.unscope();\n\n return { otherArgs, requestArg };\n }\n\n private getBodyRequestArg({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBodyType;\n value: unknown;\n }): go.TypeInstantiation {\n switch (body.type) {\n case \"bytes\": {\n return this.getBytesBodyRequestArg({ value });\n }\n case \"typeReference\":\n return this.context.dynamicTypeInstantiationMapper.convert({ typeReference: body.value, value });\n default:\n assertNever(body);\n }\n }\n\n private getBytesBodyRequestArg({ value }: { value: unknown }): go.TypeInstantiation {\n if (typeof value !== \"string\") {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected bytes value to be a string, got ${typeof value}`\n });\n return go.TypeInstantiation.nop();\n }\n return go.TypeInstantiation.bytes(value as string);\n }\n\n private getMethodArgsForInlinedRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): { otherArgs: go.AstNode[]; requestArg: go.AstNode | undefined } {\n const otherArgs: go.AstNode[] = [];\n\n const { inlinePathParameters, inlineFileProperties } = {\n inlinePathParameters: this.context.customConfig?.inlinePathParameters ?? true,\n inlineFileProperties: this.context.customConfig?.inlineFileProperties ?? true\n };\n\n this.context.errors.scope(Scope.PathParameters);\n const pathParameterFields: go.StructField[] = [];\n const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n if (pathParameters.length > 0) {\n pathParameterFields.push(\n ...this.getPathParameters({\n namedParameters: pathParameters,\n snippet\n })\n );\n }\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.RequestBody);\n const filePropertyInfo = this.getFilePropertyInfo({ request, snippet });\n this.context.errors.unscope();\n\n if (!this.context.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n otherArgs.push(...pathParameterFields.map((field) => field.value));\n }\n\n if (!inlineFileProperties) {\n otherArgs.push(...filePropertyInfo.fileFields.map((field) => field.value));\n }\n\n const requestArg: go.AstNode | undefined = this.context.needsRequestParameter({\n request,\n inlinePathParameters,\n inlineFileProperties\n })\n ? this.getInlinedRequestArg({\n request,\n snippet,\n pathParameterFields: this.context.includePathParametersInWrappedRequest({\n request,\n inlinePathParameters\n })\n ? pathParameterFields\n : [],\n filePropertyInfo\n })\n : undefined;\n return { otherArgs, requestArg };\n }\n\n private getFilePropertyInfo({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): FilePropertyInfo {\n if (request.body == null || !this.context.isFileUploadRequestBody(request.body)) {\n return {\n fileFields: [],\n bodyPropertyFields: []\n };\n }\n return this.context.filePropertyMapper.getFilePropertyInfo({\n body: request.body,\n value: snippet.requestBody\n });\n }\n\n private getInlinedRequestArg({\n request,\n snippet,\n pathParameterFields,\n filePropertyInfo\n }: {\n request: FernIr.dynamic.InlinedRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n pathParameterFields: go.StructField[];\n filePropertyInfo: FilePropertyInfo;\n }): go.TypeInstantiation {\n this.context.errors.scope(Scope.QueryParameters);\n const queryParameters = this.context.associateQueryParametersByWireValue({\n parameters: request.queryParameters ?? [],\n values: snippet.queryParameters ?? {}\n });\n const queryParameterFields = queryParameters.map((queryParameter) => ({\n name: queryParameter.name.name.pascalCase.unsafeName,\n value: this.context.dynamicTypeInstantiationMapper.convert(queryParameter)\n }));\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.Headers);\n const headers = this.context.associateByWireValue({\n parameters: request.headers ?? [],\n values: snippet.headers ?? {}\n });\n const headerFields = headers.map((header) => ({\n name: header.name.name.pascalCase.unsafeName,\n value: this.context.dynamicTypeInstantiationMapper.convert(header)\n }));\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.RequestBody);\n const requestBodyFields =\n request.body != null\n ? this.getInlinedRequestBodyStructFields({\n body: request.body,\n value: snippet.requestBody,\n filePropertyInfo\n })\n : [];\n this.context.errors.unscope();\n\n return go.TypeInstantiation.structPointer({\n typeReference: go.typeReference({\n name: this.context.getMethodName(request.declaration.name),\n importPath: this.context.getImportPathForRequest(request.declaration.fernFilepath)\n }),\n fields: [...pathParameterFields, ...queryParameterFields, ...headerFields, ...requestBodyFields]\n });\n }\n\n private getInlinedRequestBodyStructFields({\n body,\n value,\n filePropertyInfo\n }: {\n body: FernIr.dynamic.InlinedRequestBody;\n value: unknown;\n filePropertyInfo: FilePropertyInfo;\n }): go.StructField[] {\n switch (body.type) {\n case \"properties\":\n return this.getInlinedRequestBodyPropertyStructFields({ parameters: body.value, value });\n case \"referenced\":\n return [this.getReferencedRequestBodyPropertyStructField({ body, value })];\n case \"fileUpload\":\n return this.getFileUploadRequestBodyStructFields({ filePropertyInfo });\n default:\n assertNever(body);\n }\n }\n\n private getFileUploadRequestBodyStructFields({\n filePropertyInfo\n }: {\n filePropertyInfo: FilePropertyInfo;\n }): go.StructField[] {\n if (this.context.customConfig?.inlineFileProperties) {\n return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n }\n return filePropertyInfo.bodyPropertyFields;\n }\n\n private getReferencedRequestBodyPropertyStructField({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBody;\n value: unknown;\n }): go.StructField {\n return {\n name: this.context.getTypeName(body.bodyKey),\n value: this.getReferencedRequestBodyPropertyTypeInstantiation({ body: body.bodyType, value })\n };\n }\n\n private getReferencedRequestBodyPropertyTypeInstantiation({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBodyType;\n value: unknown;\n }): go.TypeInstantiation {\n switch (body.type) {\n case \"bytes\":\n return this.getBytesBodyRequestArg({ value });\n case \"typeReference\":\n return this.context.dynamicTypeInstantiationMapper.convert({ typeReference: body.value, value });\n default:\n assertNever(body);\n }\n }\n\n private getInlinedRequestBodyPropertyStructFields({\n parameters,\n value\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n value: unknown;\n }): go.StructField[] {\n const fields: go.StructField[] = [];\n\n const bodyProperties = this.context.associateByWireValue({\n parameters,\n values: this.context.getRecord(value) ?? {}\n });\n for (const parameter of bodyProperties) {\n fields.push({\n name: this.context.getTypeName(parameter.name.name),\n value: this.context.dynamicTypeInstantiationMapper.convert(parameter)\n });\n }\n\n return fields;\n }\n\n private getPathParameters({\n namedParameters,\n snippet\n }: {\n namedParameters: FernIr.dynamic.NamedParameter[];\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.StructField[] {\n const args: go.StructField[] = [];\n\n const pathParameters = this.context.associateByWireValue({\n parameters: namedParameters,\n values: snippet.pathParameters ?? {}\n });\n for (const parameter of pathParameters) {\n args.push({\n name: this.context.getTypeName(parameter.name.name),\n value: this.context.dynamicTypeInstantiationMapper.convertToPointerIfPossible(parameter)\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 private getRootClientFuncInvocation(arguments_: go.AstNode[]): go.FuncInvocation {\n return go.invokeFunc({\n func: go.typeReference({\n name: this.context.getClientConstructorName(),\n importPath: this.context.getClientImportPath()\n }),\n arguments_\n });\n }\n\n private buildWiremockTestSetup({\n endpoint,\n errorCase\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n errorCase?: boolean;\n }): go.AstNode[] {\n const ENDPOINT_STUB_NAME = \"stub\";\n const usedSharedMainTest = true;\n return [\n ...(!usedSharedMainTest\n ? [\n // Initialize context\n go.codeblock((writer) => {\n writer.write(\"ctx := \");\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"Background\",\n importPath: \"context\"\n }),\n arguments_: [],\n multiline: false\n })\n );\n }),\n\n // Start WireMock container\n go.codeblock((writer) => {\n writer.write(`container, containerErr := `);\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"RunContainerAndStopOnCleanup\",\n importPath: \"github.com/wiremock/wiremock-testcontainers-go\"\n }),\n arguments_: [\n go.codeblock(\"ctx\"),\n go.codeblock(\"t\"),\n go.invokeFunc({\n func: go.typeReference({\n name: \"WithImage\",\n importPath: \"github.com/wiremock/wiremock-testcontainers-go\"\n }),\n arguments_: [\n go.TypeInstantiation.string(\"docker.io/wiremock/wiremock:3.9.1\")\n ],\n multiline: false\n })\n ],\n multiline: true\n })\n );\n }),\n\n // Check for container error\n go.codeblock((writer) => {\n writer.write(\"if containerErr != nil {\");\n writer.writeLine();\n writer.write(\" t.Fatal(containerErr)\");\n writer.writeLine();\n writer.write(\"}\");\n }),\n\n // Get WireMock URL from container\n go.codeblock((writer) => {\n writer.write(`${WIREMOCK_BASE_URL}, endpointErr := `);\n writer.writeNode(\n go.invokeMethod({\n on: go.codeblock(\"container\"),\n method: \"Endpoint\",\n arguments_: [go.codeblock(\"ctx\"), go.TypeInstantiation.string(\"\")],\n multiline: false\n })\n );\n }),\n\n go.invokeFunc({\n func: go.typeReference({\n name: \"NoError\",\n importPath: \"github.com/stretchr/testify/require\"\n }),\n arguments_: [\n go.codeblock(\"t\"),\n go.codeblock(\"endpointErr\"),\n go.TypeInstantiation.string(\"Failed to get WireMock container endpoint\")\n ],\n multiline: false\n }),\n\n go.codeblock((writer) => {\n writer.write(`${WIREMOCK_BASE_URL} = \"http://\" + ${WIREMOCK_BASE_URL}`);\n }),\n\n // Get WireMock client from container\n go.codeblock((writer) => {\n writer.write(`${WIREMOCK_CLIENT_VAR_NAME} := `);\n writer.writeNode(\n go.selector({\n on: go.codeblock(\"container\"),\n selector: go.codeblock(\"Client\")\n })\n );\n })\n ]\n : [])\n ];\n }\n\n private callClientMethodAndAssert({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.CodeBlock {\n return go.codeblock((writer) => {\n // IMPORTANT: currently not capturing the response/error values since its not trivial to determine\n // the number of return values for the method using the dynamic ir\n\n // Call the method and capture response and error\n // writer.write(\"_, invocationErr := \");\n this.writeMethodInvocation({ writer, endpoint, snippet });\n writer.writeLine();\n writer.writeLine();\n\n // Verify WireMock request was matched\n writer.write(\"ok, countErr := \");\n writer.writeNode(\n go.invokeMethod({\n on: go.codeblock(WIREMOCK_CLIENT_VAR_NAME),\n method: \"Verify\",\n arguments_: [\n go.invokeMethod({\n on: go.codeblock(\"stub\"),\n method: \"Request\",\n arguments_: [],\n multiline: false\n }),\n go.codeblock(\"1\")\n ],\n multiline: false\n })\n );\n writer.writeLine();\n\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"NoError\",\n importPath: \"github.com/stretchr/testify/require\"\n }),\n arguments_: [\n go.codeblock(\"t\"),\n go.codeblock(\"countErr\"),\n go.TypeInstantiation.string(\"Failed to verify WireMock request was matched\")\n ],\n multiline: false\n })\n );\n writer.writeLine();\n\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"True\",\n importPath: \"github.com/stretchr/testify/require\"\n }),\n arguments_: [\n go.codeblock(\"t\"),\n go.codeblock(\"ok\"),\n go.TypeInstantiation.string(\"WireMock request was not matched\")\n ],\n multiline: false\n })\n );\n writer.writeLine();\n\n // IMPORTANT: currently not asserting that the call succeeded since its not trivial to determine\n // the number of return values for the method using the dynamic ir\n\n // Verify the call succeeded (may not assert this at all and only assert the WireMock request was matched)\n // Since we don't necessarily have valid response bodies in our WireMock stubs (so type casting will fail)\n // writer.writeNode(\n // go.invokeFunc({\n // func: go.typeReference({\n // name: \"NoError\",\n // importPath: \"github.com/stretchr/testify/require\"\n // }),\n // arguments_: [\n // go.codeblock(\"t\"),\n // go.codeblock(\"invocationErr\"),\n // go.TypeInstantiation.string(`${this.getMethod({ endpoint })} call should succeed with WireMock`)\n // ],\n // multiline: false\n // })\n // );\n // writer.writeLine();\n });\n }\n}\n"],"mappings":"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","names":["init_process","init_buffer","SNIPPET_PACKAGE_NAME","SNIPPET_IMPORT_PATH","SNIPPET_FUNC_NAME","CLIENT_VAR_NAME","TypeInst","go_exports","WIREMOCK_BASE_URL","WIREMOCK_CLIENT_VAR_NAME","EndpointSnippetGenerator","context","formatter","__publicField","endpoint","request","options","_a","_b","_c","snippet","writer","node","otherArgs","requestArg","requestRef","args","baseUrlArg","Severity","Scope","auth","values","assertNever","message","baseUrl","environment","typeReference","headers","header","arg","value","typeInstantiation","pathParameters","field","body","_d","_e","_f","inlinePathParameters","inlineFileProperties","pathParameterFields","filePropertyInfo","queryParameterFields","queryParameter","headerFields","requestBodyFields","parameters","fields","bodyProperties","parameter","namedParameters","val","arguments_","errorCase","ENDPOINT_STUB_NAME"]}
@@ -1,2 +1,2 @@
1
- import{e as c,f as i,g as p,h as n,j as e}from"./chunk-GUJUKQKZ.js";i();p();var a=class{constructor({context:t}){c(this,"context");this.context=t}convert(t){switch(t.typeReference.type){case"list":return e.Type.slice(this.convert({typeReference:t.typeReference.value}));case"literal":return this.convertLiteral({literal:t.typeReference.value});case"map":return e.Type.map(this.convert({typeReference:t.typeReference.key}),this.convert({typeReference:t.typeReference.value}));case"named":{let r=this.context.resolveNamedType({typeId:t.typeReference.value});return r==null?this.convertUnknown():this.convertNamed({named:r})}case"optional":return e.Type.optional(this.convert({typeReference:t.typeReference.value}));case"nullable":return e.Type.optional(this.convert({typeReference:t.typeReference.value}));case"primitive":return this.convertPrimitive({primitive:t.typeReference.value});case"set":return e.Type.slice(this.convert({typeReference:t.typeReference}));case"unknown":return this.convertUnknown();default:n(t.typeReference)}}convertLiteral({literal:t}){switch(t.type){case"boolean":return e.Type.bool();case"string":return e.Type.string()}}convertNamed({named:t}){let r=e.Type.reference(e.typeReference({name:this.context.getTypeName(t.declaration.name),importPath:this.context.getImportPath(t.declaration.fernFilepath)}));switch(t.type){case"alias":case"enum":return r;case"discriminatedUnion":case"object":case"undiscriminatedUnion":return e.Type.pointer(r);default:n(t)}}convertUnknown(){return e.Type.any()}convertPrimitive({primitive:t}){switch(t){case"INTEGER":return e.Type.int();case"UINT":return e.Type.int();case"LONG":return e.Type.int64();case"UINT_64":return e.Type.int64();case"FLOAT":return e.Type.float64();case"DOUBLE":return e.Type.float64();case"BOOLEAN":return e.Type.bool();case"STRING":return e.Type.string();case"DATE":return e.Type.date();case"DATE_TIME":return e.Type.dateTime();case"UUID":return e.Type.uuid();case"BASE_64":return e.Type.bytes();case"BIG_INTEGER":return e.Type.string();default:n(t)}}};export{a};
2
- //# sourceMappingURL=chunk-Q6YO7G6Y.js.map
1
+ import{e as c,f as i,g as p,h as n,j as e}from"./chunk-JHIUGKJ4.js";i();p();var a=class{constructor({context:t}){c(this,"context");this.context=t}convert(t){switch(t.typeReference.type){case"list":return e.Type.slice(this.convert({typeReference:t.typeReference.value}));case"literal":return this.convertLiteral({literal:t.typeReference.value});case"map":return e.Type.map(this.convert({typeReference:t.typeReference.key}),this.convert({typeReference:t.typeReference.value}));case"named":{let r=this.context.resolveNamedType({typeId:t.typeReference.value});return r==null?this.convertUnknown():this.convertNamed({named:r})}case"optional":return e.Type.optional(this.convert({typeReference:t.typeReference.value}));case"nullable":return e.Type.optional(this.convert({typeReference:t.typeReference.value}));case"primitive":return this.convertPrimitive({primitive:t.typeReference.value});case"set":return e.Type.slice(this.convert({typeReference:t.typeReference}));case"unknown":return this.convertUnknown();default:n(t.typeReference)}}convertLiteral({literal:t}){switch(t.type){case"boolean":return e.Type.bool();case"string":return e.Type.string()}}convertNamed({named:t}){let r=e.Type.reference(e.typeReference({name:this.context.getTypeName(t.declaration.name),importPath:this.context.getImportPath(t.declaration.fernFilepath)}));switch(t.type){case"alias":case"enum":return r;case"discriminatedUnion":case"object":case"undiscriminatedUnion":return e.Type.pointer(r);default:n(t)}}convertUnknown(){return e.Type.any()}convertPrimitive({primitive:t}){switch(t){case"INTEGER":return e.Type.int();case"UINT":return e.Type.int();case"LONG":return e.Type.int64();case"UINT_64":return e.Type.int64();case"FLOAT":return e.Type.float64();case"DOUBLE":return e.Type.float64();case"BOOLEAN":return e.Type.bool();case"STRING":return e.Type.string();case"DATE":return e.Type.date();case"DATE_TIME":return e.Type.dateTime();case"UUID":return e.Type.uuid();case"BASE_64":return e.Type.bytes();case"BIG_INTEGER":return e.Type.string();default:n(t)}}};export{a};
2
+ //# sourceMappingURL=chunk-ZNTXZ3YV.js.map
@@ -1,4 +1,4 @@
1
1
  import '@fern-api/browser-compatible-base-generator';
2
2
  import '@fern-api/dynamic-ir-sdk';
3
3
  import '@fern-api/go-ast';
4
- export { D as DynamicSnippetsGeneratorContext } from '../DynamicSnippetsGeneratorContext-BusKoNq4.js';
4
+ export { D as DynamicSnippetsGeneratorContext } from '../DynamicSnippetsGeneratorContext-D8VcLYKk.js';
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-UZEM7EUP.js";import"../chunk-FD44EP2P.js";import"../chunk-VCNL2JWU.js";import"../chunk-Q6YO7G6Y.js";import"../chunk-2YRGTA73.js";import"../chunk-GUJUKQKZ.js";export{a as DynamicSnippetsGeneratorContext};
1
+ import{a}from"../chunk-B2A7QNZM.js";import"../chunk-DVDVP26D.js";import"../chunk-3Z2URLHB.js";import"../chunk-ZNTXZ3YV.js";import"../chunk-SVPRIX53.js";import"../chunk-JHIUGKJ4.js";export{a as DynamicSnippetsGeneratorContext};
2
2
  //# sourceMappingURL=DynamicSnippetsGeneratorContext.js.map
@@ -1,4 +1,4 @@
1
1
  import '@fern-api/dynamic-ir-sdk';
2
2
  import '@fern-api/go-ast';
3
- export { a as DynamicTypeInstantiationMapper } from '../DynamicSnippetsGeneratorContext-BusKoNq4.js';
3
+ export { a as DynamicTypeInstantiationMapper } from '../DynamicSnippetsGeneratorContext-D8VcLYKk.js';
4
4
  import '@fern-api/browser-compatible-base-generator';
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-FD44EP2P.js";import"../chunk-VCNL2JWU.js";import"../chunk-GUJUKQKZ.js";export{a as DynamicTypeInstantiationMapper};
1
+ import{a}from"../chunk-DVDVP26D.js";import"../chunk-3Z2URLHB.js";import"../chunk-JHIUGKJ4.js";export{a as DynamicTypeInstantiationMapper};
2
2
  //# sourceMappingURL=DynamicTypeInstantiationMapper.js.map
@@ -1,4 +1,4 @@
1
1
  import '@fern-api/dynamic-ir-sdk';
2
2
  import '@fern-api/go-ast';
3
- export { b as DynamicTypeMapper } from '../DynamicSnippetsGeneratorContext-BusKoNq4.js';
3
+ export { b as DynamicTypeMapper } from '../DynamicSnippetsGeneratorContext-D8VcLYKk.js';
4
4
  import '@fern-api/browser-compatible-base-generator';
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-Q6YO7G6Y.js";import"../chunk-GUJUKQKZ.js";export{a as DynamicTypeMapper};
1
+ import{a}from"../chunk-ZNTXZ3YV.js";import"../chunk-JHIUGKJ4.js";export{a as DynamicTypeMapper};
2
2
  //# sourceMappingURL=DynamicTypeMapper.js.map
@@ -1,4 +1,4 @@
1
1
  import '@fern-api/dynamic-ir-sdk';
2
2
  import '@fern-api/go-ast';
3
- export { F as FilePropertyInfo, c as FilePropertyMapper } from '../DynamicSnippetsGeneratorContext-BusKoNq4.js';
3
+ export { F as FilePropertyInfo, c as FilePropertyMapper } from '../DynamicSnippetsGeneratorContext-D8VcLYKk.js';
4
4
  import '@fern-api/browser-compatible-base-generator';
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-2YRGTA73.js";import"../chunk-GUJUKQKZ.js";export{a as FilePropertyMapper};
1
+ import{a}from"../chunk-SVPRIX53.js";import"../chunk-JHIUGKJ4.js";export{a as FilePropertyMapper};
2
2
  //# sourceMappingURL=FilePropertyMapper.js.map
package/esm/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { DynamicSnippetsGenerator } from './DynamicSnippetsGenerator.js';
2
2
  import '@fern-api/browser-compatible-base-generator';
3
3
  import '@fern-api/dynamic-ir-sdk';
4
- import './DynamicSnippetsGeneratorContext-BusKoNq4.js';
4
+ import './DynamicSnippetsGeneratorContext-D8VcLYKk.js';
5
5
  import '@fern-api/go-ast';
6
6
  import './EndpointSnippetGenerator.js';
package/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as n}from"./chunk-BI26DLZ5.js";import"./chunk-D6NMQKNQ.js";import"./chunk-UZEM7EUP.js";import"./chunk-FD44EP2P.js";import"./chunk-VCNL2JWU.js";import"./chunk-Q6YO7G6Y.js";import"./chunk-2YRGTA73.js";import{f as e,g as r}from"./chunk-GUJUKQKZ.js";e();r();export{n as DynamicSnippetsGenerator};
1
+ import{a as n}from"./chunk-MYN2HZVH.js";import"./chunk-TXVHHFW3.js";import"./chunk-B2A7QNZM.js";import"./chunk-DVDVP26D.js";import"./chunk-3Z2URLHB.js";import"./chunk-ZNTXZ3YV.js";import"./chunk-SVPRIX53.js";import{f as e,g as r}from"./chunk-JHIUGKJ4.js";e();r();export{n as DynamicSnippetsGenerator};
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fern-api/go-dynamic-snippets",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/fern-api/fern.git",
@@ -1,2 +0,0 @@
1
- import{a}from"./chunk-D6NMQKNQ.js";import{a as i}from"./chunk-UZEM7EUP.js";import{a as p}from"./chunk-VCNL2JWU.js";import{e as r,f as n,g as o}from"./chunk-GUJUKQKZ.js";n();o();var s=class extends p{constructor({ir:e,config:t,formatter:m}){super(new i({ir:e,config:t}));r(this,"formatter");this.formatter=m}async generate(e,t){return super.generate(e,t)}generateSync(e,t){return super.generateSync(e,t)}createSnippetGenerator(e){return new a({context:e,formatter:this.formatter})}};export{s as a};
2
- //# sourceMappingURL=chunk-BI26DLZ5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/DynamicSnippetsGenerator.ts"],"sourcesContent":["import {\n AbstractDynamicSnippetsGenerator,\n AbstractFormatter,\n FernGeneratorExec,\n Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n DynamicSnippetsGeneratorContext,\n EndpointSnippetGenerator\n> {\n private formatter: AbstractFormatter | undefined;\n\n constructor({\n ir,\n config,\n formatter\n }: {\n ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n config: FernGeneratorExec.GeneratorConfig;\n formatter?: AbstractFormatter;\n }) {\n super(new DynamicSnippetsGeneratorContext({ ir, config }));\n this.formatter = formatter;\n }\n\n public async generate(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options?: Options\n ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n return super.generate(request, options);\n }\n\n public generateSync(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options?: Options\n ): FernIr.dynamic.EndpointSnippetResponse {\n return super.generateSync(request, options);\n }\n\n protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n return new EndpointSnippetGenerator({ context, formatter: this.formatter });\n }\n}\n"],"mappings":"yKAAAA,IAAAC,IAUO,IAAMC,EAAN,cAAuCC,CAG5C,CAGE,YAAY,CACR,GAAAC,EACA,OAAAC,EACA,UAAAC,CACJ,EAIG,CACC,MAAM,IAAIC,EAAgC,CAAE,GAAAH,EAAI,OAAAC,CAAO,CAAC,CAAC,EAX7DG,EAAA,KAAQ,aAYJ,KAAK,UAAYF,CACrB,CAEA,MAAa,SACTG,EACAC,EAC+C,CAC/C,OAAO,MAAM,SAASD,EAASC,CAAO,CAC1C,CAEO,aACHD,EACAC,EACsC,CACtC,OAAO,MAAM,aAAaD,EAASC,CAAO,CAC9C,CAEU,uBAAuBC,EAAoE,CACjG,OAAO,IAAIC,EAAyB,CAAE,QAAAD,EAAS,UAAW,KAAK,SAAU,CAAC,CAC9E,CACJ","names":["init_process","init_buffer","DynamicSnippetsGenerator","AbstractDynamicSnippetsGenerator","ir","config","formatter","DynamicSnippetsGeneratorContext","__publicField","request","options","context","EndpointSnippetGenerator"]}
@@ -1,2 +0,0 @@
1
- import{b as p,d}from"./chunk-VCNL2JWU.js";import{e as A,f as R,g as N,h as m,j as n}from"./chunk-GUJUKQKZ.js";R();N();var b="example",k="fern",T="do",I="client",l=n.TypeInstantiation,C="WireMockBaseURL",w="WireMockClient",x=class{constructor({context:e,formatter:t}){A(this,"context");A(this,"formatter");this.context=e,this.formatter=t}async generateSnippet({endpoint:e,request:t,options:r}){var s,a,c;return((a=(s=r==null?void 0:r.config)==null?void 0:s.outputWiremockTests)!=null?a:!1)?this.generateWiremockTest({endpoint:e,snippet:t}):await this.buildCodeBlock({endpoint:e,snippet:t}).toStringAsync({packageName:b,importPath:k,rootImportPath:this.context.rootImportPath,customConfig:(c=this.context.customConfig)!=null?c:{},formatter:this.formatter})}generateSnippetSync({endpoint:e,request:t,options:r}){var s,a,c;return((a=(s=r==null?void 0:r.config)==null?void 0:s.outputWiremockTests)!=null?a:!1)?this.generateWiremockTest({endpoint:e,snippet:t}):this.buildCodeBlock({endpoint:e,snippet:t}).toString({packageName:b,importPath:k,rootImportPath:this.context.rootImportPath,customConfig:(c=this.context.customConfig)!=null?c:{},formatter:this.formatter})}generateWiremockTest({endpoint:e,snippet:t}){var o;return this.buildWiremockTestCodeBlock({endpoint:e,snippet:t}).toString({packageName:"wiremock",importPath:k,rootImportPath:this.context.rootImportPath,customConfig:(o=this.context.customConfig)!=null?o:{},formatter:this.formatter})}buildCodeBlock({endpoint:e,snippet:t}){return n.codeblock(r=>{r.writeNode(n.func({name:T,parameters:[],return_:[],body:n.codeblock(o=>{o.writeNode(this.constructClient({endpoint:e,snippet:t})),o.writeLine(),o.writeNode(this.callMethod({endpoint:e,snippet:t}))})})),r.writeNewLineIfLastLineNot()})}buildWiremockTestCodeBlock({endpoint:e,snippet:t}){return n.codeblock(r=>{r.writeNode(n.func({name:"Test"+this.context.getTestMethodName(e)+"WithWireMock",parameters:[n.parameter({name:"t",type:n.Type.pointer(n.Type.reference(this.context.getTestingTypeReference()))})],return_:[],body:n.codeblock(o=>{for(let i of this.buildWiremockTestSetup({endpoint:e}))o.writeNode(i),o.writeLine();o.writeLine(),o.writeNode(this.constructWiremockTestClient({endpoint:e,snippet:t})),o.writeLine(),o.writeNode(this.callClientMethodAndAssert({endpoint:e,snippet:t}))})})),r.writeNewLineIfLastLineNot()})}constructClient({endpoint:e,snippet:t}){return n.codeblock(r=>{r.write(`${I} := `),r.writeNode(this.getRootClientFuncInvocation(this.getConstructorArgs({endpoint:e,snippet:t})))})}constructWiremockTestClient({endpoint:e,snippet:t}){return n.codeblock(r=>{r.write(`${I} := `),r.writeNode(this.getRootClientFuncInvocation(this.getWiremockTestConstructorArgs()))})}writeMethodInvocation({writer:e,endpoint:t,snippet:r}){let{otherArgs:o,requestArg:i}=this.getMethodArgs({endpoint:t,snippet:r});if(i!=null)if(i instanceof n.TypeInstantiation&&n.TypeInstantiation.isNop(i))e.writeNode(n.invokeMethod({on:n.codeblock(I),method:this.getMethod({endpoint:t}),arguments_:[this.context.getContextTodoFunctionInvocation(),...o,n.codeblock("nil")]}));else{e.write("request := "),e.writeNode(i),e.writeLine();let s=n.codeblock("request");e.writeNode(n.invokeMethod({on:n.codeblock(I),method:this.getMethod({endpoint:t}),arguments_:[this.context.getContextTodoFunctionInvocation(),...o,s]}))}else e.writeNode(n.invokeMethod({on:n.codeblock(I),method:this.getMethod({endpoint:t}),arguments_:[this.context.getContextTodoFunctionInvocation(),...o]}))}callMethod({endpoint:e,snippet:t}){return n.codeblock(r=>{this.writeMethodInvocation({writer:r,endpoint:e,snippet:t})})}getConstructorArgs({endpoint:e,snippet:t}){let r=[],o=this.getConstructorBaseUrlArg({baseUrl:t.baseURL,environment:t.environment});return o!=null&&r.push(o),e.auth!=null&&(t.auth!=null?r.push(this.getConstructorAuthArg({auth:e.auth,values:t.auth})):this.context.errors.add({severity:p.Warning,message:`Auth with ${e.auth.type} configuration is required for this endpoint`})),this.context.errors.scope(d.Headers),this.context.ir.headers!=null&&t.headers!=null&&r.push(...this.getConstructorHeaderArgs({headers:this.context.ir.headers,values:t.headers})),this.context.errors.unscope(),r}getWiremockTestConstructorArgs(){return[n.codeblock(e=>{e.writeNode(n.invokeFunc({func:n.typeReference({name:"WithBaseURL",importPath:this.context.getOptionImportPath()}),arguments_:[n.codeblock(C)]}))})]}getConstructorAuthArg({auth:e,values:t}){if(t.type!==e.type)return this.addError(this.context.newAuthMismatchError({auth:e,values:t}).message),l.nop();switch(e.type){case"basic":return t.type==="basic"?this.getConstructorBasicAuthArg({auth:e,values:t}):l.nop();case"bearer":return t.type==="bearer"?this.getConstructorBearerAuthArg({auth:e,values:t}):l.nop();case"header":return t.type==="header"?this.getConstructorHeaderAuthArg({auth:e,values:t}):l.nop();case"oauth":return this.addWarning("The Go SDK doesn't support OAuth client credentials yet"),l.nop();case"inferred":return this.addWarning("The Go SDK Generator does not support Inferred auth scheme yet"),l.nop();default:m(e)}}addError(e){this.context.errors.add({severity:p.Critical,message:e})}addWarning(e){this.context.errors.add({severity:p.Warning,message:e})}getConstructorBasicAuthArg({auth:e,values:t}){return n.codeblock(r=>{r.writeNode(n.invokeFunc({func:n.typeReference({name:"WithBasicAuth",importPath:this.context.getOptionImportPath()}),arguments_:[n.TypeInstantiation.string(t.username),n.TypeInstantiation.string(t.password)]}))})}getConstructorBaseUrlArg({baseUrl:e,environment:t}){let r=this.getBaseUrlArg({baseUrl:e,environment:t});if(r!=null)return n.codeblock(o=>{o.writeNode(n.invokeFunc({func:n.typeReference({name:"WithBaseURL",importPath:this.context.getOptionImportPath()}),arguments_:[r]}))})}getBaseUrlArg({baseUrl:e,environment:t}){if(e!=null&&t!=null){this.context.errors.add({severity:p.Critical,message:"Cannot specify both baseUrl and environment options"});return}if(e!=null)return n.TypeInstantiation.string(e);if(t!=null){if(this.context.isSingleEnvironmentID(t)){let r=this.context.getEnvironmentTypeReferenceFromID(t);if(r==null){this.context.errors.add({severity:p.Warning,message:`Environment ${JSON.stringify(t)} was not found`});return}return n.TypeInstantiation.reference(r)}this.context.isMultiEnvironmentValues(t)&&this.context.errors.add({severity:p.Warning,message:"The Go SDK doesn't support a multi-environment client option yet; use the baseUrl option instead"})}}getConstructorBearerAuthArg({auth:e,values:t}){return n.codeblock(r=>{r.writeNode(n.invokeFunc({func:n.typeReference({name:`With${e.token.pascalCase.unsafeName}`,importPath:this.context.getOptionImportPath()}),arguments_:[n.TypeInstantiation.string(t.token)]}))})}getConstructorHeaderAuthArg({auth:e,values:t}){return n.codeblock(r=>{r.writeNode(n.invokeFunc({func:n.typeReference({name:`With${e.header.name.name.pascalCase.unsafeName}`,importPath:this.context.getOptionImportPath()}),arguments_:[this.context.dynamicTypeInstantiationMapper.convert({typeReference:e.header.typeReference,value:t.value})]}))})}getConstructorHeaderArgs({headers:e,values:t}){let r=[];for(let o of e){let i=this.getConstructorHeaderArg({header:o,value:t.value});i!=null&&r.push(i)}return r}getConstructorHeaderArg({header:e,value:t}){let r=this.context.dynamicTypeInstantiationMapper.convert({typeReference:e.typeReference,value:t});if(!n.TypeInstantiation.isNop(r))return n.codeblock(o=>{o.writeNode(n.invokeFunc({func:n.typeReference({name:`With${e.name.name.pascalCase.unsafeName}`,importPath:this.context.getOptionImportPath()}),arguments_:[r]}))})}getMethodArgs({endpoint:e,snippet:t}){switch(e.request.type){case"inlined":return this.getMethodArgsForInlinedRequest({request:e.request,snippet:t});case"body":return this.getMethodArgsForBodyRequest({request:e.request,snippet:t});default:m(e.request)}}getMethodArgsForBodyRequest({request:e,snippet:t}){var s,a;let r=[];this.context.errors.scope(d.PathParameters);let o=[...(s=this.context.ir.pathParameters)!=null?s:[],...(a=e.pathParameters)!=null?a:[]];o.length>0&&r.push(...this.getPathParameters({namedParameters:o,snippet:t}).map(c=>c.value)),this.context.errors.unscope(),this.context.errors.scope(d.RequestBody);let i=e.body!=null?this.getBodyRequestArg({body:e.body,value:t.requestBody}):void 0;return this.context.errors.unscope(),{otherArgs:r,requestArg:i}}getBodyRequestArg({body:e,value:t}){switch(e.type){case"bytes":return this.getBytesBodyRequestArg({value:t});case"typeReference":return this.context.dynamicTypeInstantiationMapper.convert({typeReference:e.value,value:t});default:m(e)}}getBytesBodyRequestArg({value:e}){return typeof e!="string"?(this.context.errors.add({severity:p.Critical,message:`Expected bytes value to be a string, got ${typeof e}`}),n.TypeInstantiation.nop()):n.TypeInstantiation.bytes(e)}getMethodArgsForInlinedRequest({request:e,snippet:t}){var h,g,y,f,u,P;let r=[],{inlinePathParameters:o,inlineFileProperties:i}={inlinePathParameters:(g=(h=this.context.customConfig)==null?void 0:h.inlinePathParameters)!=null?g:!0,inlineFileProperties:(f=(y=this.context.customConfig)==null?void 0:y.inlineFileProperties)!=null?f:!0};this.context.errors.scope(d.PathParameters);let s=[],a=[...(u=this.context.ir.pathParameters)!=null?u:[],...(P=e.pathParameters)!=null?P:[]];a.length>0&&s.push(...this.getPathParameters({namedParameters:a,snippet:t})),this.context.errors.unscope(),this.context.errors.scope(d.RequestBody);let c=this.getFilePropertyInfo({request:e,snippet:t});this.context.errors.unscope(),this.context.includePathParametersInWrappedRequest({request:e,inlinePathParameters:o})||r.push(...s.map(v=>v.value)),i||r.push(...c.fileFields.map(v=>v.value));let F=this.context.needsRequestParameter({request:e,inlinePathParameters:o,inlineFileProperties:i})?this.getInlinedRequestArg({request:e,snippet:t,pathParameterFields:this.context.includePathParametersInWrappedRequest({request:e,inlinePathParameters:o})?s:[],filePropertyInfo:c}):void 0;return{otherArgs:r,requestArg:F}}getFilePropertyInfo({request:e,snippet:t}){return e.body==null||!this.context.isFileUploadRequestBody(e.body)?{fileFields:[],bodyPropertyFields:[]}:this.context.filePropertyMapper.getFilePropertyInfo({body:e.body,value:t.requestBody})}getInlinedRequestArg({request:e,snippet:t,pathParameterFields:r,filePropertyInfo:o}){var h,g,y,f;this.context.errors.scope(d.QueryParameters);let s=this.context.associateQueryParametersByWireValue({parameters:(h=e.queryParameters)!=null?h:[],values:(g=t.queryParameters)!=null?g:{}}).map(u=>({name:u.name.name.pascalCase.unsafeName,value:this.context.dynamicTypeInstantiationMapper.convert(u)}));this.context.errors.unscope(),this.context.errors.scope(d.Headers);let c=this.context.associateByWireValue({parameters:(y=e.headers)!=null?y:[],values:(f=t.headers)!=null?f:{}}).map(u=>({name:u.name.name.pascalCase.unsafeName,value:this.context.dynamicTypeInstantiationMapper.convert(u)}));this.context.errors.unscope(),this.context.errors.scope(d.RequestBody);let F=e.body!=null?this.getInlinedRequestBodyStructFields({body:e.body,value:t.requestBody,filePropertyInfo:o}):[];return this.context.errors.unscope(),n.TypeInstantiation.structPointer({typeReference:n.typeReference({name:this.context.getMethodName(e.declaration.name),importPath:this.context.getImportPathForRequest(e.declaration.fernFilepath)}),fields:[...r,...s,...c,...F]})}getInlinedRequestBodyStructFields({body:e,value:t,filePropertyInfo:r}){switch(e.type){case"properties":return this.getInlinedRequestBodyPropertyStructFields({parameters:e.value,value:t});case"referenced":return[this.getReferencedRequestBodyPropertyStructField({body:e,value:t})];case"fileUpload":return this.getFileUploadRequestBodyStructFields({filePropertyInfo:r});default:m(e)}}getFileUploadRequestBodyStructFields({filePropertyInfo:e}){var t;return(t=this.context.customConfig)!=null&&t.inlineFileProperties?[...e.fileFields,...e.bodyPropertyFields]:e.bodyPropertyFields}getReferencedRequestBodyPropertyStructField({body:e,value:t}){return{name:this.context.getTypeName(e.bodyKey),value:this.getReferencedRequestBodyPropertyTypeInstantiation({body:e.bodyType,value:t})}}getReferencedRequestBodyPropertyTypeInstantiation({body:e,value:t}){switch(e.type){case"bytes":return this.getBytesBodyRequestArg({value:t});case"typeReference":return this.context.dynamicTypeInstantiationMapper.convert({typeReference:e.value,value:t});default:m(e)}}getInlinedRequestBodyPropertyStructFields({parameters:e,value:t}){var i;let r=[],o=this.context.associateByWireValue({parameters:e,values:(i=this.context.getRecord(t))!=null?i:{}});for(let s of o)r.push({name:this.context.getTypeName(s.name.name),value:this.context.dynamicTypeInstantiationMapper.convert(s)});return r}getPathParameters({namedParameters:e,snippet:t}){var i;let r=[],o=this.context.associateByWireValue({parameters:e,values:(i=t.pathParameters)!=null?i:{}});for(let s of o)r.push({name:this.context.getTypeName(s.name.name),value:this.context.dynamicTypeInstantiationMapper.convertToPointerIfPossible(s)});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)}getRootClientFuncInvocation(e){return n.invokeFunc({func:n.typeReference({name:this.context.getClientConstructorName(),importPath:this.context.getClientImportPath()}),arguments_:e})}buildWiremockTestSetup({endpoint:e,errorCase:t}){let r="stub";return[]}callClientMethodAndAssert({endpoint:e,snippet:t}){return n.codeblock(r=>{this.writeMethodInvocation({writer:r,endpoint:e,snippet:t}),r.writeLine(),r.writeLine(),r.write("ok, countErr := "),r.writeNode(n.invokeMethod({on:n.codeblock(w),method:"Verify",arguments_:[n.invokeMethod({on:n.codeblock("stub"),method:"Request",arguments_:[],multiline:!1}),n.codeblock("1")],multiline:!1})),r.writeLine(),r.writeNode(n.invokeFunc({func:n.typeReference({name:"NoError",importPath:"github.com/stretchr/testify/require"}),arguments_:[n.codeblock("t"),n.codeblock("countErr"),n.TypeInstantiation.string("Failed to verify WireMock request was matched")],multiline:!1})),r.writeLine(),r.writeNode(n.invokeFunc({func:n.typeReference({name:"True",importPath:"github.com/stretchr/testify/require"}),arguments_:[n.codeblock("t"),n.codeblock("ok"),n.TypeInstantiation.string("WireMock request was not matched")],multiline:!1})),r.writeLine()})}};export{x as a};
2
- //# sourceMappingURL=chunk-D6NMQKNQ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/EndpointSnippetGenerator.ts"],"sourcesContent":["import { AbstractFormatter, Options, Scope, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { go } from \"@fern-api/go-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper\";\n\nconst SNIPPET_PACKAGE_NAME = \"example\";\nconst SNIPPET_IMPORT_PATH = \"fern\";\nconst SNIPPET_FUNC_NAME = \"do\";\nconst CLIENT_VAR_NAME = \"client\";\nconst TypeInst = go.TypeInstantiation;\nconst WIREMOCK_BASE_URL = \"WireMockBaseURL\";\nconst WIREMOCK_CLIENT_VAR_NAME = \"WireMockClient\";\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 options\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n options?: Options;\n }): Promise<string> {\n const outputWiremockTests =\n (options?.config as { outputWiremockTests?: boolean })?.outputWiremockTests ?? false;\n if (outputWiremockTests) {\n return this.generateWiremockTest({ endpoint, snippet: request });\n }\n const code = this.buildCodeBlock({ endpoint, snippet: request });\n return await code.toStringAsync({\n packageName: SNIPPET_PACKAGE_NAME,\n importPath: SNIPPET_IMPORT_PATH,\n rootImportPath: this.context.rootImportPath,\n customConfig: this.context.customConfig ?? {},\n formatter: this.formatter\n });\n }\n\n public generateSnippetSync({\n endpoint,\n request,\n options\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n options?: Options;\n }): string {\n const outputWiremockTests =\n (options?.config as { outputWiremockTests?: boolean })?.outputWiremockTests ?? false;\n if (outputWiremockTests) {\n return this.generateWiremockTest({ endpoint, snippet: request });\n }\n const code = this.buildCodeBlock({ endpoint, snippet: request });\n return code.toString({\n packageName: SNIPPET_PACKAGE_NAME,\n importPath: SNIPPET_IMPORT_PATH,\n rootImportPath: this.context.rootImportPath,\n customConfig: this.context.customConfig ?? {},\n formatter: this.formatter\n });\n }\n\n private generateWiremockTest({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): string {\n const code = this.buildWiremockTestCodeBlock({ endpoint, snippet });\n return code.toString({\n packageName: \"wiremock\",\n importPath: SNIPPET_IMPORT_PATH,\n rootImportPath: this.context.rootImportPath,\n customConfig: this.context.customConfig ?? {},\n formatter: this.formatter\n });\n }\n\n private buildCodeBlock({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.AstNode {\n return go.codeblock((writer) => {\n writer.writeNode(\n go.func({\n name: SNIPPET_FUNC_NAME,\n parameters: [],\n return_: [],\n body: go.codeblock((writer) => {\n writer.writeNode(this.constructClient({ endpoint, snippet }));\n writer.writeLine();\n writer.writeNode(this.callMethod({ endpoint, snippet }));\n })\n })\n );\n writer.writeNewLineIfLastLineNot();\n });\n }\n\n private buildWiremockTestCodeBlock({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.AstNode {\n return go.codeblock((writer) => {\n writer.writeNode(\n go.func({\n name: \"Test\" + this.context.getTestMethodName(endpoint) + \"WithWireMock\",\n parameters: [\n go.parameter({\n name: \"t\",\n type: go.Type.pointer(go.Type.reference(this.context.getTestingTypeReference()))\n })\n ],\n return_: [],\n body: go.codeblock((writer) => {\n for (const node of this.buildWiremockTestSetup({ endpoint })) {\n writer.writeNode(node);\n writer.writeLine();\n }\n writer.writeLine();\n writer.writeNode(this.constructWiremockTestClient({ endpoint, snippet }));\n writer.writeLine();\n writer.writeNode(this.callClientMethodAndAssert({ endpoint, snippet }));\n })\n })\n );\n // Not including error case for now until I can figure out why its not matching the wiremock stub\n // writer.writeLine();\n // writer.writeNode(\n // go.func({\n // name: \"Test\" + this.context.getMethodName(endpoint.declaration.name) + \"Error\" + \"WithWireMock\",\n // parameters: [\n // go.parameter({\n // name: \"t\",\n // type: go.Type.pointer(go.Type.reference(this.context.getTestingTypeReference()))\n // })\n // ],\n // return_: [],\n // body: go.codeblock((writer) => {\n // for (const node of this.buildWiremockTestSetup({ endpoint, errorCase: true })) {\n // writer.writeNode(node);\n // writer.writeLine();\n // }\n // writer.writeLine();\n // writer.writeNode(this.constructWiremockTestClient({ endpoint, snippet }));\n // writer.writeLine();\n // writer.writeNode(this.callClientMethodAndAssert({ endpoint, snippet }));\n // })\n // })\n // );\n writer.writeNewLineIfLastLineNot();\n });\n }\n\n private constructClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.CodeBlock {\n return go.codeblock((writer) => {\n writer.write(`${CLIENT_VAR_NAME} := `);\n writer.writeNode(this.getRootClientFuncInvocation(this.getConstructorArgs({ endpoint, snippet })));\n });\n }\n\n private constructWiremockTestClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.CodeBlock {\n return go.codeblock((writer) => {\n writer.write(`${CLIENT_VAR_NAME} := `);\n writer.writeNode(this.getRootClientFuncInvocation(this.getWiremockTestConstructorArgs()));\n });\n }\n\n private writeMethodInvocation({\n writer,\n endpoint,\n snippet\n }: {\n writer: go.Writer;\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): void {\n const { otherArgs, requestArg } = this.getMethodArgs({ endpoint, snippet });\n\n if (requestArg != null) {\n if (requestArg instanceof go.TypeInstantiation && go.TypeInstantiation.isNop(requestArg)) {\n writer.writeNode(\n go.invokeMethod({\n on: go.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: [this.context.getContextTodoFunctionInvocation(), ...otherArgs, go.codeblock(\"nil\")]\n })\n );\n } else {\n writer.write(\"request := \");\n writer.writeNode(requestArg);\n writer.writeLine();\n\n const requestRef = go.codeblock(\"request\");\n writer.writeNode(\n go.invokeMethod({\n on: go.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: [this.context.getContextTodoFunctionInvocation(), ...otherArgs, requestRef]\n })\n );\n }\n } else {\n writer.writeNode(\n go.invokeMethod({\n on: go.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: [this.context.getContextTodoFunctionInvocation(), ...otherArgs]\n })\n );\n }\n }\n\n private callMethod({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.CodeBlock {\n return go.codeblock((writer) => {\n this.writeMethodInvocation({ writer, endpoint, snippet });\n });\n }\n\n private getConstructorArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.AstNode[] {\n const args: go.AstNode[] = [];\n const baseUrlArg = this.getConstructorBaseUrlArg({\n baseUrl: snippet.baseURL,\n environment: snippet.environment\n });\n if (baseUrlArg != null) {\n args.push(baseUrlArg);\n }\n if (endpoint.auth != null) {\n if (snippet.auth != null) {\n args.push(this.getConstructorAuthArg({ auth: endpoint.auth, values: snippet.auth }));\n } else {\n this.context.errors.add({\n severity: Severity.Warning,\n message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n });\n }\n }\n this.context.errors.scope(Scope.Headers);\n if (this.context.ir.headers != null && snippet.headers != null) {\n args.push(...this.getConstructorHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers }));\n }\n this.context.errors.unscope();\n return args;\n }\n\n private getWiremockTestConstructorArgs(): go.AstNode[] {\n return [\n go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"WithBaseURL\",\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [go.codeblock(WIREMOCK_BASE_URL)]\n })\n );\n })\n ];\n }\n\n private getConstructorAuthArg({\n auth,\n values\n }: {\n auth: FernIr.dynamic.Auth;\n values: FernIr.dynamic.AuthValues;\n }): go.AstNode {\n if (values.type !== auth.type) {\n this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n return TypeInst.nop();\n }\n switch (auth.type) {\n case \"basic\":\n return values.type === \"basic\" ? this.getConstructorBasicAuthArg({ auth, values }) : TypeInst.nop();\n case \"bearer\":\n return values.type === \"bearer\" ? this.getConstructorBearerAuthArg({ auth, values }) : TypeInst.nop();\n case \"header\":\n return values.type === \"header\" ? this.getConstructorHeaderAuthArg({ auth, values }) : TypeInst.nop();\n case \"oauth\":\n this.addWarning(\"The Go SDK doesn't support OAuth client credentials yet\");\n return TypeInst.nop();\n case \"inferred\":\n this.addWarning(\"The Go SDK Generator does not support Inferred auth scheme yet\");\n return TypeInst.nop();\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 getConstructorBasicAuthArg({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BasicAuth;\n values: FernIr.dynamic.BasicAuthValues;\n }): go.AstNode {\n return go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"WithBasicAuth\",\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [\n go.TypeInstantiation.string(values.username),\n go.TypeInstantiation.string(values.password)\n ]\n })\n );\n });\n }\n\n private getConstructorBaseUrlArg({\n baseUrl,\n environment\n }: {\n baseUrl: string | undefined;\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n }): go.AstNode | undefined {\n const baseUrlArg = this.getBaseUrlArg({ baseUrl, environment });\n if (baseUrlArg == null) {\n return undefined;\n }\n return go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"WithBaseURL\",\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [baseUrlArg]\n })\n );\n });\n }\n\n private getBaseUrlArg({\n baseUrl,\n environment\n }: {\n baseUrl: string | undefined;\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n }): go.AstNode | undefined {\n if (baseUrl != null && environment != null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"Cannot specify both baseUrl and environment options\"\n });\n return undefined;\n }\n if (baseUrl != null) {\n return go.TypeInstantiation.string(baseUrl);\n }\n if (environment != null) {\n if (this.context.isSingleEnvironmentID(environment)) {\n const typeReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n if (typeReference == null) {\n this.context.errors.add({\n severity: Severity.Warning,\n message: `Environment ${JSON.stringify(environment)} was not found`\n });\n return undefined;\n }\n return go.TypeInstantiation.reference(typeReference);\n }\n if (this.context.isMultiEnvironmentValues(environment)) {\n this.context.errors.add({\n severity: Severity.Warning,\n message:\n \"The Go SDK doesn't support a multi-environment client option yet; use the baseUrl option instead\"\n });\n }\n }\n return undefined;\n }\n\n private getConstructorBearerAuthArg({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BearerAuth;\n values: FernIr.dynamic.BearerAuthValues;\n }): go.AstNode {\n return go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: `With${auth.token.pascalCase.unsafeName}`,\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [go.TypeInstantiation.string(values.token)]\n })\n );\n });\n }\n\n private getConstructorHeaderAuthArg({\n auth,\n values\n }: {\n auth: FernIr.dynamic.HeaderAuth;\n values: FernIr.dynamic.HeaderAuthValues;\n }): go.AstNode {\n return go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: `With${auth.header.name.name.pascalCase.unsafeName}`,\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [\n this.context.dynamicTypeInstantiationMapper.convert({\n typeReference: auth.header.typeReference,\n value: values.value\n })\n ]\n })\n );\n });\n }\n\n private getConstructorHeaderArgs({\n headers,\n values\n }: {\n headers: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): go.AstNode[] {\n const args: go.AstNode[] = [];\n for (const header of headers) {\n const arg = this.getConstructorHeaderArg({ header, value: values.value });\n if (arg != null) {\n args.push(arg);\n }\n }\n return args;\n }\n\n private getConstructorHeaderArg({\n header,\n value\n }: {\n header: FernIr.dynamic.NamedParameter;\n value: unknown;\n }): go.AstNode | undefined {\n const typeInstantiation = this.context.dynamicTypeInstantiationMapper.convert({\n typeReference: header.typeReference,\n value\n });\n if (go.TypeInstantiation.isNop(typeInstantiation)) {\n // Literal header values (e.g. \"X-API-Version\") should not be included in the\n // client constructor.\n return undefined;\n }\n return go.codeblock((writer) => {\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: `With${header.name.name.pascalCase.unsafeName}`,\n importPath: this.context.getOptionImportPath()\n }),\n arguments_: [typeInstantiation]\n })\n );\n });\n }\n\n private getMethodArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): { otherArgs: go.AstNode[]; requestArg: go.AstNode | undefined } {\n switch (endpoint.request.type) {\n case \"inlined\":\n return this.getMethodArgsForInlinedRequest({ request: endpoint.request, snippet });\n case \"body\":\n return this.getMethodArgsForBodyRequest({ request: endpoint.request, snippet });\n default:\n assertNever(endpoint.request);\n }\n }\n\n private getMethodArgsForBodyRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.BodyRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): { otherArgs: go.AstNode[]; requestArg: go.AstNode | undefined } {\n const otherArgs: go.AstNode[] = [];\n\n this.context.errors.scope(Scope.PathParameters);\n const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n if (pathParameters.length > 0) {\n otherArgs.push(\n ...this.getPathParameters({ namedParameters: pathParameters, snippet }).map((field) => field.value)\n );\n }\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.RequestBody);\n const requestArg: go.AstNode | undefined =\n request.body != null\n ? this.getBodyRequestArg({ body: request.body, value: snippet.requestBody })\n : undefined;\n this.context.errors.unscope();\n\n return { otherArgs, requestArg };\n }\n\n private getBodyRequestArg({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBodyType;\n value: unknown;\n }): go.TypeInstantiation {\n switch (body.type) {\n case \"bytes\": {\n return this.getBytesBodyRequestArg({ value });\n }\n case \"typeReference\":\n return this.context.dynamicTypeInstantiationMapper.convert({ typeReference: body.value, value });\n default:\n assertNever(body);\n }\n }\n\n private getBytesBodyRequestArg({ value }: { value: unknown }): go.TypeInstantiation {\n if (typeof value !== \"string\") {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected bytes value to be a string, got ${typeof value}`\n });\n return go.TypeInstantiation.nop();\n }\n return go.TypeInstantiation.bytes(value as string);\n }\n\n private getMethodArgsForInlinedRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): { otherArgs: go.AstNode[]; requestArg: go.AstNode | undefined } {\n const otherArgs: go.AstNode[] = [];\n\n const { inlinePathParameters, inlineFileProperties } = {\n inlinePathParameters: this.context.customConfig?.inlinePathParameters ?? true,\n inlineFileProperties: this.context.customConfig?.inlineFileProperties ?? true\n };\n\n this.context.errors.scope(Scope.PathParameters);\n const pathParameterFields: go.StructField[] = [];\n const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n if (pathParameters.length > 0) {\n pathParameterFields.push(\n ...this.getPathParameters({\n namedParameters: pathParameters,\n snippet\n })\n );\n }\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.RequestBody);\n const filePropertyInfo = this.getFilePropertyInfo({ request, snippet });\n this.context.errors.unscope();\n\n if (!this.context.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n otherArgs.push(...pathParameterFields.map((field) => field.value));\n }\n\n if (!inlineFileProperties) {\n otherArgs.push(...filePropertyInfo.fileFields.map((field) => field.value));\n }\n\n const requestArg: go.AstNode | undefined = this.context.needsRequestParameter({\n request,\n inlinePathParameters,\n inlineFileProperties\n })\n ? this.getInlinedRequestArg({\n request,\n snippet,\n pathParameterFields: this.context.includePathParametersInWrappedRequest({\n request,\n inlinePathParameters\n })\n ? pathParameterFields\n : [],\n filePropertyInfo\n })\n : undefined;\n return { otherArgs, requestArg };\n }\n\n private getFilePropertyInfo({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): FilePropertyInfo {\n if (request.body == null || !this.context.isFileUploadRequestBody(request.body)) {\n return {\n fileFields: [],\n bodyPropertyFields: []\n };\n }\n return this.context.filePropertyMapper.getFilePropertyInfo({\n body: request.body,\n value: snippet.requestBody\n });\n }\n\n private getInlinedRequestArg({\n request,\n snippet,\n pathParameterFields,\n filePropertyInfo\n }: {\n request: FernIr.dynamic.InlinedRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n pathParameterFields: go.StructField[];\n filePropertyInfo: FilePropertyInfo;\n }): go.TypeInstantiation {\n this.context.errors.scope(Scope.QueryParameters);\n const queryParameters = this.context.associateQueryParametersByWireValue({\n parameters: request.queryParameters ?? [],\n values: snippet.queryParameters ?? {}\n });\n const queryParameterFields = queryParameters.map((queryParameter) => ({\n name: queryParameter.name.name.pascalCase.unsafeName,\n value: this.context.dynamicTypeInstantiationMapper.convert(queryParameter)\n }));\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.Headers);\n const headers = this.context.associateByWireValue({\n parameters: request.headers ?? [],\n values: snippet.headers ?? {}\n });\n const headerFields = headers.map((header) => ({\n name: header.name.name.pascalCase.unsafeName,\n value: this.context.dynamicTypeInstantiationMapper.convert(header)\n }));\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.RequestBody);\n const requestBodyFields =\n request.body != null\n ? this.getInlinedRequestBodyStructFields({\n body: request.body,\n value: snippet.requestBody,\n filePropertyInfo\n })\n : [];\n this.context.errors.unscope();\n\n return go.TypeInstantiation.structPointer({\n typeReference: go.typeReference({\n name: this.context.getMethodName(request.declaration.name),\n importPath: this.context.getImportPathForRequest(request.declaration.fernFilepath)\n }),\n fields: [...pathParameterFields, ...queryParameterFields, ...headerFields, ...requestBodyFields]\n });\n }\n\n private getInlinedRequestBodyStructFields({\n body,\n value,\n filePropertyInfo\n }: {\n body: FernIr.dynamic.InlinedRequestBody;\n value: unknown;\n filePropertyInfo: FilePropertyInfo;\n }): go.StructField[] {\n switch (body.type) {\n case \"properties\":\n return this.getInlinedRequestBodyPropertyStructFields({ parameters: body.value, value });\n case \"referenced\":\n return [this.getReferencedRequestBodyPropertyStructField({ body, value })];\n case \"fileUpload\":\n return this.getFileUploadRequestBodyStructFields({ filePropertyInfo });\n default:\n assertNever(body);\n }\n }\n\n private getFileUploadRequestBodyStructFields({\n filePropertyInfo\n }: {\n filePropertyInfo: FilePropertyInfo;\n }): go.StructField[] {\n if (this.context.customConfig?.inlineFileProperties) {\n return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n }\n return filePropertyInfo.bodyPropertyFields;\n }\n\n private getReferencedRequestBodyPropertyStructField({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBody;\n value: unknown;\n }): go.StructField {\n return {\n name: this.context.getTypeName(body.bodyKey),\n value: this.getReferencedRequestBodyPropertyTypeInstantiation({ body: body.bodyType, value })\n };\n }\n\n private getReferencedRequestBodyPropertyTypeInstantiation({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBodyType;\n value: unknown;\n }): go.TypeInstantiation {\n switch (body.type) {\n case \"bytes\":\n return this.getBytesBodyRequestArg({ value });\n case \"typeReference\":\n return this.context.dynamicTypeInstantiationMapper.convert({ typeReference: body.value, value });\n default:\n assertNever(body);\n }\n }\n\n private getInlinedRequestBodyPropertyStructFields({\n parameters,\n value\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n value: unknown;\n }): go.StructField[] {\n const fields: go.StructField[] = [];\n\n const bodyProperties = this.context.associateByWireValue({\n parameters,\n values: this.context.getRecord(value) ?? {}\n });\n for (const parameter of bodyProperties) {\n fields.push({\n name: this.context.getTypeName(parameter.name.name),\n value: this.context.dynamicTypeInstantiationMapper.convert(parameter)\n });\n }\n\n return fields;\n }\n\n private getPathParameters({\n namedParameters,\n snippet\n }: {\n namedParameters: FernIr.dynamic.NamedParameter[];\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.StructField[] {\n const args: go.StructField[] = [];\n\n const pathParameters = this.context.associateByWireValue({\n parameters: namedParameters,\n values: snippet.pathParameters ?? {}\n });\n for (const parameter of pathParameters) {\n args.push({\n name: this.context.getTypeName(parameter.name.name),\n value: this.context.dynamicTypeInstantiationMapper.convertToPointerIfPossible(parameter)\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 private getRootClientFuncInvocation(arguments_: go.AstNode[]): go.FuncInvocation {\n return go.invokeFunc({\n func: go.typeReference({\n name: this.context.getClientConstructorName(),\n importPath: this.context.getClientImportPath()\n }),\n arguments_\n });\n }\n\n private buildWiremockTestSetup({\n endpoint,\n errorCase\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n errorCase?: boolean;\n }): go.AstNode[] {\n const ENDPOINT_STUB_NAME = \"stub\";\n const usedSharedMainTest = true;\n return [\n ...(!usedSharedMainTest\n ? [\n // Initialize context\n go.codeblock((writer) => {\n writer.write(\"ctx := \");\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"Background\",\n importPath: \"context\"\n }),\n arguments_: [],\n multiline: false\n })\n );\n }),\n\n // Start WireMock container\n go.codeblock((writer) => {\n writer.write(`container, containerErr := `);\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"RunContainerAndStopOnCleanup\",\n importPath: \"github.com/wiremock/wiremock-testcontainers-go\"\n }),\n arguments_: [\n go.codeblock(\"ctx\"),\n go.codeblock(\"t\"),\n go.invokeFunc({\n func: go.typeReference({\n name: \"WithImage\",\n importPath: \"github.com/wiremock/wiremock-testcontainers-go\"\n }),\n arguments_: [\n go.TypeInstantiation.string(\"docker.io/wiremock/wiremock:3.9.1\")\n ],\n multiline: false\n })\n ],\n multiline: true\n })\n );\n }),\n\n // Check for container error\n go.codeblock((writer) => {\n writer.write(\"if containerErr != nil {\");\n writer.writeLine();\n writer.write(\" t.Fatal(containerErr)\");\n writer.writeLine();\n writer.write(\"}\");\n }),\n\n // Get WireMock URL from container\n go.codeblock((writer) => {\n writer.write(`${WIREMOCK_BASE_URL}, endpointErr := `);\n writer.writeNode(\n go.invokeMethod({\n on: go.codeblock(\"container\"),\n method: \"Endpoint\",\n arguments_: [go.codeblock(\"ctx\"), go.TypeInstantiation.string(\"\")],\n multiline: false\n })\n );\n }),\n\n go.invokeFunc({\n func: go.typeReference({\n name: \"NoError\",\n importPath: \"github.com/stretchr/testify/require\"\n }),\n arguments_: [\n go.codeblock(\"t\"),\n go.codeblock(\"endpointErr\"),\n go.TypeInstantiation.string(\"Failed to get WireMock container endpoint\")\n ],\n multiline: false\n }),\n\n go.codeblock((writer) => {\n writer.write(`${WIREMOCK_BASE_URL} = \"http://\" + ${WIREMOCK_BASE_URL}`);\n }),\n\n // Get WireMock client from container\n go.codeblock((writer) => {\n writer.write(`${WIREMOCK_CLIENT_VAR_NAME} := `);\n writer.writeNode(\n go.selector({\n on: go.codeblock(\"container\"),\n selector: go.codeblock(\"Client\")\n })\n );\n })\n ]\n : [])\n ];\n }\n\n private callClientMethodAndAssert({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): go.CodeBlock {\n return go.codeblock((writer) => {\n // IMPORTANT: currently not capturing the response/error values since its not trivial to determine\n // the number of return values for the method using the dynamic ir\n\n // Call the method and capture response and error\n // writer.write(\"_, invocationErr := \");\n this.writeMethodInvocation({ writer, endpoint, snippet });\n writer.writeLine();\n writer.writeLine();\n\n // Verify WireMock request was matched\n writer.write(\"ok, countErr := \");\n writer.writeNode(\n go.invokeMethod({\n on: go.codeblock(WIREMOCK_CLIENT_VAR_NAME),\n method: \"Verify\",\n arguments_: [\n go.invokeMethod({\n on: go.codeblock(\"stub\"),\n method: \"Request\",\n arguments_: [],\n multiline: false\n }),\n go.codeblock(\"1\")\n ],\n multiline: false\n })\n );\n writer.writeLine();\n\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"NoError\",\n importPath: \"github.com/stretchr/testify/require\"\n }),\n arguments_: [\n go.codeblock(\"t\"),\n go.codeblock(\"countErr\"),\n go.TypeInstantiation.string(\"Failed to verify WireMock request was matched\")\n ],\n multiline: false\n })\n );\n writer.writeLine();\n\n writer.writeNode(\n go.invokeFunc({\n func: go.typeReference({\n name: \"True\",\n importPath: \"github.com/stretchr/testify/require\"\n }),\n arguments_: [\n go.codeblock(\"t\"),\n go.codeblock(\"ok\"),\n go.TypeInstantiation.string(\"WireMock request was not matched\")\n ],\n multiline: false\n })\n );\n writer.writeLine();\n\n // IMPORTANT: currently not asserting that the call succeeded since its not trivial to determine\n // the number of return values for the method using the dynamic ir\n\n // Verify the call succeeded (may not assert this at all and only assert the WireMock request was matched)\n // Since we don't necessarily have valid response bodies in our WireMock stubs (so type casting will fail)\n // writer.writeNode(\n // go.invokeFunc({\n // func: go.typeReference({\n // name: \"NoError\",\n // importPath: \"github.com/stretchr/testify/require\"\n // }),\n // arguments_: [\n // go.codeblock(\"t\"),\n // go.codeblock(\"invocationErr\"),\n // go.TypeInstantiation.string(`${this.getMethod({ endpoint })} call should succeed with WireMock`)\n // ],\n // multiline: false\n // })\n // );\n // writer.writeLine();\n });\n }\n}\n"],"mappings":"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","names":["init_process","init_buffer","SNIPPET_PACKAGE_NAME","SNIPPET_IMPORT_PATH","SNIPPET_FUNC_NAME","CLIENT_VAR_NAME","TypeInst","go_exports","WIREMOCK_BASE_URL","WIREMOCK_CLIENT_VAR_NAME","EndpointSnippetGenerator","context","formatter","__publicField","endpoint","request","options","_a","_b","_c","snippet","writer","node","otherArgs","requestArg","requestRef","args","baseUrlArg","Severity","Scope","auth","values","assertNever","message","baseUrl","environment","typeReference","headers","header","arg","value","typeInstantiation","pathParameters","field","body","_d","_e","_f","inlinePathParameters","inlineFileProperties","pathParameterFields","filePropertyInfo","queryParameterFields","queryParameter","headerFields","requestBodyFields","parameters","fields","bodyProperties","parameter","namedParameters","val","arguments_","errorCase","ENDPOINT_STUB_NAME"]}
@@ -1,2 +0,0 @@
1
- import{b as c}from"./chunk-VCNL2JWU.js";import{e as p,f as l,g as d,h as s,j as i}from"./chunk-GUJUKQKZ.js";l();d();var y=class{constructor({context:e}){p(this,"context");this.context=e}convert(e){if(e.value===null&&!this.context.isNullable(e.typeReference)&&this.context.errors.add({severity:c.Critical,message:"Expected non-null value, but got null"}),e.value==null)return i.TypeInstantiation.nop();switch(e.typeReference.type){case"list":return this.convertList({list:e.typeReference.value,value:e.value});case"literal":return i.TypeInstantiation.nop();case"map":return this.convertMap({map:e.typeReference,value:e.value});case"named":{let n=this.context.resolveNamedType({typeId:e.typeReference.value});return n==null?i.TypeInstantiation.nop():this.convertNamed({named:n,value:e.value,as:e.as})}case"nullable":return i.TypeInstantiation.optional(this.convert({typeReference:e.typeReference.value,value:e.value,as:e.as}));case"optional":return i.TypeInstantiation.optional(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.convertList({list:e.typeReference.value,value:e.value});case"unknown":return this.convertUnknown({value:e.value});default:s(e.typeReference)}}convertToPointerIfPossible(e){let n=this.convert(e);switch(e.typeReference.type){case"named":{let r=this.context.resolveNamedType({typeId:e.typeReference.value});return(r==null?void 0:r.type)==="enum"?i.TypeInstantiation.reference(i.invokeMethod({on:n,method:"Ptr",arguments_:[]})):n}default:return n}}convertList({list:e,value:n}){return Array.isArray(n)?i.TypeInstantiation.slice({valueType:this.context.dynamicTypeMapper.convert({typeReference:e}),values:n.map((r,t)=>{this.context.errors.scope({index:t});try{return this.convert({typeReference:e,value:r})}finally{this.context.errors.unscope()}})}):(this.context.errors.add({severity:c.Critical,message:`Expected array but got: ${typeof n}`}),i.TypeInstantiation.nop())}convertMap({map:e,value:n}){return typeof n!="object"||n==null?(this.context.errors.add({severity:c.Critical,message:`Expected object but got: ${n==null?"null":typeof n}`}),i.TypeInstantiation.nop()):i.TypeInstantiation.map({keyType:this.context.dynamicTypeMapper.convert({typeReference:e.key}),valueType:this.context.dynamicTypeMapper.convert({typeReference:e.value}),entries:Object.entries(n).map(([r,t])=>{this.context.errors.scope(r);try{return{key:this.convert({typeReference:e.key,value:r,as:"key"}),value:this.convert({typeReference:e.value,value:t})}}finally{this.context.errors.unscope()}})})}convertNamed({named:e,value:n,as:r}){switch(e.type){case"alias":return this.convertAlias({aliasType:e,value:n,as:r});case"discriminatedUnion":return this.convertDiscriminatedUnion({discriminatedUnion:e,value:n});case"enum":return this.convertEnum({enum_:e,value:n});case"object":return this.convertObject({object_:e,value:n});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:e,value:n});default:s(e)}}convertAlias({aliasType:e,value:n,as:r}){switch(e.typeReference.type){case"literal":return i.TypeInstantiation.reference(i.invokeFunc({func:i.typeReference({name:this.context.getTypeName(e.declaration.name),importPath:this.context.getImportPath(e.declaration.fernFilepath)}),arguments_:[this.convertLiteralValue(e.typeReference.value)]}));default:return this.convert({typeReference:e.typeReference,value:n,as:r})}}convertLiteralValue(e){switch(e.type){case"boolean":return i.TypeInstantiation.bool(e.value);case"string":return i.TypeInstantiation.string(e.value);default:s(e)}}convertDiscriminatedUnion({discriminatedUnion:e,value:n}){let r=this.context.getGoTypeReferenceFromDeclaration({declaration:e.declaration}),t=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:e,value:n});if(t==null)return i.TypeInstantiation.nop();let a=t.singleDiscriminatedUnionType,o=this.getBaseFields({discriminatedUnionTypeInstance:t,singleDiscriminatedUnionType:a});switch(a.type){case"samePropertiesAsObject":{let u=this.context.resolveNamedType({typeId:a.typeId});return u==null?i.TypeInstantiation.nop():i.TypeInstantiation.structPointer({typeReference:r,fields:[{name:this.context.getTypeName(a.discriminantValue.name),value:this.convertNamed({named:u,value:t.value})},...o]})}case"singleProperty":{let u=this.context.getRecord(t.value);if(u==null)return i.TypeInstantiation.nop();try{return this.context.errors.scope(a.discriminantValue.wireValue),i.TypeInstantiation.structPointer({typeReference:r,fields:[{name:this.context.getTypeName(a.discriminantValue.name),value:this.convert({typeReference:a.typeReference,value:u[a.discriminantValue.wireValue]})},...o]})}finally{this.context.errors.unscope()}}case"noProperties":return i.TypeInstantiation.structPointer({typeReference:r,fields:[{name:this.context.getTypeName(t.discriminantValue.name),value:i.TypeInstantiation.string(a.discriminantValue.wireValue)},...o]});default:s(a)}}getBaseFields({discriminatedUnionTypeInstance:e,singleDiscriminatedUnionType:n}){var t,a;return this.context.associateByWireValue({parameters:(t=n.properties)!=null?t:[],values:(a=this.context.getRecord(e.value))!=null?a:{},ignoreMissingParameters:!0}).map(o=>{this.context.errors.scope(o.name.wireValue);try{return{name:this.context.getTypeName(o.name.name),value:this.convert(o)}}finally{this.context.errors.unscope()}})}convertObject({object_:e,value:n}){var t;let r=this.context.associateByWireValue({parameters:e.properties,values:(t=this.context.getRecord(n))!=null?t:{}});return i.TypeInstantiation.structPointer({typeReference:i.typeReference({name:this.context.getTypeName(e.declaration.name),importPath:this.context.getImportPath(e.declaration.fernFilepath)}),fields:r.map(a=>{this.context.errors.scope(a.name.wireValue);try{return{name:this.context.getTypeName(a.name.name),value:this.convert(a)}}finally{this.context.errors.unscope()}})})}convertEnum({enum_:e,value:n}){let r=this.getEnumValueName({enum_:e,value:n});return r==null?i.TypeInstantiation.nop():i.TypeInstantiation.enum(i.typeReference({name:r,importPath:this.context.getImportPath(e.declaration.fernFilepath)}))}getEnumValueName({enum_:e,value:n}){if(typeof n!="string"){this.context.errors.add({severity:c.Critical,message:`Expected enum value string, got: ${typeof n}`});return}let r=e.values.find(t=>t.wireValue===n);if(r==null){this.context.errors.add({severity:c.Critical,message:`An enum value named "${n}" does not exist in this context`});return}return`${this.context.getTypeName(e.declaration.name)}${this.context.getTypeName(r.name)}`}convertUndiscriminatedUnion({undiscriminatedUnion:e,value:n}){let r=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:e,value:n});if(r==null)return i.TypeInstantiation.nop();let t=this.getUndiscriminatedUnionFieldName({typeReference:r.valueTypeReference});return t==null?i.TypeInstantiation.nop():i.TypeInstantiation.structPointer({typeReference:this.context.getGoTypeReferenceFromDeclaration({declaration:e.declaration}),fields:[{name:t,value:r.typeInstantiation}]})}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:e,value:n}){for(let r of e.types)try{let t=this.convert({typeReference:r,value:n});return{valueTypeReference:r,typeInstantiation:t}}catch(t){continue}this.context.errors.add({severity:c.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof n}" value`})}getUndiscriminatedUnionFieldName({typeReference:e}){switch(e.type){case"list":return this.getUndiscriminatedUnionFieldNameForList({list:e});case"literal":return this.getUndiscriminatedUnionFieldNameForLiteral({literal:e.value});case"map":return this.getUndiscriminatedUnionFieldNameForMap({map:e});case"named":{let n=this.context.resolveNamedType({typeId:e.value});return n==null?void 0:this.context.getTypeName(n.declaration.name)}case"optional":return this.getUndiscriminatedUnionFieldNameForOptional({typeReference:e});case"nullable":return this.getUndiscriminatedUnionFieldNameForOptional({typeReference:e});case"primitive":return this.getUndiscriminatedUnionFieldNameForPrimitive({primitive:e.value});case"set":return this.getUndiscriminatedUnionFieldNameForSet({set:e});case"unknown":return"Unknown";default:s(e)}}getUndiscriminatedUnionFieldNameForList({list:e}){let n=this.getUndiscriminatedUnionFieldName({typeReference:e});if(n!=null)return`${n}List`}getUndiscriminatedUnionFieldNameForMap({map:e}){let n=this.getUndiscriminatedUnionFieldName({typeReference:e.key});if(n==null)return;let r=this.getUndiscriminatedUnionFieldName({typeReference:e.value});if(r!=null)return`${n}${r}Map`}getUndiscriminatedUnionFieldNameForOptional({typeReference:e}){let n=this.getUndiscriminatedUnionFieldName({typeReference:e});if(n!=null)return`${n}Optional`}getUndiscriminatedUnionFieldNameForSet({set:e}){let n=this.getUndiscriminatedUnionFieldName({typeReference:e});if(n!=null)return`${n}Set`}getUndiscriminatedUnionFieldNameForLiteral({literal:e}){switch(e.type){case"boolean":return e.value?"TrueLiteral":"FalseLiteral";case"string":return`${e.value}StringLiteral`;default:s(e)}}getUndiscriminatedUnionFieldNameForPrimitive({primitive:e}){switch(e){case"INTEGER":case"UINT":return"Integer";case"LONG":case"UINT_64":return"Long";case"FLOAT":case"DOUBLE":return"Double";case"BOOLEAN":return"Boolean";case"BIG_INTEGER":case"STRING":return"String";case"UUID":return"Uuid";case"DATE":return"Date";case"DATE_TIME":return"DateTime";case"BASE_64":return"Base64";default:s(e)}}convertUnknown({value:e}){return i.TypeInstantiation.any(e)}convertPrimitive({primitive:e,value:n,as:r}){switch(e){case"INTEGER":case"UINT":{let t=this.getValueAsNumber({value:n,as:r});return t==null?i.TypeInstantiation.nop():i.TypeInstantiation.int(t)}case"LONG":case"UINT_64":{let t=this.getValueAsNumber({value:n,as:r});return t==null?i.TypeInstantiation.nop():i.TypeInstantiation.int64(t)}case"FLOAT":case"DOUBLE":{let t=this.getValueAsNumber({value:n,as:r});return t==null?i.TypeInstantiation.nop():i.TypeInstantiation.float64(t)}case"BOOLEAN":{let t=this.getValueAsBoolean({value:n,as:r});return t==null?i.TypeInstantiation.nop():i.TypeInstantiation.bool(t)}case"STRING":{let t=this.context.getValueAsString({value:n});return t==null?i.TypeInstantiation.nop():i.TypeInstantiation.string(t)}case"DATE":{let t=this.context.getValueAsString({value:n});return t==null?i.TypeInstantiation.nop():i.TypeInstantiation.date(t)}case"DATE_TIME":{let t=this.context.getValueAsString({value:n});if(t==null)return i.TypeInstantiation.nop();let a=this.normalizeDateTimeString(t);return i.TypeInstantiation.dateTime(a)}case"UUID":{let t=this.context.getValueAsString({value:n});return t==null?i.TypeInstantiation.nop():i.TypeInstantiation.uuid(t)}case"BASE_64":{let t=this.context.getValueAsString({value:n});return t==null?i.TypeInstantiation.nop():i.TypeInstantiation.bytes(t)}case"BIG_INTEGER":{let t=this.context.getValueAsString({value:n});return t==null?i.TypeInstantiation.nop():i.TypeInstantiation.string(t)}default:s(e)}}getValueAsNumber({value:e,as:n}){let r=n==="key"&&typeof e=="string"?Number(e):e;return this.context.getValueAsNumber({value:r})}getValueAsBoolean({value:e,as:n}){let r=n==="key"?typeof e=="string"?e==="true":e==="false"?!1:e:e;return this.context.getValueAsBoolean({value:r})}normalizeDateTimeString(e){return/^\d{4}-\d{2}-\d{2}$/.test(e)?`${e}T00:00:00Z`:/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(e)?`${e}Z`:e}};export{y as a};
2
- //# sourceMappingURL=chunk-FD44EP2P.js.map