@fern-api/java-dynamic-snippets 0.0.8 → 0.0.9

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.
@@ -1,2 +1,2 @@
1
- import{a}from"./chunk-ATHAOWL4.js";import"./chunk-PSRNJYSA.js";import"./chunk-Z267S5KO.js";import"./chunk-V3XTHNV6.js";import"./chunk-DD37GKIE.js";import"./chunk-RVPVA4ZP.js";import"./chunk-4CABHDQV.js";import"./chunk-JWUP3MFF.js";import"./chunk-2U3YQWRZ.js";export{a as DynamicSnippetsGenerator};
1
+ import{a}from"./chunk-5HAATWAD.js";import"./chunk-PRMFZOQO.js";import"./chunk-Z267S5KO.js";import"./chunk-V3XTHNV6.js";import"./chunk-DD37GKIE.js";import"./chunk-RVPVA4ZP.js";import"./chunk-4CABHDQV.js";import"./chunk-JWUP3MFF.js";import"./chunk-2U3YQWRZ.js";export{a as DynamicSnippetsGenerator};
2
2
  //# sourceMappingURL=DynamicSnippetsGenerator.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"./chunk-PSRNJYSA.js";import"./chunk-DD37GKIE.js";import"./chunk-JWUP3MFF.js";import"./chunk-2U3YQWRZ.js";export{a as EndpointSnippetGenerator};
1
+ import{a}from"./chunk-PRMFZOQO.js";import"./chunk-DD37GKIE.js";import"./chunk-JWUP3MFF.js";import"./chunk-2U3YQWRZ.js";export{a as EndpointSnippetGenerator};
2
2
  //# sourceMappingURL=EndpointSnippetGenerator.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"./chunk-PSRNJYSA.js";import{a as i}from"./chunk-Z267S5KO.js";import{a as o}from"./chunk-DD37GKIE.js";import{f as t,h as r,i as p}from"./chunk-2U3YQWRZ.js";r();p();var s=class extends o{constructor({ir:e,config:n,options:c={}}){super(new i({ir:e,config:n,options:c}));t(this,"formatter")}async generate(e,n={}){return super.generate(e,n)}generateSync(e,n={}){return super.generateSync(e,n)}createSnippetGenerator(e){return new a({context:e})}};export{s as a};
2
- //# sourceMappingURL=chunk-ATHAOWL4.js.map
1
+ import{a}from"./chunk-PRMFZOQO.js";import{a as i}from"./chunk-Z267S5KO.js";import{a as o}from"./chunk-DD37GKIE.js";import{f as t,h as r,i as p}from"./chunk-2U3YQWRZ.js";r();p();var s=class extends o{constructor({ir:e,config:n,options:c={}}){super(new i({ir:e,config:n,options:c}));t(this,"formatter")}async generate(e,n={}){return super.generate(e,n)}generateSync(e,n={}){return super.generateSync(e,n)}createSnippetGenerator(e){return new a({context:e})}};export{s as a};
2
+ //# sourceMappingURL=chunk-5HAATWAD.js.map
@@ -0,0 +1,2 @@
1
+ import{b as m,d as g,e as u}from"./chunk-DD37GKIE.js";import{a as y,d as n}from"./chunk-JWUP3MFF.js";import{f as v,h as A,i as b}from"./chunk-2U3YQWRZ.js";A();b();var q="com.example.usage",M="Example",E="main",S="args",T="client",j={type:"primitive",value:"STRING"};function k(h){if(h.type==="optional"&&h.value.type==="list"){let t=h.value.value;if(t.type==="optional")return{type:"optional",value:{type:"list",value:t.value}}}if(h.type==="list"){let e=h.value;if(e.type==="optional")return{type:"list",value:e.value}}return h}var C=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:r}){var i;let a=this.getConfig(r);return await this.buildCodeBlock({endpoint:e,snippet:t,options:r}).toStringAsync({packageName:(i=a.fullStylePackageName)!=null?i:q,customConfig:this.context.customConfig,formatter:this.formatter})}generateSnippetSync({endpoint:e,request:t,options:r}){var i;let a=this.getConfig(r);return this.buildCodeBlock({endpoint:e,snippet:t,options:r}).toString({packageName:(i=a.fullStylePackageName)!=null?i:q,customConfig:this.context.customConfig,formatter:this.formatter})}buildCodeBlock({endpoint:e,snippet:t,options:r}){let a=n.codeblock(i=>{i.writeNodeStatement(this.constructClient({endpoint:e,snippet:t})),i.newLine(),i.writeNodeStatement(this.callMethod({endpoint:e,snippet:t}))}),s=this.getStyle(r);switch(s){case g.Concise:return a;case g.Full:return this.buildFullCodeBlock({body:a,options:r});default:y(s)}}constructClient({endpoint:e,snippet:t}){return n.codeblock(r=>{r.writeNode(this.context.getRootClientClassReference()),r.write(` ${T} = `),r.writeNode(n.TypeLiteral.builder({classReference:this.context.getRootClientClassReference(),parameters:this.getRootClientBuilderArgs({endpoint:e,snippet:t})}))})}buildFullCodeBlock({body:e,options:t}){var i;let r=this.getConfig(t),a=n.class_({name:(i=r.fullStyleClassName)!=null?i:M,access:n.Access.Public}),s=n.parameter({name:S,type:n.Type.array(n.Type.string())});return a.addMethod(n.method({name:E,access:n.Access.Public,static_:!0,parameters:[s],body:e})),a}getRootClientBuilderArgs({endpoint:e,snippet:t}){var o,p;let r=[];e.auth!=null&&(t.auth!=null?r.push(...this.getRootClientAuthArgs({auth:e.auth,values:t.auth})):this.context.errors.add({severity:m.Warning,message:`Auth with ${e.auth.type} configuration is required for this endpoint`}));let a=this.getRootClientBaseUrlArg({baseUrl:t.baseURL,environment:t.environment});a!=null&&r.push(a),this.context.errors.scope(u.Headers),this.context.ir.headers!=null&&t.headers!=null&&r.push(...this.getRootClientHeaderArgs({headers:this.context.ir.headers,values:t.headers})),this.context.errors.unscope();let s=new Set;if([...(o=this.context.ir.pathParameters)!=null?o:[],...(p=e.request.pathParameters)!=null?p:[]].forEach(l=>{l.variable!=null&&s.add(l.variable)}),this.context.ir.variables!=null&&this.context.ir.variables.length>0){for(let l of this.context.ir.variables)if(s.has(l.id)){let c=l.name.camelCase.unsafeName;r.push({name:c,value:n.TypeLiteral.string(`YOUR_${l.name.screamingSnakeCase.unsafeName}`)})}}if(this.context.errors.scope(u.PathParameters),this.context.ir.pathParameters!=null&&this.context.ir.pathParameters.length>0){let l=this.context.ir.pathParameters.filter(c=>c.variable==null);l.length>0&&r.push(...this.getPathParameters({namedParameters:l,snippet:t}))}return this.context.errors.unscope(),r}getRootClientBaseUrlArg({baseUrl:e,environment:t}){var r;if(e!=null&&t!=null){this.context.errors.add({severity:m.Critical,message:"Cannot specify both baseUrl and environment options"});return}if(e!=null){if(((r=this.context.ir.environments)==null?void 0:r.environments.type)==="multipleBaseUrls"){this.context.errors.add({severity:m.Critical,message:"The Java SDK doesn't support a baseUrl when multiple URL environments are configured"});return}return{name:"url",value:n.TypeLiteral.string(e)}}if(t!=null){if(this.context.isSingleEnvironmentID(t)){let a=this.context.getEnvironmentTypeReferenceFromID(t);if(a==null){this.context.errors.add({severity:m.Warning,message:`Environment ${JSON.stringify(t)} was not found`});return}return{name:"environment",value:n.TypeLiteral.reference(a)}}if(this.context.isMultiEnvironmentValues(t))return this.context.validateMultiEnvironmentUrlValues(t)?{name:"environment",value:n.TypeLiteral.reference(n.instantiateClass({classReference:this.context.getEnvironmentClassReference(),arguments_:Object.values(t).map(a=>this.context.dynamicTypeLiteralMapper.convert({typeReference:j,value:a}))}))}:void 0}}getRootClientAuthArgs({auth:e,values:t}){if(t.type!==e.type)return this.addError(this.context.newAuthMismatchError({auth:e,values:t}).message),[];switch(e.type){case"basic":return t.type==="basic"?this.getRootClientBasicAuthArgs({auth:e,values:t}):[];case"bearer":return t.type==="bearer"?this.getRootClientBearerAuthArgs({auth:e,values:t}):[];case"header":return t.type==="header"?this.getRootClientHeaderAuthArgs({auth:e,values:t}):[];case"oauth":return t.type==="oauth"?this.getRootClientOAuthArgs({auth:e,values:t}):[];case"inferred":return this.addWarning("The Java SDK Generator does not support Inferred auth scheme yet"),[];default:y(e)}}addError(e){this.context.errors.add({severity:m.Critical,message:e})}addWarning(e){this.context.errors.add({severity:m.Warning,message:e})}getRootClientBasicAuthArgs({auth:e,values:t}){return[{name:"credentials",value:n.TypeLiteral.raw(`"${t.username}", "${t.password}"`)}]}getRootClientBearerAuthArgs({auth:e,values:t}){return[{name:this.context.getMethodName(e.token),value:n.TypeLiteral.string(t.token)}]}getRootClientHeaderAuthArgs({auth:e,values:t}){return[{name:this.context.getMethodName(e.header.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:e.header.typeReference,value:t.value})}]}getRootClientOAuthArgs({auth:e,values:t}){return[{name:this.context.getMethodName(e.clientId),value:n.TypeLiteral.string(t.clientId)},{name:this.context.getMethodName(e.clientSecret),value:n.TypeLiteral.string(t.clientSecret)}]}getRootClientHeaderArgs({headers:e,values:t}){let r=[];for(let a of e){let s=this.getRootClientHeaderArg({header:a,value:t.value});s!=null&&r.push({name:this.context.getMethodName(a.name.name),value:s})}return r}getRootClientHeaderArg({header:e,value:t}){let r=this.context.dynamicTypeLiteralMapper.convert({typeReference:e.typeReference,value:t});if(!n.TypeLiteral.isNop(r))return r}callMethod({endpoint:e,snippet:t}){return n.invokeMethod({on:n.codeblock(T),method:this.getMethod({endpoint:e}),arguments_:this.getMethodArgs({endpoint:e,snippet:t})})}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:y(e.request)}}getMethodArgsForBodyRequest({request:e,snippet:t}){var i;let r=[];this.context.errors.scope(u.PathParameters);let a=((i=e.pathParameters)!=null?i:[]).filter(o=>o.variable==null);a.length>0&&r.push(...this.getPathParameters({namedParameters:a,snippet:t}).map(o=>o.value)),this.context.errors.unscope(),this.context.errors.scope(u.RequestBody),e.body!=null&&r.push(this.getBodyRequestArg({body:e.body,value:t.requestBody})),this.context.errors.unscope();let s=this.getRequestOptionsArg({request:e,snippet:t});return s!=null&&r.push(s),r}usesOptionalNullable(){var e;return((e=this.context.customConfig)==null?void 0:e["collapse-optional-nullable"])===!0}getBodyRequestArg({body:e,value:t}){switch(e.type){case"bytes":return this.getBytesBodyRequestArg({value:t});case"typeReference":{if(e.value.type==="optional"){if(t==null)return this.usesOptionalNullable()?this.context.getOptionalNullableAbsent():n.TypeLiteral.reference(n.invokeMethod({on:n.classReference({name:"Optional",packageName:"java.util"}),method:"empty",arguments_:[]}));let r=this.context.dynamicTypeLiteralMapper.convert({typeReference:e.value.value,value:t,as:"request"}),a=r.toString({packageName:"com.example",customConfig:this.context.customConfig});return a.includes("Optional.empty()")||a.includes("OptionalNullable.absent()")?r:this.usesOptionalNullable()?this.context.getOptionalNullableOf(r):n.TypeLiteral.optional({value:r,useOf:!0})}return this.context.dynamicTypeLiteralMapper.convert({typeReference:e.value,value:t,as:"request"})}default:y(e)}}getBytesBodyRequestArg({value:e}){return e==null?n.TypeLiteral.bytes(""):typeof e!="string"?(this.context.errors.add({severity:m.Critical,message:`Expected bytes value to be a string, got ${typeof e}`}),n.TypeLiteral.nop()):n.TypeLiteral.bytes(e)}getMethodArgsForInlinedRequest({request:e,snippet:t}){var l;let r=[],{inlinePathParameters:a,inlineFileProperties:s}={inlinePathParameters:this.context.shouldInlinePathParameters(),inlineFileProperties:this.context.shouldInlineFileProperties()};this.context.errors.scope(u.PathParameters);let i=[],o=((l=e.pathParameters)!=null?l:[]).filter(c=>c.variable==null);o.length>0&&i.push(...this.getPathParameters({namedParameters:o,snippet:t})),this.context.errors.unscope(),this.context.errors.scope(u.RequestBody);let p=this.getFilePropertyInfo({request:e,snippet:t});return this.context.errors.unscope(),this.context.includePathParametersInWrappedRequest({request:e,inlinePathParameters:a})||r.push(...i.map(c=>c.value)),s||r.push(...p.fileFields.map(c=>c.value)),r.push(this.getInlinedRequestArg({request:e,snippet:t,pathParameterFields:this.context.includePathParametersInWrappedRequest({request:e,inlinePathParameters:a})?i:[],filePropertyInfo:p})),r}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:a}){var P,R,x,F,I,B;this.context.errors.scope(u.QueryParameters);let i=this.context.associateQueryParametersByWireValue({parameters:(P=e.queryParameters)!=null?P:[],values:(R=t.queryParameters)!=null?R:{}}).filter(d=>!this.context.isDirectLiteral(d.typeReference)),p=this.context.sortTypeInstancesByRequiredFirst(i,(x=e.queryParameters)!=null?x:[]).map(d=>({name:this.context.getMethodName(d.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:k(d.typeReference),value:d.value,as:"request"})}));this.context.errors.unscope(),this.context.errors.scope(u.Headers);let c=this.context.associateByWireValue({parameters:(F=e.headers)!=null?F:[],values:(I=t.headers)!=null?I:{}}).filter(d=>!this.context.isDirectLiteral(d.typeReference)),N=this.context.sortTypeInstancesByRequiredFirst(c,(B=e.headers)!=null?B:[]).map(d=>({name:this.context.getMethodName(d.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:d.typeReference,value:d.value,as:"request"})}));this.context.errors.unscope(),this.context.errors.scope(u.RequestBody);let L=e.body!=null?this.getInlinedRequestBodyBuilderParameters({body:e.body,value:t.requestBody,filePropertyInfo:a}):[];return this.context.errors.unscope(),n.TypeLiteral.builder({classReference:n.classReference({name:this.context.getClassName(e.declaration.name),packageName:this.context.getRequestsPackageName(e.declaration.fernFilepath)}),parameters:[...r,...N,...p,...L]})}getRequestOptionsArg({request:e,snippet:t}){var p,l,c;let r="headers"in e?(p=e.headers)!=null?p:[]:[];if(r.length===0||Object.keys((l=t.headers)!=null?l:{}).length===0)return;this.context.errors.scope(u.Headers);let a=this.context.associateByWireValue({parameters:r,values:(c=t.headers)!=null?c:{}});if(this.context.errors.unscope(),a.length===0)return;let s=n.classReference({name:"RequestOptions",packageName:this.context.getCorePackageName()}),i=n.invokeMethod({on:s,method:"builder",arguments_:[]});for(let f of a)i=n.invokeMethod({on:i,method:"addHeader",arguments_:[n.TypeLiteral.string(f.name.wireValue),this.context.dynamicTypeLiteralMapper.convert(f)]});let o=n.invokeMethod({on:i,method:"build",arguments_:[]});return n.TypeLiteral.reference(o)}getInlinedRequestBodyBuilderParameters({body:e,value:t,filePropertyInfo:r}){switch(e.type){case"properties":return this.getInlinedRequestBodyPropertyBuilderParameters({parameters:e.value,value:t});case"referenced":return[this.getReferencedRequestBodyPropertyBuilderParameter({body:e,value:t})];case"fileUpload":return this.getFileUploadRequestBodyBuilderParameters({filePropertyInfo:r});default:y(e)}}getFileUploadRequestBodyBuilderParameters({filePropertyInfo:e}){return this.context.shouldInlineFileProperties()?[...e.fileFields,...e.bodyPropertyFields]:e.bodyPropertyFields}getReferencedRequestBodyPropertyBuilderParameter({body:e,value:t}){return{name:this.context.getMethodName(e.bodyKey),value:this.getReferencedRequestBodyPropertyTypeLiteral({body:e.bodyType,value:t})}}getReferencedRequestBodyPropertyTypeLiteral({body:e,value:t}){switch(e.type){case"bytes":return this.getBytesBodyRequestArg({value:t});case"typeReference":return this.context.dynamicTypeLiteralMapper.convert({typeReference:e.value,value:t,as:"request"});default:y(e)}}getInlinedRequestBodyPropertyBuilderParameters({parameters:e,value:t}){var i;let a=this.context.associateByWireValue({parameters:e,values:(i=this.context.getRecord(t))!=null?i:{}}).filter(o=>!this.context.isDirectLiteral(o.typeReference));return this.context.sortTypeInstancesByRequiredFirst(a,e).map(o=>({name:this.context.getMethodName(o.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:o.typeReference,value:o.value,as:"request"})}))}getPathParameters({namedParameters:e,snippet:t}){var s;let r=[],a=this.context.associateByWireValue({parameters:e,values:(s=t.pathParameters)!=null?s:{}});for(let i of a)r.push({name:this.context.getMethodName(i.name.name),value:this.context.dynamicTypeLiteralMapper.convert(i)});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)}getStyle(e){var t,r;return(r=(t=e.style)!=null?t:this.context.options.style)!=null?r:g.Full}getConfig(e){var t,r;return(r=(t=e.config)!=null?t:this.context.options.config)!=null?r:{}}};export{C as a};
2
+ //# sourceMappingURL=chunk-PRMFZOQO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/EndpointSnippetGenerator.ts"],"sourcesContent":["import { AbstractFormatter, Options, Scope, Severity, Style } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { java } from \"@fern-api/java-ast\";\n\nimport { Config } from \"./Config\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper\";\n\nconst SNIPPET_PACKAGE_NAME = \"com.example.usage\";\nconst SNIPPET_CLASS_NAME = \"Example\";\nconst SNIPPET_METHOD_NAME = \"main\";\nconst SNIPPET_METHOD_ARG = \"args\";\nconst CLIENT_VAR_NAME = \"client\";\nconst STRING_TYPE_REFERENCE: FernIr.dynamic.TypeReference = {\n type: \"primitive\",\n value: \"STRING\"\n};\n\n/**\n * For query parameters with allow-multiple and optional types, the Dynamic IR produces\n * optional<list<optional<T>>> or list<optional<T>>. However, Java SDK builders have\n * convenience overloads that accept List<T> directly. This function unwraps the optional\n * from list items so we generate List<T> instead of List<Optional<T>>.\n *\n * Note: We only unwrap \"optional\", not \"nullable\". Nullable list items (list<nullable<T>>)\n * are a distinct case where items genuinely can be null, and the SDK expects List<Optional<T>>.\n */\nfunction unwrapOptionalFromListItems(typeReference: FernIr.dynamic.TypeReference): FernIr.dynamic.TypeReference {\n if (typeReference.type === \"optional\" && typeReference.value.type === \"list\") {\n const listType = typeReference.value;\n const itemType = listType.value;\n if (itemType.type === \"optional\") {\n return {\n type: \"optional\",\n value: {\n type: \"list\",\n value: itemType.value\n }\n };\n }\n }\n if (typeReference.type === \"list\") {\n const itemType = typeReference.value;\n if (itemType.type === \"optional\") {\n return {\n type: \"list\",\n value: itemType.value\n };\n }\n }\n return typeReference;\n}\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 config = this.getConfig(options);\n const code = this.buildCodeBlock({ endpoint, snippet: request, options });\n return await code.toStringAsync({\n packageName: config.fullStylePackageName ?? SNIPPET_PACKAGE_NAME,\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 config = this.getConfig(options);\n const code = this.buildCodeBlock({ endpoint, snippet: request, options });\n return code.toString({\n packageName: config.fullStylePackageName ?? SNIPPET_PACKAGE_NAME,\n customConfig: this.context.customConfig,\n formatter: this.formatter\n });\n }\n\n private buildCodeBlock({\n endpoint,\n snippet,\n options\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n options: Options;\n }): java.AstNode {\n const body = java.codeblock((writer) => {\n writer.writeNodeStatement(this.constructClient({ endpoint, snippet }));\n writer.newLine();\n writer.writeNodeStatement(this.callMethod({ endpoint, snippet }));\n });\n const style = this.getStyle(options);\n switch (style) {\n case Style.Concise:\n return body;\n case Style.Full:\n return this.buildFullCodeBlock({ body, options });\n default:\n assertNever(style);\n }\n }\n\n private constructClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.CodeBlock {\n return java.codeblock((writer) => {\n writer.writeNode(this.context.getRootClientClassReference());\n writer.write(` ${CLIENT_VAR_NAME} = `);\n writer.writeNode(\n java.TypeLiteral.builder({\n classReference: this.context.getRootClientClassReference(),\n parameters: this.getRootClientBuilderArgs({ endpoint, snippet })\n })\n );\n });\n }\n\n private buildFullCodeBlock({ body, options }: { body: java.CodeBlock; options: Options }): java.AstNode {\n const config = this.getConfig(options);\n const class_ = java.class_({\n name: config.fullStyleClassName ?? SNIPPET_CLASS_NAME,\n access: java.Access.Public\n });\n const stringArgs = java.parameter({\n name: SNIPPET_METHOD_ARG,\n type: java.Type.array(java.Type.string())\n });\n class_.addMethod(\n java.method({\n name: SNIPPET_METHOD_NAME,\n access: java.Access.Public,\n static_: true,\n parameters: [stringArgs],\n body\n })\n );\n return class_;\n }\n\n private getRootClientBuilderArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.BuilderParameter[] {\n const builderArgs: java.BuilderParameter[] = [];\n if (endpoint.auth != null) {\n if (snippet.auth != null) {\n builderArgs.push(...this.getRootClientAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n } else {\n this.context.errors.add({\n severity: Severity.Warning,\n message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n });\n }\n }\n const baseUrlArg = this.getRootClientBaseUrlArg({\n baseUrl: snippet.baseURL,\n environment: snippet.environment\n });\n if (baseUrlArg != null) {\n builderArgs.push(baseUrlArg);\n }\n this.context.errors.scope(Scope.Headers);\n if (this.context.ir.headers != null && snippet.headers != null) {\n builderArgs.push(\n ...this.getRootClientHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n );\n }\n this.context.errors.unscope();\n\n const usedVariables = new Set<string>();\n const allPathParams = [...(this.context.ir.pathParameters ?? []), ...(endpoint.request.pathParameters ?? [])];\n\n allPathParams.forEach((param) => {\n if (param.variable != null) {\n usedVariables.add(param.variable);\n }\n });\n\n if (this.context.ir.variables != null && this.context.ir.variables.length > 0) {\n for (const variable of this.context.ir.variables) {\n if (usedVariables.has(variable.id)) {\n const variableName = variable.name.camelCase.unsafeName;\n builderArgs.push({\n name: variableName,\n value: java.TypeLiteral.string(`YOUR_${variable.name.screamingSnakeCase.unsafeName}`)\n });\n }\n }\n }\n\n this.context.errors.scope(Scope.PathParameters);\n if (this.context.ir.pathParameters != null && this.context.ir.pathParameters.length > 0) {\n const apiPathParams = this.context.ir.pathParameters.filter((param) => param.variable == null);\n if (apiPathParams.length > 0) {\n builderArgs.push(...this.getPathParameters({ namedParameters: apiPathParams, snippet }));\n }\n }\n this.context.errors.unscope();\n\n return builderArgs;\n }\n\n private getRootClientBaseUrlArg({\n baseUrl,\n environment\n }: {\n baseUrl: string | undefined;\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n }): java.BuilderParameter | 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 if (this.context.ir.environments?.environments.type === \"multipleBaseUrls\") {\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"The Java SDK doesn't support a baseUrl when multiple URL environments are configured\"\n });\n return undefined;\n }\n return {\n name: \"url\",\n value: java.TypeLiteral.string(baseUrl)\n };\n }\n if (environment != null) {\n if (this.context.isSingleEnvironmentID(environment)) {\n const classReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n if (classReference == 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 {\n name: \"environment\",\n value: java.TypeLiteral.reference(classReference)\n };\n }\n if (this.context.isMultiEnvironmentValues(environment)) {\n if (!this.context.validateMultiEnvironmentUrlValues(environment)) {\n return undefined;\n }\n return {\n name: \"environment\",\n value: java.TypeLiteral.reference(\n java.instantiateClass({\n classReference: this.context.getEnvironmentClassReference(),\n arguments_: Object.values(environment).map((value) =>\n this.context.dynamicTypeLiteralMapper.convert({\n typeReference: STRING_TYPE_REFERENCE,\n value\n })\n )\n })\n )\n };\n }\n }\n return undefined;\n }\n\n private getRootClientAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.Auth;\n values: FernIr.dynamic.AuthValues;\n }): java.BuilderParameter[] {\n if (values.type !== auth.type) {\n this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n return [];\n }\n switch (auth.type) {\n case \"basic\":\n return values.type === \"basic\" ? this.getRootClientBasicAuthArgs({ auth, values }) : [];\n case \"bearer\":\n return values.type === \"bearer\" ? this.getRootClientBearerAuthArgs({ auth, values }) : [];\n case \"header\":\n return values.type === \"header\" ? this.getRootClientHeaderAuthArgs({ auth, values }) : [];\n case \"oauth\":\n return values.type === \"oauth\" ? this.getRootClientOAuthArgs({ auth, values }) : [];\n case \"inferred\":\n this.addWarning(\"The Java SDK Generator does not support Inferred auth scheme yet\");\n return [];\n default:\n assertNever(auth);\n }\n }\n\n private addError(message: string): void {\n this.context.errors.add({ severity: Severity.Critical, message });\n }\n\n private addWarning(message: string): void {\n this.context.errors.add({ severity: Severity.Warning, message });\n }\n\n private getRootClientBasicAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BasicAuth;\n values: FernIr.dynamic.BasicAuthValues;\n }): java.BuilderParameter[] {\n return [\n {\n name: \"credentials\",\n value: java.TypeLiteral.raw(`\"${values.username}\", \"${values.password}\"`)\n }\n ];\n }\n\n private getRootClientBearerAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BearerAuth;\n values: FernIr.dynamic.BearerAuthValues;\n }): java.BuilderParameter[] {\n return [\n {\n name: this.context.getMethodName(auth.token),\n value: java.TypeLiteral.string(values.token)\n }\n ];\n }\n\n private getRootClientHeaderAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.HeaderAuth;\n values: FernIr.dynamic.HeaderAuthValues;\n }): java.BuilderParameter[] {\n return [\n {\n name: this.context.getMethodName(auth.header.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert({\n typeReference: auth.header.typeReference,\n value: values.value\n })\n }\n ];\n }\n\n private getRootClientOAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.OAuth;\n values: FernIr.dynamic.OAuthValues;\n }): java.BuilderParameter[] {\n return [\n {\n name: this.context.getMethodName(auth.clientId),\n value: java.TypeLiteral.string(values.clientId)\n },\n {\n name: this.context.getMethodName(auth.clientSecret),\n value: java.TypeLiteral.string(values.clientSecret)\n }\n ];\n }\n\n private getRootClientHeaderArgs({\n headers,\n values\n }: {\n headers: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): java.BuilderParameter[] {\n const args: java.BuilderParameter[] = [];\n for (const header of headers) {\n const arg = this.getRootClientHeaderArg({ header, value: values.value });\n if (arg != null) {\n args.push({\n name: this.context.getMethodName(header.name.name),\n value: arg\n });\n }\n }\n return args;\n }\n\n private getRootClientHeaderArg({\n header,\n value\n }: {\n header: FernIr.dynamic.NamedParameter;\n value: unknown;\n }): java.TypeLiteral | undefined {\n const typeLiteral = this.context.dynamicTypeLiteralMapper.convert({\n typeReference: header.typeReference,\n value\n });\n if (java.TypeLiteral.isNop(typeLiteral)) {\n // Literal header values (e.g. \"X-API-Version\") should not be included in the\n // client constructor.\n return undefined;\n }\n return typeLiteral;\n }\n\n private callMethod({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.MethodInvocation {\n return java.invokeMethod({\n on: java.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: this.getMethodArgs({ endpoint, snippet })\n });\n }\n\n private getMethodArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.TypeLiteral[] {\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 }): java.TypeLiteral[] {\n const args: java.TypeLiteral[] = [];\n\n this.context.errors.scope(Scope.PathParameters);\n // Only include endpoint-level path parameters that don't reference variables\n // Variables are configured at client level, not passed as method args\n const pathParameters = (request.pathParameters ?? []).filter((param) => param.variable == null);\n if (pathParameters.length > 0) {\n args.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 if (request.body != null) {\n args.push(this.getBodyRequestArg({ body: request.body, value: snippet.requestBody }));\n }\n this.context.errors.unscope();\n\n // For body requests, headers are passed via RequestOptions\n const requestOptionsArg = this.getRequestOptionsArg({ request, snippet });\n if (requestOptionsArg != null) {\n args.push(requestOptionsArg);\n }\n\n return args;\n }\n\n private usesOptionalNullable(): boolean {\n return this.context.customConfig?.[\"collapse-optional-nullable\"] === true;\n }\n\n private getBodyRequestArg({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBodyType;\n value: unknown;\n }): java.TypeLiteral {\n switch (body.type) {\n case \"bytes\": {\n return this.getBytesBodyRequestArg({ value });\n }\n case \"typeReference\": {\n if (body.value.type === \"optional\") {\n // TODO(amckinney): This endpoint defines an optional request body, so the\n // Java SDK requires the Optional.of(...) wrapper.\n //\n // We should fix the generator to permit the non-Optional type and\n // remove this special case.\n\n // Check if value is undefined/null and use Optional.empty() or OptionalNullable.absent()\n if (value === undefined || value === null) {\n if (this.usesOptionalNullable()) {\n return this.context.getOptionalNullableAbsent();\n } else {\n return java.TypeLiteral.reference(\n java.invokeMethod({\n on: java.classReference({\n name: \"Optional\",\n packageName: \"java.util\"\n }),\n method: \"empty\",\n arguments_: []\n })\n );\n }\n }\n\n const convertedValue = this.context.dynamicTypeLiteralMapper.convert({\n typeReference: body.value.value,\n value,\n as: \"request\"\n });\n\n // Check if the converted value is already Optional.empty() or OptionalNullable.absent() to avoid double-wrapping\n const convertedValueStr = convertedValue.toString({\n packageName: \"com.example\",\n customConfig: this.context.customConfig\n });\n\n if (\n convertedValueStr.includes(\"Optional.empty()\") ||\n convertedValueStr.includes(\"OptionalNullable.absent()\")\n ) {\n return convertedValue;\n }\n\n if (this.usesOptionalNullable()) {\n return this.context.getOptionalNullableOf(convertedValue);\n } else {\n return java.TypeLiteral.optional({\n value: convertedValue,\n useOf: true\n });\n }\n }\n return this.context.dynamicTypeLiteralMapper.convert({\n typeReference: body.value,\n value,\n as: \"request\"\n });\n }\n default:\n assertNever(body);\n }\n }\n\n private getBytesBodyRequestArg({ value }: { value: unknown }): java.TypeLiteral {\n if (value === undefined || value === null) {\n return java.TypeLiteral.bytes(\"\");\n }\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 java.TypeLiteral.nop();\n }\n return java.TypeLiteral.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 }): java.TypeLiteral[] {\n const args: java.TypeLiteral[] = [];\n\n const { inlinePathParameters, inlineFileProperties } = {\n inlinePathParameters: this.context.shouldInlinePathParameters(),\n inlineFileProperties: this.context.shouldInlineFileProperties()\n };\n\n this.context.errors.scope(Scope.PathParameters);\n const pathParameterFields: java.BuilderParameter[] = [];\n // Only include endpoint-level path parameters that don't reference variables\n const nonVariablePathParams = (request.pathParameters ?? []).filter((param) => param.variable == null);\n if (nonVariablePathParams.length > 0) {\n pathParameterFields.push(...this.getPathParameters({ namedParameters: nonVariablePathParams, snippet }));\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 (\n !this.context.includePathParametersInWrappedRequest({\n request,\n inlinePathParameters\n })\n ) {\n args.push(...pathParameterFields.map((field) => field.value));\n }\n\n // For now, the Java SDK always includes file properties as positional parameters.\n if (!inlineFileProperties) {\n args.push(...filePropertyInfo.fileFields.map((field) => field.value));\n }\n\n // For now, the Java SDK always requires the inlined request parameter.\n args.push(\n this.getInlinedRequestArg({\n request,\n snippet,\n pathParameterFields: this.context.includePathParametersInWrappedRequest({\n request,\n inlinePathParameters\n })\n ? pathParameterFields\n : [],\n filePropertyInfo\n })\n );\n\n return args;\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: java.BuilderParameter[];\n filePropertyInfo: FilePropertyInfo;\n }): java.TypeLiteral {\n this.context.errors.scope(Scope.QueryParameters);\n const queryParameters = this.context.associateQueryParametersByWireValue({\n parameters: request.queryParameters ?? [],\n values: snippet.queryParameters ?? {}\n });\n const filteredQueryParameters = queryParameters.filter(\n (queryParameter) => !this.context.isDirectLiteral(queryParameter.typeReference)\n );\n const sortedQueryParameters = this.context.sortTypeInstancesByRequiredFirst(\n filteredQueryParameters,\n request.queryParameters ?? []\n );\n const queryParameterFields = sortedQueryParameters.map((queryParameter) => ({\n name: this.context.getMethodName(queryParameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert({\n // Unwrap optional from list items for allow-multiple query params.\n // Java SDK builders have convenience overloads that accept List<T>.\n typeReference: unwrapOptionalFromListItems(queryParameter.typeReference),\n value: queryParameter.value,\n as: \"request\"\n })\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 filteredHeaders = headers.filter((header) => !this.context.isDirectLiteral(header.typeReference));\n const sortedHeaders = this.context.sortTypeInstancesByRequiredFirst(filteredHeaders, request.headers ?? []);\n const headerFields = sortedHeaders.map((header) => ({\n name: this.context.getMethodName(header.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert({\n typeReference: header.typeReference,\n value: header.value,\n as: \"request\"\n })\n }));\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.RequestBody);\n const requestBodyFields =\n request.body != null\n ? this.getInlinedRequestBodyBuilderParameters({\n body: request.body,\n value: snippet.requestBody,\n filePropertyInfo\n })\n : [];\n this.context.errors.unscope();\n\n return java.TypeLiteral.builder({\n classReference: java.classReference({\n name: this.context.getClassName(request.declaration.name),\n packageName: this.context.getRequestsPackageName(request.declaration.fernFilepath)\n }),\n parameters: [...pathParameterFields, ...headerFields, ...queryParameterFields, ...requestBodyFields]\n });\n }\n\n private getRequestOptionsArg({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequest | FernIr.dynamic.BodyRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.TypeLiteral | undefined {\n const requestHeaders = \"headers\" in request ? (request.headers ?? []) : [];\n\n if (requestHeaders.length === 0 || Object.keys(snippet.headers ?? {}).length === 0) {\n return undefined;\n }\n\n this.context.errors.scope(Scope.Headers);\n const headers = this.context.associateByWireValue({\n parameters: requestHeaders,\n values: snippet.headers ?? {}\n });\n this.context.errors.unscope();\n\n if (headers.length === 0) {\n return undefined;\n }\n\n const requestOptionsClass = java.classReference({\n name: \"RequestOptions\",\n packageName: this.context.getCorePackageName()\n });\n\n let builderChain: java.AstNode = java.invokeMethod({\n on: requestOptionsClass,\n method: \"builder\",\n arguments_: []\n });\n\n for (const header of headers) {\n builderChain = java.invokeMethod({\n on: builderChain,\n method: \"addHeader\",\n arguments_: [\n java.TypeLiteral.string(header.name.wireValue),\n this.context.dynamicTypeLiteralMapper.convert(header)\n ]\n });\n }\n\n const buildMethodCall = java.invokeMethod({\n on: builderChain,\n method: \"build\",\n arguments_: []\n });\n\n return java.TypeLiteral.reference(buildMethodCall);\n }\n\n private getInlinedRequestBodyBuilderParameters({\n body,\n value,\n filePropertyInfo\n }: {\n body: FernIr.dynamic.InlinedRequestBody;\n value: unknown;\n filePropertyInfo: FilePropertyInfo;\n }): java.BuilderParameter[] {\n switch (body.type) {\n case \"properties\":\n return this.getInlinedRequestBodyPropertyBuilderParameters({ parameters: body.value, value });\n case \"referenced\":\n return [this.getReferencedRequestBodyPropertyBuilderParameter({ body, value })];\n case \"fileUpload\":\n return this.getFileUploadRequestBodyBuilderParameters({ filePropertyInfo });\n default:\n assertNever(body);\n }\n }\n\n private getFileUploadRequestBodyBuilderParameters({\n filePropertyInfo\n }: {\n filePropertyInfo: FilePropertyInfo;\n }): java.BuilderParameter[] {\n if (this.context.shouldInlineFileProperties()) {\n return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n }\n return filePropertyInfo.bodyPropertyFields;\n }\n\n private getReferencedRequestBodyPropertyBuilderParameter({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBody;\n value: unknown;\n }): java.BuilderParameter {\n return {\n name: this.context.getMethodName(body.bodyKey),\n value: this.getReferencedRequestBodyPropertyTypeLiteral({ body: body.bodyType, value })\n };\n }\n\n private getReferencedRequestBodyPropertyTypeLiteral({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBodyType;\n value: unknown;\n }): java.TypeLiteral {\n switch (body.type) {\n case \"bytes\":\n return this.getBytesBodyRequestArg({ value });\n case \"typeReference\":\n return this.context.dynamicTypeLiteralMapper.convert({\n typeReference: body.value,\n value,\n as: \"request\"\n });\n default:\n assertNever(body);\n }\n }\n\n private getInlinedRequestBodyPropertyBuilderParameters({\n parameters,\n value\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n value: unknown;\n }): java.BuilderParameter[] {\n const bodyProperties = this.context.associateByWireValue({\n parameters,\n values: this.context.getRecord(value) ?? {}\n });\n const filteredProperties = bodyProperties.filter(\n (parameter) => !this.context.isDirectLiteral(parameter.typeReference)\n );\n const sortedProperties = this.context.sortTypeInstancesByRequiredFirst(filteredProperties, parameters);\n return sortedProperties.map((parameter) => ({\n name: this.context.getMethodName(parameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert({\n typeReference: parameter.typeReference,\n value: parameter.value,\n as: \"request\"\n })\n }));\n }\n\n private getPathParameters({\n namedParameters,\n snippet\n }: {\n namedParameters: FernIr.dynamic.NamedParameter[];\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.BuilderParameter[] {\n const args: java.BuilderParameter[] = [];\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.getMethodName(parameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert(parameter)\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 getStyle(options: Options): Style {\n return options.style ?? this.context.options.style ?? Style.Full;\n }\n\n private getConfig(options: Options): Config {\n return options.config ?? this.context.options.config ?? {};\n }\n}\n"],"mappings":"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","names":["init_process","init_buffer","SNIPPET_PACKAGE_NAME","SNIPPET_CLASS_NAME","SNIPPET_METHOD_NAME","SNIPPET_METHOD_ARG","CLIENT_VAR_NAME","STRING_TYPE_REFERENCE","unwrapOptionalFromListItems","typeReference","itemType","EndpointSnippetGenerator","context","formatter","__publicField","endpoint","request","options","_a","config","snippet","body","java_exports","writer","style","Style","assertNever","class_","stringArgs","_b","builderArgs","Severity","baseUrlArg","Scope","usedVariables","param","variable","variableName","apiPathParams","baseUrl","environment","classReference","value","auth","values","message","headers","args","header","arg","typeLiteral","pathParameters","field","requestOptionsArg","convertedValue","convertedValueStr","inlinePathParameters","inlineFileProperties","pathParameterFields","nonVariablePathParams","filePropertyInfo","_c","_d","_e","_f","filteredQueryParameters","queryParameter","queryParameterFields","filteredHeaders","headerFields","requestBodyFields","requestHeaders","requestOptionsClass","builderChain","buildMethodCall","parameters","filteredProperties","parameter","namedParameters","val"]}
package/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import"./chunk-N3AIOPEV.js";import{a as r}from"./chunk-ATHAOWL4.js";import"./chunk-PSRNJYSA.js";import"./chunk-Z267S5KO.js";import"./chunk-V3XTHNV6.js";import"./chunk-DD37GKIE.js";import"./chunk-RVPVA4ZP.js";import"./chunk-4CABHDQV.js";import"./chunk-JWUP3MFF.js";import{h as e,i as o}from"./chunk-2U3YQWRZ.js";e();o();export{r as DynamicSnippetsGenerator};
1
+ import"./chunk-N3AIOPEV.js";import{a as r}from"./chunk-5HAATWAD.js";import"./chunk-PRMFZOQO.js";import"./chunk-Z267S5KO.js";import"./chunk-V3XTHNV6.js";import"./chunk-DD37GKIE.js";import"./chunk-RVPVA4ZP.js";import"./chunk-4CABHDQV.js";import"./chunk-JWUP3MFF.js";import{h as e,i as o}from"./chunk-2U3YQWRZ.js";e();o();export{r as DynamicSnippetsGenerator};
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fern-api/java-dynamic-snippets",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/fern-api/fern.git",
@@ -1,2 +0,0 @@
1
- import{b as h,d as y,e as u}from"./chunk-DD37GKIE.js";import{a as m,d as n}from"./chunk-JWUP3MFF.js";import{f,h as B,i as A}from"./chunk-2U3YQWRZ.js";B();A();var b="com.example.usage",M="Example",L="main",E="args",q="client",S={type:"primitive",value:"STRING"},C=class{constructor({context:e,formatter:t}){f(this,"context");f(this,"formatter");this.context=e,this.formatter=t}async generateSnippet({endpoint:e,request:t,options:r}){var i;let a=this.getConfig(r);return await this.buildCodeBlock({endpoint:e,snippet:t,options:r}).toStringAsync({packageName:(i=a.fullStylePackageName)!=null?i:b,customConfig:this.context.customConfig,formatter:this.formatter})}generateSnippetSync({endpoint:e,request:t,options:r}){var i;let a=this.getConfig(r);return this.buildCodeBlock({endpoint:e,snippet:t,options:r}).toString({packageName:(i=a.fullStylePackageName)!=null?i:b,customConfig:this.context.customConfig,formatter:this.formatter})}buildCodeBlock({endpoint:e,snippet:t,options:r}){let a=n.codeblock(i=>{i.writeNodeStatement(this.constructClient({endpoint:e,snippet:t})),i.newLine(),i.writeNodeStatement(this.callMethod({endpoint:e,snippet:t}))}),s=this.getStyle(r);switch(s){case y.Concise:return a;case y.Full:return this.buildFullCodeBlock({body:a,options:r});default:m(s)}}constructClient({endpoint:e,snippet:t}){return n.codeblock(r=>{r.writeNode(this.context.getRootClientClassReference()),r.write(` ${q} = `),r.writeNode(n.TypeLiteral.builder({classReference:this.context.getRootClientClassReference(),parameters:this.getRootClientBuilderArgs({endpoint:e,snippet:t})}))})}buildFullCodeBlock({body:e,options:t}){var i;let r=this.getConfig(t),a=n.class_({name:(i=r.fullStyleClassName)!=null?i:M,access:n.Access.Public}),s=n.parameter({name:E,type:n.Type.array(n.Type.string())});return a.addMethod(n.method({name:L,access:n.Access.Public,static_:!0,parameters:[s],body:e})),a}getRootClientBuilderArgs({endpoint:e,snippet:t}){var o,p;let r=[];e.auth!=null&&(t.auth!=null?r.push(...this.getRootClientAuthArgs({auth:e.auth,values:t.auth})):this.context.errors.add({severity:h.Warning,message:`Auth with ${e.auth.type} configuration is required for this endpoint`}));let a=this.getRootClientBaseUrlArg({baseUrl:t.baseURL,environment:t.environment});a!=null&&r.push(a),this.context.errors.scope(u.Headers),this.context.ir.headers!=null&&t.headers!=null&&r.push(...this.getRootClientHeaderArgs({headers:this.context.ir.headers,values:t.headers})),this.context.errors.unscope();let s=new Set;if([...(o=this.context.ir.pathParameters)!=null?o:[],...(p=e.request.pathParameters)!=null?p:[]].forEach(l=>{l.variable!=null&&s.add(l.variable)}),this.context.ir.variables!=null&&this.context.ir.variables.length>0){for(let l of this.context.ir.variables)if(s.has(l.id)){let c=l.name.camelCase.unsafeName;r.push({name:c,value:n.TypeLiteral.string(`YOUR_${l.name.screamingSnakeCase.unsafeName}`)})}}if(this.context.errors.scope(u.PathParameters),this.context.ir.pathParameters!=null&&this.context.ir.pathParameters.length>0){let l=this.context.ir.pathParameters.filter(c=>c.variable==null);l.length>0&&r.push(...this.getPathParameters({namedParameters:l,snippet:t}))}return this.context.errors.unscope(),r}getRootClientBaseUrlArg({baseUrl:e,environment:t}){var r;if(e!=null&&t!=null){this.context.errors.add({severity:h.Critical,message:"Cannot specify both baseUrl and environment options"});return}if(e!=null){if(((r=this.context.ir.environments)==null?void 0:r.environments.type)==="multipleBaseUrls"){this.context.errors.add({severity:h.Critical,message:"The Java SDK doesn't support a baseUrl when multiple URL environments are configured"});return}return{name:"url",value:n.TypeLiteral.string(e)}}if(t!=null){if(this.context.isSingleEnvironmentID(t)){let a=this.context.getEnvironmentTypeReferenceFromID(t);if(a==null){this.context.errors.add({severity:h.Warning,message:`Environment ${JSON.stringify(t)} was not found`});return}return{name:"environment",value:n.TypeLiteral.reference(a)}}if(this.context.isMultiEnvironmentValues(t))return this.context.validateMultiEnvironmentUrlValues(t)?{name:"environment",value:n.TypeLiteral.reference(n.instantiateClass({classReference:this.context.getEnvironmentClassReference(),arguments_:Object.values(t).map(a=>this.context.dynamicTypeLiteralMapper.convert({typeReference:S,value:a}))}))}:void 0}}getRootClientAuthArgs({auth:e,values:t}){if(t.type!==e.type)return this.addError(this.context.newAuthMismatchError({auth:e,values:t}).message),[];switch(e.type){case"basic":return t.type==="basic"?this.getRootClientBasicAuthArgs({auth:e,values:t}):[];case"bearer":return t.type==="bearer"?this.getRootClientBearerAuthArgs({auth:e,values:t}):[];case"header":return t.type==="header"?this.getRootClientHeaderAuthArgs({auth:e,values:t}):[];case"oauth":return t.type==="oauth"?this.getRootClientOAuthArgs({auth:e,values:t}):[];case"inferred":return this.addWarning("The Java SDK Generator does not support Inferred auth scheme yet"),[];default:m(e)}}addError(e){this.context.errors.add({severity:h.Critical,message:e})}addWarning(e){this.context.errors.add({severity:h.Warning,message:e})}getRootClientBasicAuthArgs({auth:e,values:t}){return[{name:"credentials",value:n.TypeLiteral.raw(`"${t.username}", "${t.password}"`)}]}getRootClientBearerAuthArgs({auth:e,values:t}){return[{name:this.context.getMethodName(e.token),value:n.TypeLiteral.string(t.token)}]}getRootClientHeaderAuthArgs({auth:e,values:t}){return[{name:this.context.getMethodName(e.header.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:e.header.typeReference,value:t.value})}]}getRootClientOAuthArgs({auth:e,values:t}){return[{name:this.context.getMethodName(e.clientId),value:n.TypeLiteral.string(t.clientId)},{name:this.context.getMethodName(e.clientSecret),value:n.TypeLiteral.string(t.clientSecret)}]}getRootClientHeaderArgs({headers:e,values:t}){let r=[];for(let a of e){let s=this.getRootClientHeaderArg({header:a,value:t.value});s!=null&&r.push({name:this.context.getMethodName(a.name.name),value:s})}return r}getRootClientHeaderArg({header:e,value:t}){let r=this.context.dynamicTypeLiteralMapper.convert({typeReference:e.typeReference,value:t});if(!n.TypeLiteral.isNop(r))return r}callMethod({endpoint:e,snippet:t}){return n.invokeMethod({on:n.codeblock(q),method:this.getMethod({endpoint:e}),arguments_:this.getMethodArgs({endpoint:e,snippet:t})})}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 i;let r=[];this.context.errors.scope(u.PathParameters);let a=((i=e.pathParameters)!=null?i:[]).filter(o=>o.variable==null);a.length>0&&r.push(...this.getPathParameters({namedParameters:a,snippet:t}).map(o=>o.value)),this.context.errors.unscope(),this.context.errors.scope(u.RequestBody),e.body!=null&&r.push(this.getBodyRequestArg({body:e.body,value:t.requestBody})),this.context.errors.unscope();let s=this.getRequestOptionsArg({request:e,snippet:t});return s!=null&&r.push(s),r}usesOptionalNullable(){var e;return((e=this.context.customConfig)==null?void 0:e["collapse-optional-nullable"])===!0}getBodyRequestArg({body:e,value:t}){switch(e.type){case"bytes":return this.getBytesBodyRequestArg({value:t});case"typeReference":{if(e.value.type==="optional"){if(t==null)return this.usesOptionalNullable()?this.context.getOptionalNullableAbsent():n.TypeLiteral.reference(n.invokeMethod({on:n.classReference({name:"Optional",packageName:"java.util"}),method:"empty",arguments_:[]}));let r=this.context.dynamicTypeLiteralMapper.convert({typeReference:e.value.value,value:t,as:"request"}),a=r.toString({packageName:"com.example",customConfig:this.context.customConfig});return a.includes("Optional.empty()")||a.includes("OptionalNullable.absent()")?r:this.usesOptionalNullable()?this.context.getOptionalNullableOf(r):n.TypeLiteral.optional({value:r,useOf:!0})}return this.context.dynamicTypeLiteralMapper.convert({typeReference:e.value,value:t,as:"request"})}default:m(e)}}getBytesBodyRequestArg({value:e}){return e==null?n.TypeLiteral.bytes(""):typeof e!="string"?(this.context.errors.add({severity:h.Critical,message:`Expected bytes value to be a string, got ${typeof e}`}),n.TypeLiteral.nop()):n.TypeLiteral.bytes(e)}getMethodArgsForInlinedRequest({request:e,snippet:t}){var l;let r=[],{inlinePathParameters:a,inlineFileProperties:s}={inlinePathParameters:this.context.shouldInlinePathParameters(),inlineFileProperties:this.context.shouldInlineFileProperties()};this.context.errors.scope(u.PathParameters);let i=[],o=((l=e.pathParameters)!=null?l:[]).filter(c=>c.variable==null);o.length>0&&i.push(...this.getPathParameters({namedParameters:o,snippet:t})),this.context.errors.unscope(),this.context.errors.scope(u.RequestBody);let p=this.getFilePropertyInfo({request:e,snippet:t});return this.context.errors.unscope(),this.context.includePathParametersInWrappedRequest({request:e,inlinePathParameters:a})||r.push(...i.map(c=>c.value)),s||r.push(...p.fileFields.map(c=>c.value)),r.push(this.getInlinedRequestArg({request:e,snippet:t,pathParameterFields:this.context.includePathParametersInWrappedRequest({request:e,inlinePathParameters:a})?i:[],filePropertyInfo:p})),r}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:a}){var v,P,R,x,F,I;this.context.errors.scope(u.QueryParameters);let i=this.context.associateQueryParametersByWireValue({parameters:(v=e.queryParameters)!=null?v:[],values:(P=t.queryParameters)!=null?P:{}}).filter(d=>!this.context.isDirectLiteral(d.typeReference)),p=this.context.sortTypeInstancesByRequiredFirst(i,(R=e.queryParameters)!=null?R:[]).map(d=>({name:this.context.getMethodName(d.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:d.typeReference,value:d.value,as:"request"})}));this.context.errors.unscope(),this.context.errors.scope(u.Headers);let c=this.context.associateByWireValue({parameters:(x=e.headers)!=null?x:[],values:(F=t.headers)!=null?F:{}}).filter(d=>!this.context.isDirectLiteral(d.typeReference)),T=this.context.sortTypeInstancesByRequiredFirst(c,(I=e.headers)!=null?I:[]).map(d=>({name:this.context.getMethodName(d.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:d.typeReference,value:d.value,as:"request"})}));this.context.errors.unscope(),this.context.errors.scope(u.RequestBody);let N=e.body!=null?this.getInlinedRequestBodyBuilderParameters({body:e.body,value:t.requestBody,filePropertyInfo:a}):[];return this.context.errors.unscope(),n.TypeLiteral.builder({classReference:n.classReference({name:this.context.getClassName(e.declaration.name),packageName:this.context.getRequestsPackageName(e.declaration.fernFilepath)}),parameters:[...r,...T,...p,...N]})}getRequestOptionsArg({request:e,snippet:t}){var p,l,c;let r="headers"in e?(p=e.headers)!=null?p:[]:[];if(r.length===0||Object.keys((l=t.headers)!=null?l:{}).length===0)return;this.context.errors.scope(u.Headers);let a=this.context.associateByWireValue({parameters:r,values:(c=t.headers)!=null?c:{}});if(this.context.errors.unscope(),a.length===0)return;let s=n.classReference({name:"RequestOptions",packageName:this.context.getCorePackageName()}),i=n.invokeMethod({on:s,method:"builder",arguments_:[]});for(let g of a)i=n.invokeMethod({on:i,method:"addHeader",arguments_:[n.TypeLiteral.string(g.name.wireValue),this.context.dynamicTypeLiteralMapper.convert(g)]});let o=n.invokeMethod({on:i,method:"build",arguments_:[]});return n.TypeLiteral.reference(o)}getInlinedRequestBodyBuilderParameters({body:e,value:t,filePropertyInfo:r}){switch(e.type){case"properties":return this.getInlinedRequestBodyPropertyBuilderParameters({parameters:e.value,value:t});case"referenced":return[this.getReferencedRequestBodyPropertyBuilderParameter({body:e,value:t})];case"fileUpload":return this.getFileUploadRequestBodyBuilderParameters({filePropertyInfo:r});default:m(e)}}getFileUploadRequestBodyBuilderParameters({filePropertyInfo:e}){return this.context.shouldInlineFileProperties()?[...e.fileFields,...e.bodyPropertyFields]:e.bodyPropertyFields}getReferencedRequestBodyPropertyBuilderParameter({body:e,value:t}){return{name:this.context.getMethodName(e.bodyKey),value:this.getReferencedRequestBodyPropertyTypeLiteral({body:e.bodyType,value:t})}}getReferencedRequestBodyPropertyTypeLiteral({body:e,value:t}){switch(e.type){case"bytes":return this.getBytesBodyRequestArg({value:t});case"typeReference":return this.context.dynamicTypeLiteralMapper.convert({typeReference:e.value,value:t,as:"request"});default:m(e)}}getInlinedRequestBodyPropertyBuilderParameters({parameters:e,value:t}){var i;let a=this.context.associateByWireValue({parameters:e,values:(i=this.context.getRecord(t))!=null?i:{}}).filter(o=>!this.context.isDirectLiteral(o.typeReference));return this.context.sortTypeInstancesByRequiredFirst(a,e).map(o=>({name:this.context.getMethodName(o.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:o.typeReference,value:o.value,as:"request"})}))}getPathParameters({namedParameters:e,snippet:t}){var s;let r=[],a=this.context.associateByWireValue({parameters:e,values:(s=t.pathParameters)!=null?s:{}});for(let i of a)r.push({name:this.context.getMethodName(i.name.name),value:this.context.dynamicTypeLiteralMapper.convert(i)});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)}getStyle(e){var t,r;return(r=(t=e.style)!=null?t:this.context.options.style)!=null?r:y.Full}getConfig(e){var t,r;return(r=(t=e.config)!=null?t:this.context.options.config)!=null?r:{}}};export{C as a};
2
- //# sourceMappingURL=chunk-PSRNJYSA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/EndpointSnippetGenerator.ts"],"sourcesContent":["import { AbstractFormatter, Options, Scope, Severity, Style } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { java } from \"@fern-api/java-ast\";\n\nimport { Config } from \"./Config\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper\";\n\nconst SNIPPET_PACKAGE_NAME = \"com.example.usage\";\nconst SNIPPET_CLASS_NAME = \"Example\";\nconst SNIPPET_METHOD_NAME = \"main\";\nconst SNIPPET_METHOD_ARG = \"args\";\nconst CLIENT_VAR_NAME = \"client\";\nconst STRING_TYPE_REFERENCE: FernIr.dynamic.TypeReference = {\n type: \"primitive\",\n value: \"STRING\"\n};\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 config = this.getConfig(options);\n const code = this.buildCodeBlock({ endpoint, snippet: request, options });\n return await code.toStringAsync({\n packageName: config.fullStylePackageName ?? SNIPPET_PACKAGE_NAME,\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 config = this.getConfig(options);\n const code = this.buildCodeBlock({ endpoint, snippet: request, options });\n return code.toString({\n packageName: config.fullStylePackageName ?? SNIPPET_PACKAGE_NAME,\n customConfig: this.context.customConfig,\n formatter: this.formatter\n });\n }\n\n private buildCodeBlock({\n endpoint,\n snippet,\n options\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n options: Options;\n }): java.AstNode {\n const body = java.codeblock((writer) => {\n writer.writeNodeStatement(this.constructClient({ endpoint, snippet }));\n writer.newLine();\n writer.writeNodeStatement(this.callMethod({ endpoint, snippet }));\n });\n const style = this.getStyle(options);\n switch (style) {\n case Style.Concise:\n return body;\n case Style.Full:\n return this.buildFullCodeBlock({ body, options });\n default:\n assertNever(style);\n }\n }\n\n private constructClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.CodeBlock {\n return java.codeblock((writer) => {\n writer.writeNode(this.context.getRootClientClassReference());\n writer.write(` ${CLIENT_VAR_NAME} = `);\n writer.writeNode(\n java.TypeLiteral.builder({\n classReference: this.context.getRootClientClassReference(),\n parameters: this.getRootClientBuilderArgs({ endpoint, snippet })\n })\n );\n });\n }\n\n private buildFullCodeBlock({ body, options }: { body: java.CodeBlock; options: Options }): java.AstNode {\n const config = this.getConfig(options);\n const class_ = java.class_({\n name: config.fullStyleClassName ?? SNIPPET_CLASS_NAME,\n access: java.Access.Public\n });\n const stringArgs = java.parameter({\n name: SNIPPET_METHOD_ARG,\n type: java.Type.array(java.Type.string())\n });\n class_.addMethod(\n java.method({\n name: SNIPPET_METHOD_NAME,\n access: java.Access.Public,\n static_: true,\n parameters: [stringArgs],\n body\n })\n );\n return class_;\n }\n\n private getRootClientBuilderArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.BuilderParameter[] {\n const builderArgs: java.BuilderParameter[] = [];\n if (endpoint.auth != null) {\n if (snippet.auth != null) {\n builderArgs.push(...this.getRootClientAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n } else {\n this.context.errors.add({\n severity: Severity.Warning,\n message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n });\n }\n }\n const baseUrlArg = this.getRootClientBaseUrlArg({\n baseUrl: snippet.baseURL,\n environment: snippet.environment\n });\n if (baseUrlArg != null) {\n builderArgs.push(baseUrlArg);\n }\n this.context.errors.scope(Scope.Headers);\n if (this.context.ir.headers != null && snippet.headers != null) {\n builderArgs.push(\n ...this.getRootClientHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n );\n }\n this.context.errors.unscope();\n\n const usedVariables = new Set<string>();\n const allPathParams = [...(this.context.ir.pathParameters ?? []), ...(endpoint.request.pathParameters ?? [])];\n\n allPathParams.forEach((param) => {\n if (param.variable != null) {\n usedVariables.add(param.variable);\n }\n });\n\n if (this.context.ir.variables != null && this.context.ir.variables.length > 0) {\n for (const variable of this.context.ir.variables) {\n if (usedVariables.has(variable.id)) {\n const variableName = variable.name.camelCase.unsafeName;\n builderArgs.push({\n name: variableName,\n value: java.TypeLiteral.string(`YOUR_${variable.name.screamingSnakeCase.unsafeName}`)\n });\n }\n }\n }\n\n this.context.errors.scope(Scope.PathParameters);\n if (this.context.ir.pathParameters != null && this.context.ir.pathParameters.length > 0) {\n const apiPathParams = this.context.ir.pathParameters.filter((param) => param.variable == null);\n if (apiPathParams.length > 0) {\n builderArgs.push(...this.getPathParameters({ namedParameters: apiPathParams, snippet }));\n }\n }\n this.context.errors.unscope();\n\n return builderArgs;\n }\n\n private getRootClientBaseUrlArg({\n baseUrl,\n environment\n }: {\n baseUrl: string | undefined;\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n }): java.BuilderParameter | 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 if (this.context.ir.environments?.environments.type === \"multipleBaseUrls\") {\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"The Java SDK doesn't support a baseUrl when multiple URL environments are configured\"\n });\n return undefined;\n }\n return {\n name: \"url\",\n value: java.TypeLiteral.string(baseUrl)\n };\n }\n if (environment != null) {\n if (this.context.isSingleEnvironmentID(environment)) {\n const classReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n if (classReference == 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 {\n name: \"environment\",\n value: java.TypeLiteral.reference(classReference)\n };\n }\n if (this.context.isMultiEnvironmentValues(environment)) {\n if (!this.context.validateMultiEnvironmentUrlValues(environment)) {\n return undefined;\n }\n return {\n name: \"environment\",\n value: java.TypeLiteral.reference(\n java.instantiateClass({\n classReference: this.context.getEnvironmentClassReference(),\n arguments_: Object.values(environment).map((value) =>\n this.context.dynamicTypeLiteralMapper.convert({\n typeReference: STRING_TYPE_REFERENCE,\n value\n })\n )\n })\n )\n };\n }\n }\n return undefined;\n }\n\n private getRootClientAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.Auth;\n values: FernIr.dynamic.AuthValues;\n }): java.BuilderParameter[] {\n if (values.type !== auth.type) {\n this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n return [];\n }\n switch (auth.type) {\n case \"basic\":\n return values.type === \"basic\" ? this.getRootClientBasicAuthArgs({ auth, values }) : [];\n case \"bearer\":\n return values.type === \"bearer\" ? this.getRootClientBearerAuthArgs({ auth, values }) : [];\n case \"header\":\n return values.type === \"header\" ? this.getRootClientHeaderAuthArgs({ auth, values }) : [];\n case \"oauth\":\n return values.type === \"oauth\" ? this.getRootClientOAuthArgs({ auth, values }) : [];\n case \"inferred\":\n this.addWarning(\"The Java SDK Generator does not support Inferred auth scheme yet\");\n return [];\n default:\n assertNever(auth);\n }\n }\n\n private addError(message: string): void {\n this.context.errors.add({ severity: Severity.Critical, message });\n }\n\n private addWarning(message: string): void {\n this.context.errors.add({ severity: Severity.Warning, message });\n }\n\n private getRootClientBasicAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BasicAuth;\n values: FernIr.dynamic.BasicAuthValues;\n }): java.BuilderParameter[] {\n return [\n {\n name: \"credentials\",\n value: java.TypeLiteral.raw(`\"${values.username}\", \"${values.password}\"`)\n }\n ];\n }\n\n private getRootClientBearerAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BearerAuth;\n values: FernIr.dynamic.BearerAuthValues;\n }): java.BuilderParameter[] {\n return [\n {\n name: this.context.getMethodName(auth.token),\n value: java.TypeLiteral.string(values.token)\n }\n ];\n }\n\n private getRootClientHeaderAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.HeaderAuth;\n values: FernIr.dynamic.HeaderAuthValues;\n }): java.BuilderParameter[] {\n return [\n {\n name: this.context.getMethodName(auth.header.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert({\n typeReference: auth.header.typeReference,\n value: values.value\n })\n }\n ];\n }\n\n private getRootClientOAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.OAuth;\n values: FernIr.dynamic.OAuthValues;\n }): java.BuilderParameter[] {\n return [\n {\n name: this.context.getMethodName(auth.clientId),\n value: java.TypeLiteral.string(values.clientId)\n },\n {\n name: this.context.getMethodName(auth.clientSecret),\n value: java.TypeLiteral.string(values.clientSecret)\n }\n ];\n }\n\n private getRootClientHeaderArgs({\n headers,\n values\n }: {\n headers: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): java.BuilderParameter[] {\n const args: java.BuilderParameter[] = [];\n for (const header of headers) {\n const arg = this.getRootClientHeaderArg({ header, value: values.value });\n if (arg != null) {\n args.push({\n name: this.context.getMethodName(header.name.name),\n value: arg\n });\n }\n }\n return args;\n }\n\n private getRootClientHeaderArg({\n header,\n value\n }: {\n header: FernIr.dynamic.NamedParameter;\n value: unknown;\n }): java.TypeLiteral | undefined {\n const typeLiteral = this.context.dynamicTypeLiteralMapper.convert({\n typeReference: header.typeReference,\n value\n });\n if (java.TypeLiteral.isNop(typeLiteral)) {\n // Literal header values (e.g. \"X-API-Version\") should not be included in the\n // client constructor.\n return undefined;\n }\n return typeLiteral;\n }\n\n private callMethod({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.MethodInvocation {\n return java.invokeMethod({\n on: java.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: this.getMethodArgs({ endpoint, snippet })\n });\n }\n\n private getMethodArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.TypeLiteral[] {\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 }): java.TypeLiteral[] {\n const args: java.TypeLiteral[] = [];\n\n this.context.errors.scope(Scope.PathParameters);\n // Only include endpoint-level path parameters that don't reference variables\n // Variables are configured at client level, not passed as method args\n const pathParameters = (request.pathParameters ?? []).filter((param) => param.variable == null);\n if (pathParameters.length > 0) {\n args.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 if (request.body != null) {\n args.push(this.getBodyRequestArg({ body: request.body, value: snippet.requestBody }));\n }\n this.context.errors.unscope();\n\n // For body requests, headers are passed via RequestOptions\n const requestOptionsArg = this.getRequestOptionsArg({ request, snippet });\n if (requestOptionsArg != null) {\n args.push(requestOptionsArg);\n }\n\n return args;\n }\n\n private usesOptionalNullable(): boolean {\n return this.context.customConfig?.[\"collapse-optional-nullable\"] === true;\n }\n\n private getBodyRequestArg({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBodyType;\n value: unknown;\n }): java.TypeLiteral {\n switch (body.type) {\n case \"bytes\": {\n return this.getBytesBodyRequestArg({ value });\n }\n case \"typeReference\": {\n if (body.value.type === \"optional\") {\n // TODO(amckinney): This endpoint defines an optional request body, so the\n // Java SDK requires the Optional.of(...) wrapper.\n //\n // We should fix the generator to permit the non-Optional type and\n // remove this special case.\n\n // Check if value is undefined/null and use Optional.empty() or OptionalNullable.absent()\n if (value === undefined || value === null) {\n if (this.usesOptionalNullable()) {\n return this.context.getOptionalNullableAbsent();\n } else {\n return java.TypeLiteral.reference(\n java.invokeMethod({\n on: java.classReference({\n name: \"Optional\",\n packageName: \"java.util\"\n }),\n method: \"empty\",\n arguments_: []\n })\n );\n }\n }\n\n const convertedValue = this.context.dynamicTypeLiteralMapper.convert({\n typeReference: body.value.value,\n value,\n as: \"request\"\n });\n\n // Check if the converted value is already Optional.empty() or OptionalNullable.absent() to avoid double-wrapping\n const convertedValueStr = convertedValue.toString({\n packageName: \"com.example\",\n customConfig: this.context.customConfig\n });\n\n if (\n convertedValueStr.includes(\"Optional.empty()\") ||\n convertedValueStr.includes(\"OptionalNullable.absent()\")\n ) {\n return convertedValue;\n }\n\n if (this.usesOptionalNullable()) {\n return this.context.getOptionalNullableOf(convertedValue);\n } else {\n return java.TypeLiteral.optional({\n value: convertedValue,\n useOf: true\n });\n }\n }\n return this.context.dynamicTypeLiteralMapper.convert({\n typeReference: body.value,\n value,\n as: \"request\"\n });\n }\n default:\n assertNever(body);\n }\n }\n\n private getBytesBodyRequestArg({ value }: { value: unknown }): java.TypeLiteral {\n if (value === undefined || value === null) {\n return java.TypeLiteral.bytes(\"\");\n }\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 java.TypeLiteral.nop();\n }\n return java.TypeLiteral.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 }): java.TypeLiteral[] {\n const args: java.TypeLiteral[] = [];\n\n const { inlinePathParameters, inlineFileProperties } = {\n inlinePathParameters: this.context.shouldInlinePathParameters(),\n inlineFileProperties: this.context.shouldInlineFileProperties()\n };\n\n this.context.errors.scope(Scope.PathParameters);\n const pathParameterFields: java.BuilderParameter[] = [];\n // Only include endpoint-level path parameters that don't reference variables\n const nonVariablePathParams = (request.pathParameters ?? []).filter((param) => param.variable == null);\n if (nonVariablePathParams.length > 0) {\n pathParameterFields.push(...this.getPathParameters({ namedParameters: nonVariablePathParams, snippet }));\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 (\n !this.context.includePathParametersInWrappedRequest({\n request,\n inlinePathParameters\n })\n ) {\n args.push(...pathParameterFields.map((field) => field.value));\n }\n\n // For now, the Java SDK always includes file properties as positional parameters.\n if (!inlineFileProperties) {\n args.push(...filePropertyInfo.fileFields.map((field) => field.value));\n }\n\n // For now, the Java SDK always requires the inlined request parameter.\n args.push(\n this.getInlinedRequestArg({\n request,\n snippet,\n pathParameterFields: this.context.includePathParametersInWrappedRequest({\n request,\n inlinePathParameters\n })\n ? pathParameterFields\n : [],\n filePropertyInfo\n })\n );\n\n return args;\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: java.BuilderParameter[];\n filePropertyInfo: FilePropertyInfo;\n }): java.TypeLiteral {\n this.context.errors.scope(Scope.QueryParameters);\n const queryParameters = this.context.associateQueryParametersByWireValue({\n parameters: request.queryParameters ?? [],\n values: snippet.queryParameters ?? {}\n });\n const filteredQueryParameters = queryParameters.filter(\n (queryParameter) => !this.context.isDirectLiteral(queryParameter.typeReference)\n );\n const sortedQueryParameters = this.context.sortTypeInstancesByRequiredFirst(\n filteredQueryParameters,\n request.queryParameters ?? []\n );\n const queryParameterFields = sortedQueryParameters.map((queryParameter) => ({\n name: this.context.getMethodName(queryParameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert({\n typeReference: queryParameter.typeReference,\n value: queryParameter.value,\n as: \"request\"\n })\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 filteredHeaders = headers.filter((header) => !this.context.isDirectLiteral(header.typeReference));\n const sortedHeaders = this.context.sortTypeInstancesByRequiredFirst(filteredHeaders, request.headers ?? []);\n const headerFields = sortedHeaders.map((header) => ({\n name: this.context.getMethodName(header.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert({\n typeReference: header.typeReference,\n value: header.value,\n as: \"request\"\n })\n }));\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.RequestBody);\n const requestBodyFields =\n request.body != null\n ? this.getInlinedRequestBodyBuilderParameters({\n body: request.body,\n value: snippet.requestBody,\n filePropertyInfo\n })\n : [];\n this.context.errors.unscope();\n\n return java.TypeLiteral.builder({\n classReference: java.classReference({\n name: this.context.getClassName(request.declaration.name),\n packageName: this.context.getRequestsPackageName(request.declaration.fernFilepath)\n }),\n parameters: [...pathParameterFields, ...headerFields, ...queryParameterFields, ...requestBodyFields]\n });\n }\n\n private getRequestOptionsArg({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequest | FernIr.dynamic.BodyRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.TypeLiteral | undefined {\n const requestHeaders = \"headers\" in request ? (request.headers ?? []) : [];\n\n if (requestHeaders.length === 0 || Object.keys(snippet.headers ?? {}).length === 0) {\n return undefined;\n }\n\n this.context.errors.scope(Scope.Headers);\n const headers = this.context.associateByWireValue({\n parameters: requestHeaders,\n values: snippet.headers ?? {}\n });\n this.context.errors.unscope();\n\n if (headers.length === 0) {\n return undefined;\n }\n\n const requestOptionsClass = java.classReference({\n name: \"RequestOptions\",\n packageName: this.context.getCorePackageName()\n });\n\n let builderChain: java.AstNode = java.invokeMethod({\n on: requestOptionsClass,\n method: \"builder\",\n arguments_: []\n });\n\n for (const header of headers) {\n builderChain = java.invokeMethod({\n on: builderChain,\n method: \"addHeader\",\n arguments_: [\n java.TypeLiteral.string(header.name.wireValue),\n this.context.dynamicTypeLiteralMapper.convert(header)\n ]\n });\n }\n\n const buildMethodCall = java.invokeMethod({\n on: builderChain,\n method: \"build\",\n arguments_: []\n });\n\n return java.TypeLiteral.reference(buildMethodCall);\n }\n\n private getInlinedRequestBodyBuilderParameters({\n body,\n value,\n filePropertyInfo\n }: {\n body: FernIr.dynamic.InlinedRequestBody;\n value: unknown;\n filePropertyInfo: FilePropertyInfo;\n }): java.BuilderParameter[] {\n switch (body.type) {\n case \"properties\":\n return this.getInlinedRequestBodyPropertyBuilderParameters({ parameters: body.value, value });\n case \"referenced\":\n return [this.getReferencedRequestBodyPropertyBuilderParameter({ body, value })];\n case \"fileUpload\":\n return this.getFileUploadRequestBodyBuilderParameters({ filePropertyInfo });\n default:\n assertNever(body);\n }\n }\n\n private getFileUploadRequestBodyBuilderParameters({\n filePropertyInfo\n }: {\n filePropertyInfo: FilePropertyInfo;\n }): java.BuilderParameter[] {\n if (this.context.shouldInlineFileProperties()) {\n return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n }\n return filePropertyInfo.bodyPropertyFields;\n }\n\n private getReferencedRequestBodyPropertyBuilderParameter({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBody;\n value: unknown;\n }): java.BuilderParameter {\n return {\n name: this.context.getMethodName(body.bodyKey),\n value: this.getReferencedRequestBodyPropertyTypeLiteral({ body: body.bodyType, value })\n };\n }\n\n private getReferencedRequestBodyPropertyTypeLiteral({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBodyType;\n value: unknown;\n }): java.TypeLiteral {\n switch (body.type) {\n case \"bytes\":\n return this.getBytesBodyRequestArg({ value });\n case \"typeReference\":\n return this.context.dynamicTypeLiteralMapper.convert({\n typeReference: body.value,\n value,\n as: \"request\"\n });\n default:\n assertNever(body);\n }\n }\n\n private getInlinedRequestBodyPropertyBuilderParameters({\n parameters,\n value\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n value: unknown;\n }): java.BuilderParameter[] {\n const bodyProperties = this.context.associateByWireValue({\n parameters,\n values: this.context.getRecord(value) ?? {}\n });\n const filteredProperties = bodyProperties.filter(\n (parameter) => !this.context.isDirectLiteral(parameter.typeReference)\n );\n const sortedProperties = this.context.sortTypeInstancesByRequiredFirst(filteredProperties, parameters);\n return sortedProperties.map((parameter) => ({\n name: this.context.getMethodName(parameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert({\n typeReference: parameter.typeReference,\n value: parameter.value,\n as: \"request\"\n })\n }));\n }\n\n private getPathParameters({\n namedParameters,\n snippet\n }: {\n namedParameters: FernIr.dynamic.NamedParameter[];\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): java.BuilderParameter[] {\n const args: java.BuilderParameter[] = [];\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.getMethodName(parameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert(parameter)\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 getStyle(options: Options): Style {\n return options.style ?? this.context.options.style ?? Style.Full;\n }\n\n private getConfig(options: Options): Config {\n return options.config ?? this.context.options.config ?? {};\n }\n}\n"],"mappings":"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","names":["init_process","init_buffer","SNIPPET_PACKAGE_NAME","SNIPPET_CLASS_NAME","SNIPPET_METHOD_NAME","SNIPPET_METHOD_ARG","CLIENT_VAR_NAME","STRING_TYPE_REFERENCE","EndpointSnippetGenerator","context","formatter","__publicField","endpoint","request","options","_a","config","snippet","body","java_exports","writer","style","Style","assertNever","class_","stringArgs","_b","builderArgs","Severity","baseUrlArg","Scope","usedVariables","param","variable","variableName","apiPathParams","baseUrl","environment","classReference","value","auth","values","message","headers","args","header","arg","typeLiteral","pathParameters","field","requestOptionsArg","convertedValue","convertedValueStr","inlinePathParameters","inlineFileProperties","pathParameterFields","nonVariablePathParams","filePropertyInfo","_c","_d","_e","_f","filteredQueryParameters","queryParameter","queryParameterFields","filteredHeaders","headerFields","requestBodyFields","requestHeaders","requestOptionsClass","builderChain","buildMethodCall","parameters","filteredProperties","parameter","namedParameters","val"]}