@fern-api/python-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.
- package/cjs/DynamicSnippetsGenerator.cjs +1 -1
- package/cjs/DynamicSnippetsGenerator.cjs.map +1 -1
- package/cjs/DynamicSnippetsGenerator.d.cts +7 -1
- package/cjs/EndpointSnippetGenerator.cjs +6 -6
- package/cjs/EndpointSnippetGenerator.cjs.map +1 -1
- package/cjs/EndpointSnippetGenerator.d.cts +12 -4
- package/cjs/index.cjs +1 -1
- package/cjs/index.cjs.map +1 -1
- package/cjs/index.d.cts +1 -1
- package/esm/DynamicSnippetsGenerator.d.ts +7 -1
- package/esm/DynamicSnippetsGenerator.js +1 -1
- package/esm/EndpointSnippetGenerator.d.ts +12 -4
- package/esm/EndpointSnippetGenerator.js +1 -1
- package/esm/chunk-6JNSYN57.js +2 -0
- package/esm/chunk-6JNSYN57.js.map +1 -0
- package/esm/chunk-BZ5ZJPTG.js +2 -0
- package/esm/chunk-BZ5ZJPTG.js.map +1 -0
- package/esm/index.d.ts +1 -1
- package/esm/index.js +1 -1
- package/package.json +1 -1
- package/esm/chunk-3ODWLSDW.js +0 -2
- package/esm/chunk-3ODWLSDW.js.map +0 -1
- package/esm/chunk-H7RJMI6N.js +0 -2
- package/esm/chunk-H7RJMI6N.js.map +0 -1
|
@@ -17,7 +17,7 @@ ${o}`);this.isAtStartOfLine()&&(a=o+a),r&&(a+=`
|
|
|
17
17
|
`);if(a.length<=1){e.write(this.escapeString((l=a[0])!=null?l:"")),e.write('"""');return}i&&e.writeNoIndent(`\\
|
|
18
18
|
`),a.forEach((c,y)=>{e.writeNoIndent(this.escapeString(c)),y===a.length-1?o&&e.writeNoIndent(`\\
|
|
19
19
|
`):e.writeNoIndent(`
|
|
20
|
-
`)}),e.writeNoIndent('"""')}escapeString(e){let r=new RegExp(`(?<!\\\\)(["'\\\\\\t\\n\\r])`,"g"),i={'"':'\\"',"'":"\\'","\\":"\\\\"," ":"\\t","\n":"\\n","\r":"\\r"};return e.replace(r,o=>{var a;return(a=i[o])!=null?a:o})}writeUnknown({writer:e,value:r}){switch(typeof r){case"boolean":e.write(r?"True":"False");return;case"string":e.write(`"${this.escapeString(r)}"`);return;case"number":e.write(r.toString());return;case"object":if(r==null){e.write("None");return}if(Array.isArray(r)){this.writeUnknownArray({writer:e,value:r});return}this.writeUnknownObject({writer:e,value:r});return;default:throw new Error(`Internal error; unsupported unknown type: ${typeof r}`)}}writeUnknownArray({writer:e,value:r}){if(r.length===0){e.write("[]");return}e.writeLine("["),e.indent();for(let i of r)e.writeNode(n.unknown(i)),e.writeLine(",");e.dedent(),e.write("]")}writeUnknownObject({writer:e,value:r}){let i=Object.entries(r);if(i.length===0){e.write("{}");return}e.writeLine("{"),e.indent();for(let[o,a]of i)e.write(`"${o}": `),e.writeNode(n.unknown(a)),e.writeLine(",");e.dedent(),e.write("}")}};function jo({entries:n}){return n.filter(t=>!K.isNop(t.key)&&!K.isNop(t.value))}function qo({entries:n}){return n.filter(t=>!K.isNop(t.value))}function pt({values:n}){return n.filter(t=>!K.isNop(t))}function Go(n){return new se(n)}function zo(n){return new qe(n)}function Yo(n){return new ge(n)}function Ho(n){return new Y(n)}function Qo(n){return new fe(n)}function Zo(n){return new le(n)}function Jo(n){return new C(n)}function Ko(n){return new J(n)}function Xo(n){return new H(n)}function ea(n){return new j(n)}function ta(n){return new pe(n)}function ra(n){return new ce(n)}function na(n){return new de(n)}function ia(n){return new Z(n)}function oa(n){return new ue(n)}function aa(n){return new ye(n)}function sa(n){return new Q(n)}function ua(n){return new he(n)}function fa(n){return new xe(n)}u();f();var pa="value",ze=class{constructor({context:t}){p(this,"context");this.context=t}convert(t){if(t.value===null)return this.context.isNullable(t.typeReference)?d.TypeInstantiation.none():(this.context.errors.add({severity:T.Critical,message:"Expected non-null value, but got null"}),d.TypeInstantiation.nop());if(t.value===void 0)return d.TypeInstantiation.nop();switch(t.typeReference.type){case"list":return this.convertList({list:t.typeReference.value,value:t.value});case"literal":return this.convertLiteral({literalType:t.typeReference.value,value:t.value});case"map":return this.convertMap({map:t.typeReference,value:t.value});case"named":{let e=this.context.resolveNamedType({typeId:t.typeReference.value});return e==null?d.TypeInstantiation.nop():this.convertNamed({named:e,value:t.value,as:t.as})}case"optional":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as});case"nullable":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as});case"primitive":return this.convertPrimitive({primitive:t.typeReference.value,value:t.value,as:t.as});case"set":return this.convertSet({set:t.typeReference.value,value:t.value});case"unknown":return d.TypeInstantiation.unknown(t.value);default:I(t.typeReference)}}convertLiteral({literalType:t,value:e}){switch(t.type){case"boolean":{let r=this.context.getValueAsBoolean({value:e});return r==null?d.TypeInstantiation.nop():d.TypeInstantiation.bool(r)}case"string":{let r=this.context.getValueAsString({value:e});return r==null?d.TypeInstantiation.nop():d.TypeInstantiation.str(r)}default:I(t)}}convertList({list:t,value:e}){return Array.isArray(e)?d.TypeInstantiation.list(e.map((r,i)=>{this.context.errors.scope({index:i});try{return this.convert({typeReference:t,value:r})}finally{this.context.errors.unscope()}}),{multiline:!0}):(this.context.errors.add({severity:T.Critical,message:`Expected array but got: ${typeof e}`}),d.TypeInstantiation.nop())}convertSet({set:t,value:e}){return Array.isArray(e)?d.TypeInstantiation.list(e.map((r,i)=>{this.context.errors.scope({index:i});try{return this.convert({typeReference:t,value:r})}finally{this.context.errors.unscope()}}),{multiline:!0}):(this.context.errors.add({severity:T.Critical,message:`Expected array but got: ${typeof e}`}),d.TypeInstantiation.nop())}convertMap({map:t,value:e}){return typeof e!="object"||e==null?(this.context.errors.add({severity:T.Critical,message:`Expected object but got: ${e==null?"null":typeof e}`}),d.TypeInstantiation.nop()):d.TypeInstantiation.dict(Object.entries(e).map(([r,i])=>{this.context.errors.scope(r);try{return{key:this.convert({typeReference:t.key,value:r,as:"key"}),value:this.convert({typeReference:t.value,value:i})}}finally{this.context.errors.unscope()}}),{multiline:!0})}convertNamed({named:t,value:e,as:r}){switch(t.type){case"alias":return this.convert({typeReference:t.typeReference,value:e,as:r});case"discriminatedUnion":return this.convertDiscriminatedUnion({discriminatedUnion:t,value:e});case"enum":return this.convertEnum({enum_:t,value:e});case"object":return this.convertObject({object_:t,value:e});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:t,value:e});default:I(t)}}convertDiscriminatedUnion({discriminatedUnion:t,value:e}){let r=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:t,value:e});if(r==null)return d.TypeInstantiation.nop();let i=r.singleDiscriminatedUnionType,o=this.convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:r,unionVariant:i});if(o==null)return d.TypeInstantiation.nop();let a={name:this.context.getPropertyName(t.discriminant.name),value:d.TypeInstantiation.str(i.discriminantValue.wireValue)};return d.TypeInstantiation.typedDict([a,...o],{multiline:!0})}convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:t,unionVariant:e}){let r=this.getBaseFields({discriminatedUnionTypeInstance:t,singleDiscriminatedUnionType:e});switch(e.type){case"samePropertiesAsObject":{let i=this.context.resolveNamedType({typeId:e.typeId});if(i==null)return;let o=this.convertNamed({named:i,value:t.value});if(!o.isTypedDict()){this.context.errors.add({severity:T.Critical,message:"Internal error; expected union value to be an object"});return}let a=o.asTypedDictOrThrow();return[...r,...a.entries]}case"singleProperty":try{this.context.errors.scope(e.discriminantValue.wireValue);let i=this.context.getRecord(t.value);return i==null?[...r,{name:pa,value:this.convert({typeReference:e.typeReference,value:t.value})}]:[...r,{name:this.context.getPropertyName(e.discriminantValue.name),value:this.convert({typeReference:e.typeReference,value:i[e.discriminantValue.wireValue]})}]}finally{this.context.errors.unscope()}case"noProperties":return r;default:I(e)}}getBaseFields({discriminatedUnionTypeInstance:t,singleDiscriminatedUnionType:e}){var i,o;return this.context.associateByWireValue({parameters:(i=e.properties)!=null?i:[],values:(o=this.context.getRecord(t.value))!=null?o:{},ignoreMissingParameters:!0}).map(a=>{this.context.errors.scope(a.name.wireValue);try{return{name:this.context.getPropertyName(a.name.name),value:this.convert(a)}}finally{this.context.errors.unscope()}})}convertObject({object_:t,value:e}){var i;let r=this.context.associateByWireValue({parameters:t.properties,values:(i=this.context.getRecord(e))!=null?i:{}});return d.TypeInstantiation.typedDict(r.map(o=>{this.context.errors.scope(o.name.wireValue);try{return{name:this.context.getPropertyName(o.name.name),value:this.convert(o)}}finally{this.context.errors.unscope()}}),{multiline:!0})}convertEnum({enum_:t,value:e}){let r=this.getEnumValue({enum_:t,value:e});return r==null?d.TypeInstantiation.nop():d.TypeInstantiation.str(r)}getEnumValue({enum_:t,value:e}){if(typeof e!="string"){this.context.errors.add({severity:T.Critical,message:`Expected enum value string, got: ${typeof e}`});return}if(t.values.find(i=>i.wireValue===e)==null){this.context.errors.add({severity:T.Critical,message:`An enum value named "${e}" does not exist in this context`});return}return e}convertUndiscriminatedUnion({undiscriminatedUnion:t,value:e}){let r=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:e});return r==null?d.TypeInstantiation.nop():r}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:e}){for(let r of t.types)try{return this.convert({typeReference:r,value:e})}catch(i){continue}this.context.errors.add({severity:T.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof e}" value`})}convertPrimitive({primitive:t,value:e,as:r}){switch(t){case"INTEGER":case"LONG":case"UINT":case"UINT_64":{let i=this.getValueAsNumber({value:e,as:r});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.int(i)}case"FLOAT":case"DOUBLE":{let i=this.getValueAsNumber({value:e});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.float(i)}case"BOOLEAN":{let i=this.getValueAsBoolean({value:e,as:r});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.bool(i)}case"BASE_64":case"BIG_INTEGER":case"STRING":{let i=this.context.getValueAsString({value:e});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.str(i)}case"UUID":{let i=this.context.getValueAsString({value:e});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.uuid(i)}case"DATE":{let i=this.context.getValueAsString({value:e});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.date(i)}case"DATE_TIME":{let i=this.context.getValueAsString({value:e});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.datetime(i)}default:I(t)}}getValueAsNumber({value:t,as:e}){let r=e==="key"&&typeof t=="string"?Number(t):t;return this.context.getValueAsNumber({value:r})}getValueAsBoolean({value:t,as:e}){let r=e==="key"?typeof t=="string"?t==="true":t==="false"?!1:t:t;return this.context.getValueAsBoolean({value:r})}};u();f();var Ye=class{constructor({context:t}){p(this,"context");this.context=t}getFilePropertyInfo({body:t,value:e}){var o;let r={fileFields:[],bodyPropertyFields:[]},i=(o=this.context.getRecord(e))!=null?o:{};for(let a of t.properties)switch(a.type){case"file":{let l=this.getSingleFileProperty({property:a,record:i});if(d.TypeInstantiation.isNop(l))break;r.fileFields.push({name:this.context.getPropertyName(a.name),value:l});break}case"fileArray":{let l=this.getArrayFileProperty({property:a,record:i});if(d.TypeInstantiation.isNop(l))break;r.fileFields.push({name:this.context.getPropertyName(a.name),value:l});break}case"bodyProperty":{let l=this.getBodyProperty({property:a,record:i});if(d.TypeInstantiation.isNop(l))break;r.bodyPropertyFields.push({name:this.context.getPropertyName(a.name.name),value:l});break}default:I(a)}return r}getSingleFileProperty({property:t,record:e}){let r=this.context.getSingleFileValue({property:t,record:e});return r==null?d.TypeInstantiation.nop():this.context.getFileFromString(r)}getArrayFileProperty({property:t,record:e}){let r=this.context.getFileArrayValues({property:t,record:e});return r==null?d.TypeInstantiation.nop():d.TypeInstantiation.list(r.map(i=>this.context.getFileFromString(i)))}getBodyProperty({property:t,record:e}){let r=e[t.name.wireValue];return r==null?d.TypeInstantiation.nop():this.context.dynamicTypeLiteralMapper.convert({typeReference:t.typeReference,value:r})}};var la=["list","set"],He=class n extends Ne{constructor({ir:e,config:r}){var i;super({ir:e,config:r});p(this,"ir");p(this,"customConfig");p(this,"dynamicTypeLiteralMapper");p(this,"filePropertyMapper");this.ir=e,this.customConfig=(i=r.customConfig)!=null?i:{},this.dynamicTypeLiteralMapper=new ze({context:this}),this.filePropertyMapper=new Ye({context:this})}clone(){return new n({ir:this.ir,config:this.config})}getClassName(e){let r=e.pascalCase.safeName,i=this.getRootClientClassName();return r===i?`${i}Model`:r}getTypedDictClassName(e){return`${this.getClassName(e)}Params`}getPropertyName(e){let r=e.snakeCase.safeName;return r.startsWith("_")?"f_"+r.substring(r.lastIndexOf("_")+1):r}getMethodName(e){return la.includes(e.snakeCase.unsafeName)?e.snakeCase.unsafeName:e.snakeCase.safeName}getRootClientClassReference(){return d.reference({name:this.getRootClientClassName(),modulePath:this.getRootModulePath()})}getRootClientClassName(){var e,r;return((e=this.customConfig.client)==null?void 0:e.exported_class_name)!=null?this.customConfig.client.exported_class_name:this.customConfig.client_class_name!=null?this.customConfig.client_class_name:((r=this.customConfig.client)==null?void 0:r.class_name)!=null?this.customConfig.client.class_name:this.pascalCase(this.config.organization)+this.pascalCase(this.config.workspaceName)}getEnvironmentClassName(){return`${this.getRootClientClassName()}Environment`}getEnvironmentTypeReferenceFromID(e){let r=this.resolveEnvironmentName(e);if(r!=null)return d.accessAttribute({lhs:this.getEnvironmentClassReference(),rhs:d.codeBlock(this.getEnvironmentEnumName(r))})}getEnvironmentClassReference(){return d.reference({name:this.getEnvironmentClassName(),modulePath:this.getEnvironmentModulePath()})}getEnvironmentEnumName(e){return e.screamingSnakeCase.safeName}isPrimitive(e){switch(e.type){case"primitive":return!0;case"optional":case"nullable":return this.isPrimitive(e.value);case"named":{let r=this.resolveNamedType({typeId:e.value});if(r==null)return!1;switch(r.type){case"alias":return this.isPrimitive(r.typeReference);case"discriminatedUnion":case"undiscriminatedUnion":case"object":case"enum":return!1;default:I(r)}break}case"list":case"set":case"map":case"literal":case"unknown":return!1;default:I(e)}}getFileFromString(e){return d.TypeInstantiation.str(e)}getRootModulePath(){if(this.customConfig.package_name!=null)return[this.customConfig.package_name];let e=this.cleanOrganizationName();return this.customConfig.use_api_name_in_package?[e,this.getApiName()]:[e]}getCoreModulePath(){return this.getRootModulePath().concat("core")}getEnvironmentModulePath(){return this.getRootModulePath().concat("environment")}shouldInlinePathParameters(){return!0}cleanOrganizationName(){return this.config.organization.replace(/[^a-zA-Z0-9]/g,"_")}getApiName(){return st(this.config.workspaceName)}pascalCase(e){let r=at(e);return r.charAt(0).toUpperCase()+r.slice(1)}};u();f();var ca={type:"primitive",value:"STRING"},da=["example"],jr="client",Qe="request",Ze=class{constructor({context:t}){p(this,"context");this.context=t}async generateSnippet({endpoint:t,request:e}){return this.buildPythonFile({endpoint:t,snippet:e}).toString()}generateSnippetSync({endpoint:t,request:e}){return this.buildPythonFile({endpoint:t,snippet:e}).toString()}async generateSnippetAst({endpoint:t,request:e,options:r}){throw new Error("Unsupported")}buildPythonFile({endpoint:t,snippet:e}){return d.file({path:da,statements:[this.constructClient({endpoint:t,snippet:e}),this.callMethod({endpoint:t,snippet:e})]})}constructClient({endpoint:t,snippet:e}){return d.assign({lhs:d.reference({name:jr}),rhs:d.instantiateClass({classReference:this.context.getRootClientClassReference(),arguments_:this.getConstructorArgs({endpoint:t,snippet:e}).map(r=>d.methodArgument({name:r.name,value:r.value})),multiline:!0})})}getConstructorArgs({endpoint:t,snippet:e}){let r=[],i=this.getConstructorEnvironmentArgs({baseUrl:e.baseURL,environment:e.environment});return i.length>0&&r.push(...i),t.auth!=null&&(e.auth!=null?r.push(...this.getConstructorAuthArgs({auth:t.auth,values:e.auth})):this.context.errors.add({severity:T.Warning,message:`Auth with ${t.auth.type} configuration is required for this endpoint`})),this.context.errors.scope(B.PathParameters),this.context.ir.pathParameters!=null&&r.push(...this.getPathParameters({namedParameters:this.context.ir.pathParameters,snippet:e})),this.context.errors.unscope(),this.context.errors.scope(B.Headers),this.context.ir.headers!=null&&e.headers!=null&&r.push(...this.getConstructorHeaderArgs({headers:this.context.ir.headers,values:e.headers})),this.context.errors.unscope(),r}getConstructorEnvironmentArgs({baseUrl:t,environment:e}){let r=this.getEnvironmentValue({baseUrl:t,environment:e});return r==null?[]:e!=null&&this.context.isMultiEnvironmentValues(e)?[{name:"environment",value:r}]:[{name:this.getEnvironmentOptionName({environment:e}),value:r}]}getEnvironmentValue({baseUrl:t,environment:e}){if(t!=null&&e!=null){this.context.errors.add({severity:T.Critical,message:"Cannot specify both baseUrl and environment options"});return}if(t!=null)return d.TypeInstantiation.str(t);if(e!=null){if(this.context.isSingleEnvironmentID(e)){let r=this.context.getEnvironmentTypeReferenceFromID(e);if(r==null){this.context.errors.add({severity:T.Warning,message:`Environment ${JSON.stringify(e)} was not found`});return}return d.TypeInstantiation.reference(r)}if(this.context.isMultiEnvironmentValues(e))return this.context.validateMultiEnvironmentUrlValues(e)?d.TypeInstantiation.reference(d.instantiateClass({classReference:this.context.getEnvironmentClassReference(),arguments_:Object.entries(e).map(([r,i])=>({name:r,value:this.context.dynamicTypeLiteralMapper.convert({typeReference:ca,value:i})})).map(r=>d.methodArgument({name:r.name,value:r.value})),multiline:!0})):void 0}}getConstructorAuthArgs({auth:t,values:e}){switch(t.type){case"basic":return e.type!=="basic"?(this.addAuthMismatchError(t,e),[]):this.getConstructorBasicAuthArg({auth:t,values:e});case"bearer":return e.type!=="bearer"?(this.addAuthMismatchError(t,e),[]):this.getConstructorBearerAuthArgs({auth:t,values:e});case"header":return e.type!=="header"?(this.addAuthMismatchError(t,e),[]):this.getConstructorHeaderAuthArgs({auth:t,values:e});case"oauth":return e.type!=="oauth"?(this.addAuthMismatchError(t,e),[]):this.getConstructorOAuthArgs({auth:t,values:e});case"inferred":return e.type!=="inferred"?(this.addAuthMismatchError(t,e),[]):(this.addWarning("The Python SDK Generator does not support Inferred auth scheme yet"),[]);default:I(t)}}addAuthMismatchError(t,e){this.context.errors.add({severity:T.Critical,message:this.context.newAuthMismatchError({auth:t,values:e}).message})}addWarning(t){this.context.errors.add({severity:T.Warning,message:t})}getConstructorBasicAuthArg({auth:t,values:e}){return[{name:this.context.getPropertyName(t.username),value:d.TypeInstantiation.str(e.username)},{name:this.context.getPropertyName(t.password),value:d.TypeInstantiation.str(e.password)}]}getConstructorBearerAuthArgs({auth:t,values:e}){return[{name:this.context.getPropertyName(t.token),value:d.TypeInstantiation.str(e.token)}]}getConstructorHeaderAuthArgs({auth:t,values:e}){return[{name:this.context.getPropertyName(t.header.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:t.header.typeReference,value:e.value})}]}getConstructorOAuthArgs({auth:t,values:e}){return[{name:this.context.getPropertyName(t.clientId),value:d.TypeInstantiation.str(e.clientId)},{name:this.context.getPropertyName(t.clientSecret),value:d.TypeInstantiation.str(e.clientSecret)}]}getConstructorHeaderArgs({headers:t,values:e}){let r=[];for(let i of t){let o=this.getConstructorHeaderArg({header:i,value:e.value});o!=null&&r.push(o)}return r}getConstructorHeaderArg({header:t,value:e}){let r=this.context.dynamicTypeLiteralMapper.convert({typeReference:t.typeReference,value:e});if(!d.TypeInstantiation.isNop(r))return{name:this.context.getPropertyName(t.name.name),value:r}}callMethod({endpoint:t,snippet:e}){return d.invokeMethod({on:d.reference({name:jr}),method:this.getMethod({endpoint:t}),arguments_:this.getMethodArgs({endpoint:t,snippet:e}).map(r=>d.methodArgument({name:r.name,value:r.value})),multiline:!0})}getMethodArgs({endpoint:t,snippet:e}){switch(t.request.type){case"inlined":return this.getMethodArgsForInlinedRequest({request:t.request,snippet:e});case"body":return this.getMethodArgsForBodyRequest({request:t.request,snippet:e});default:I(t.request)}}getMethodArgsForBodyRequest({request:t,snippet:e}){var a,l;let r=[];this.context.errors.scope(B.PathParameters);let i=[...(a=this.context.ir.pathParameters)!=null?a:[],...(l=t.pathParameters)!=null?l:[]],o=new Set;if(t.body!=null){let c=this.getBodyRequestArgs({body:t.body,value:e.requestBody});o=new Set(c.map(y=>y.name))}if(i.length>0){let y=this.getPathParameters({namedParameters:i,snippet:e}).map(h=>o.has(h.name)?Ce(ne({},h),{name:h.name+"_"}):h);r.push(...y)}return this.context.errors.unscope(),this.context.errors.scope(B.RequestBody),t.body!=null&&r.push(...this.getBodyRequestArgs({body:t.body,value:e.requestBody})),this.context.errors.unscope(),r}getBodyRequestArgs({body:t,value:e}){switch(t.type){case"bytes":return[{name:Qe,value:this.getBytesBodyRequestTypeInstantiation({value:e})}];case"typeReference":return this.getBodyRequestArgsForTypeReference({typeReference:t.value,value:e});default:I(t)}}getBodyRequestArgsForTypeReference({typeReference:t,value:e}){switch(t.type){case"named":{let r=this.context.resolveNamedType({typeId:t.value});return r==null?[]:this.getBodyRequestArgsForNamedTypeReference({typeReference:t,named:r,value:e})}case"nullable":case"optional":{let r=t.value;if(r.type==="named"){let i=this.context.resolveNamedType({typeId:r.value});if((i==null?void 0:i.type)==="object")return[{name:Qe,value:this.context.dynamicTypeLiteralMapper.convert({typeReference:r,value:e})}]}return this.getBodyRequestArgsForTypeReference({typeReference:t.value,value:e})}case"list":case"map":case"set":case"literal":case"primitive":case"unknown":return[{name:Qe,value:this.context.dynamicTypeLiteralMapper.convert({typeReference:t,value:e})}];default:I(t)}}getBodyRequestArgsForNamedTypeReference({typeReference:t,named:e,value:r}){var i;switch(e.type){case"alias":return this.getBodyRequestArgsForTypeReference({typeReference:e.typeReference,value:r});case"enum":case"discriminatedUnion":case"undiscriminatedUnion":return[{name:Qe,value:this.context.dynamicTypeLiteralMapper.convert({typeReference:t,value:r})}];case"object":return this.context.associateByWireValue({parameters:e.properties,values:(i=this.context.getRecord(r))!=null?i:{}}).map(a=>({name:this.context.getPropertyName(a.name.name),value:this.context.dynamicTypeLiteralMapper.convert(a)}));default:I(e)}}getBodyRequestArgsForBytes({body:t,value:e}){let r=this.getBytesBodyRequestTypeInstantiation({value:e});return d.TypeInstantiation.isNop(r)?[]:[{name:this.context.getPropertyName(t.bodyKey),value:r}]}getBytesBodyRequestTypeInstantiation({value:t}){return typeof t!="string"?(this.context.errors.add({severity:T.Critical,message:`Expected bytes value to be a string, got ${typeof t}`}),d.TypeInstantiation.nop()):d.TypeInstantiation.bytes(t)}getMethodArgsForInlinedRequest({request:t,snippet:e}){let r=[],i=this.context.shouldInlinePathParameters();this.context.errors.scope(B.PathParameters);let o=[];t.pathParameters!=null&&o.push(...this.getPathParameters({namedParameters:t.pathParameters,snippet:e})),this.context.errors.unscope(),this.context.errors.scope(B.RequestBody);let a=this.getFilePropertyInfo({request:t,snippet:e});return this.context.errors.unscope(),this.context.includePathParametersInWrappedRequest({request:t,inlinePathParameters:i})||r.push(...o),this.context.needsRequestParameter({request:t,inlinePathParameters:i,inlineFileProperties:!0})&&r.push(...this.getInlinedRequestArgs({request:t,snippet:e,pathParameterFields:this.context.includePathParametersInWrappedRequest({request:t,inlinePathParameters:i})?o:[],filePropertyInfo:a})),r}getFilePropertyInfo({request:t,snippet:e}){return t.body==null||!this.context.isFileUploadRequestBody(t.body)?{fileFields:[],bodyPropertyFields:[]}:this.context.filePropertyMapper.getFilePropertyInfo({body:t.body,value:e.requestBody})}getInlinedRequestArgs({request:t,snippet:e,pathParameterFields:r,filePropertyInfo:i}){var h,x,R,v;this.context.errors.scope(B.QueryParameters);let a=this.context.associateQueryParametersByWireValue({parameters:(h=t.queryParameters)!=null?h:[],values:(x=e.queryParameters)!=null?x:{}}).map(g=>({name:this.context.getPropertyName(g.name.name),value:this.context.dynamicTypeLiteralMapper.convert(g)}));this.context.errors.unscope(),this.context.errors.scope(B.Headers);let c=this.context.associateByWireValue({parameters:(R=t.headers)!=null?R:[],values:(v=e.headers)!=null?v:{}}).map(g=>({name:this.context.getPropertyName(g.name.name),value:this.context.dynamicTypeLiteralMapper.convert(g)}));this.context.errors.unscope(),this.context.errors.scope(B.RequestBody);let y=t.body!=null?this.getInlinedRequestBodyObjectFields({body:t.body,value:e.requestBody,filePropertyInfo:i}):[];return this.context.errors.unscope(),[...r,...a,...c,...y]}getInlinedRequestBodyObjectFields({body:t,value:e,filePropertyInfo:r}){switch(t.type){case"properties":return this.getInlinedRequestBodyPropertyObjectFields({parameters:t.value,value:e});case"referenced":return this.getReferencedRequestBodyPropertyTypeInstantiation({body:t,value:e});case"fileUpload":return this.getFileUploadRequestBodyObjectFields({filePropertyInfo:r});default:I(t)}}getFileUploadRequestBodyObjectFields({filePropertyInfo:t}){return[...t.fileFields,...t.bodyPropertyFields]}getReferencedRequestBodyPropertyTypeInstantiation({body:t,value:e}){let r=t.bodyType;switch(r.type){case"bytes":return this.getBodyRequestArgsForBytes({body:t,value:e});case"typeReference":return this.getBodyRequestArgsForTypeReference({typeReference:r.value,value:e});default:I(r)}}getInlinedRequestBodyPropertyObjectFields({parameters:t,value:e}){var o;let r=[],i=this.context.associateByWireValue({parameters:t,values:(o=this.context.getRecord(e))!=null?o:{}});for(let a of i)r.push({name:this.context.getPropertyName(a.name.name),value:this.context.dynamicTypeLiteralMapper.convert(a)});return r}getPathParameters({namedParameters:t,snippet:e}){var o;let r=[],i=this.context.associateByWireValue({parameters:t,values:(o=e.pathParameters)!=null?o:{},ignoreMissingParameters:!0});for(let a of i)r.push({name:this.context.getPropertyName(a.name.name),value:this.context.dynamicTypeLiteralMapper.convert(a)});return r}getMethod({endpoint:t}){return t.declaration.fernFilepath.allParts.length>0?`${t.declaration.fernFilepath.allParts.map(e=>this.context.getMethodName(e)).join(".")}.${this.context.getMethodName(t.declaration.name)}`:this.context.getMethodName(t.declaration.name)}getEnvironmentOptionName({environment:t}){return t!=null?"environment":"base_url"}};var lt=class extends Ee{constructor({ir:t,config:e}){super(new He({ir:t,config:e}))}async generate(t){return super.generate(t)}generateSync(t){return super.generateSync(t)}async generateSnippetAst(t){return super.generateSnippetAst(t)}createSnippetGenerator(t){return new Ze({context:t})}};0&&(module.exports={DynamicSnippetsGenerator});
|
|
20
|
+
`)}),e.writeNoIndent('"""')}escapeString(e){let r=new RegExp(`(?<!\\\\)(["'\\\\\\t\\n\\r])`,"g"),i={'"':'\\"',"'":"\\'","\\":"\\\\"," ":"\\t","\n":"\\n","\r":"\\r"};return e.replace(r,o=>{var a;return(a=i[o])!=null?a:o})}writeUnknown({writer:e,value:r}){switch(typeof r){case"boolean":e.write(r?"True":"False");return;case"string":e.write(`"${this.escapeString(r)}"`);return;case"number":e.write(r.toString());return;case"object":if(r==null){e.write("None");return}if(Array.isArray(r)){this.writeUnknownArray({writer:e,value:r});return}this.writeUnknownObject({writer:e,value:r});return;default:throw new Error(`Internal error; unsupported unknown type: ${typeof r}`)}}writeUnknownArray({writer:e,value:r}){if(r.length===0){e.write("[]");return}e.writeLine("["),e.indent();for(let i of r)e.writeNode(n.unknown(i)),e.writeLine(",");e.dedent(),e.write("]")}writeUnknownObject({writer:e,value:r}){let i=Object.entries(r);if(i.length===0){e.write("{}");return}e.writeLine("{"),e.indent();for(let[o,a]of i)e.write(`"${o}": `),e.writeNode(n.unknown(a)),e.writeLine(",");e.dedent(),e.write("}")}};function jo({entries:n}){return n.filter(t=>!K.isNop(t.key)&&!K.isNop(t.value))}function qo({entries:n}){return n.filter(t=>!K.isNop(t.value))}function pt({values:n}){return n.filter(t=>!K.isNop(t))}function Go(n){return new se(n)}function zo(n){return new qe(n)}function Yo(n){return new ge(n)}function Ho(n){return new Y(n)}function Qo(n){return new fe(n)}function Zo(n){return new le(n)}function Jo(n){return new C(n)}function Ko(n){return new J(n)}function Xo(n){return new H(n)}function ea(n){return new j(n)}function ta(n){return new pe(n)}function ra(n){return new ce(n)}function na(n){return new de(n)}function ia(n){return new Z(n)}function oa(n){return new ue(n)}function aa(n){return new ye(n)}function sa(n){return new Q(n)}function ua(n){return new he(n)}function fa(n){return new xe(n)}u();f();var pa="value",ze=class{constructor({context:t}){p(this,"context");this.context=t}convert(t){if(t.value===null)return this.context.isNullable(t.typeReference)?d.TypeInstantiation.none():(this.context.errors.add({severity:T.Critical,message:"Expected non-null value, but got null"}),d.TypeInstantiation.nop());if(t.value===void 0)return d.TypeInstantiation.nop();switch(t.typeReference.type){case"list":return this.convertList({list:t.typeReference.value,value:t.value});case"literal":return this.convertLiteral({literalType:t.typeReference.value,value:t.value});case"map":return this.convertMap({map:t.typeReference,value:t.value});case"named":{let e=this.context.resolveNamedType({typeId:t.typeReference.value});return e==null?d.TypeInstantiation.nop():this.convertNamed({named:e,value:t.value,as:t.as})}case"optional":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as});case"nullable":return this.convert({typeReference:t.typeReference.value,value:t.value,as:t.as});case"primitive":return this.convertPrimitive({primitive:t.typeReference.value,value:t.value,as:t.as});case"set":return this.convertSet({set:t.typeReference.value,value:t.value});case"unknown":return d.TypeInstantiation.unknown(t.value);default:I(t.typeReference)}}convertLiteral({literalType:t,value:e}){switch(t.type){case"boolean":{let r=this.context.getValueAsBoolean({value:e});return r==null?d.TypeInstantiation.nop():d.TypeInstantiation.bool(r)}case"string":{let r=this.context.getValueAsString({value:e});return r==null?d.TypeInstantiation.nop():d.TypeInstantiation.str(r)}default:I(t)}}convertList({list:t,value:e}){return Array.isArray(e)?d.TypeInstantiation.list(e.map((r,i)=>{this.context.errors.scope({index:i});try{return this.convert({typeReference:t,value:r})}finally{this.context.errors.unscope()}}),{multiline:!0}):(this.context.errors.add({severity:T.Critical,message:`Expected array but got: ${typeof e}`}),d.TypeInstantiation.nop())}convertSet({set:t,value:e}){return Array.isArray(e)?d.TypeInstantiation.list(e.map((r,i)=>{this.context.errors.scope({index:i});try{return this.convert({typeReference:t,value:r})}finally{this.context.errors.unscope()}}),{multiline:!0}):(this.context.errors.add({severity:T.Critical,message:`Expected array but got: ${typeof e}`}),d.TypeInstantiation.nop())}convertMap({map:t,value:e}){return typeof e!="object"||e==null?(this.context.errors.add({severity:T.Critical,message:`Expected object but got: ${e==null?"null":typeof e}`}),d.TypeInstantiation.nop()):d.TypeInstantiation.dict(Object.entries(e).map(([r,i])=>{this.context.errors.scope(r);try{return{key:this.convert({typeReference:t.key,value:r,as:"key"}),value:this.convert({typeReference:t.value,value:i})}}finally{this.context.errors.unscope()}}),{multiline:!0})}convertNamed({named:t,value:e,as:r}){switch(t.type){case"alias":return this.convert({typeReference:t.typeReference,value:e,as:r});case"discriminatedUnion":return this.convertDiscriminatedUnion({discriminatedUnion:t,value:e});case"enum":return this.convertEnum({enum_:t,value:e});case"object":return this.convertObject({object_:t,value:e});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:t,value:e});default:I(t)}}convertDiscriminatedUnion({discriminatedUnion:t,value:e}){let r=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:t,value:e});if(r==null)return d.TypeInstantiation.nop();let i=r.singleDiscriminatedUnionType,o=this.convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:r,unionVariant:i});if(o==null)return d.TypeInstantiation.nop();let a={name:this.context.getPropertyName(t.discriminant.name),value:d.TypeInstantiation.str(i.discriminantValue.wireValue)};return d.TypeInstantiation.typedDict([a,...o],{multiline:!0})}convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:t,unionVariant:e}){let r=this.getBaseFields({discriminatedUnionTypeInstance:t,singleDiscriminatedUnionType:e});switch(e.type){case"samePropertiesAsObject":{let i=this.context.resolveNamedType({typeId:e.typeId});if(i==null)return;let o=this.convertNamed({named:i,value:t.value});if(!o.isTypedDict()){this.context.errors.add({severity:T.Critical,message:"Internal error; expected union value to be an object"});return}let a=o.asTypedDictOrThrow();return[...r,...a.entries]}case"singleProperty":try{this.context.errors.scope(e.discriminantValue.wireValue);let i=this.context.getRecord(t.value);return i==null?[...r,{name:pa,value:this.convert({typeReference:e.typeReference,value:t.value})}]:[...r,{name:this.context.getPropertyName(e.discriminantValue.name),value:this.convert({typeReference:e.typeReference,value:i[e.discriminantValue.wireValue]})}]}finally{this.context.errors.unscope()}case"noProperties":return r;default:I(e)}}getBaseFields({discriminatedUnionTypeInstance:t,singleDiscriminatedUnionType:e}){var i,o;return this.context.associateByWireValue({parameters:(i=e.properties)!=null?i:[],values:(o=this.context.getRecord(t.value))!=null?o:{},ignoreMissingParameters:!0}).map(a=>{this.context.errors.scope(a.name.wireValue);try{return{name:this.context.getPropertyName(a.name.name),value:this.convert(a)}}finally{this.context.errors.unscope()}})}convertObject({object_:t,value:e}){var i;let r=this.context.associateByWireValue({parameters:t.properties,values:(i=this.context.getRecord(e))!=null?i:{}});return d.TypeInstantiation.typedDict(r.map(o=>{this.context.errors.scope(o.name.wireValue);try{return{name:this.context.getPropertyName(o.name.name),value:this.convert(o)}}finally{this.context.errors.unscope()}}),{multiline:!0})}convertEnum({enum_:t,value:e}){let r=this.getEnumValue({enum_:t,value:e});return r==null?d.TypeInstantiation.nop():d.TypeInstantiation.str(r)}getEnumValue({enum_:t,value:e}){if(typeof e!="string"){this.context.errors.add({severity:T.Critical,message:`Expected enum value string, got: ${typeof e}`});return}if(t.values.find(i=>i.wireValue===e)==null){this.context.errors.add({severity:T.Critical,message:`An enum value named "${e}" does not exist in this context`});return}return e}convertUndiscriminatedUnion({undiscriminatedUnion:t,value:e}){let r=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:e});return r==null?d.TypeInstantiation.nop():r}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:t,value:e}){for(let r of t.types)try{return this.convert({typeReference:r,value:e})}catch(i){continue}this.context.errors.add({severity:T.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof e}" value`})}convertPrimitive({primitive:t,value:e,as:r}){switch(t){case"INTEGER":case"LONG":case"UINT":case"UINT_64":{let i=this.getValueAsNumber({value:e,as:r});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.int(i)}case"FLOAT":case"DOUBLE":{let i=this.getValueAsNumber({value:e});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.float(i)}case"BOOLEAN":{let i=this.getValueAsBoolean({value:e,as:r});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.bool(i)}case"BASE_64":case"BIG_INTEGER":case"STRING":{let i=this.context.getValueAsString({value:e});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.str(i)}case"UUID":{let i=this.context.getValueAsString({value:e});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.uuid(i)}case"DATE":{let i=this.context.getValueAsString({value:e});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.date(i)}case"DATE_TIME":{let i=this.context.getValueAsString({value:e});return i==null?d.TypeInstantiation.nop():d.TypeInstantiation.datetime(i)}default:I(t)}}getValueAsNumber({value:t,as:e}){let r=e==="key"&&typeof t=="string"?Number(t):t;return this.context.getValueAsNumber({value:r})}getValueAsBoolean({value:t,as:e}){let r=e==="key"?typeof t=="string"?t==="true":t==="false"?!1:t:t;return this.context.getValueAsBoolean({value:r})}};u();f();var Ye=class{constructor({context:t}){p(this,"context");this.context=t}getFilePropertyInfo({body:t,value:e}){var o;let r={fileFields:[],bodyPropertyFields:[]},i=(o=this.context.getRecord(e))!=null?o:{};for(let a of t.properties)switch(a.type){case"file":{let l=this.getSingleFileProperty({property:a,record:i});if(d.TypeInstantiation.isNop(l))break;r.fileFields.push({name:this.context.getPropertyName(a.name),value:l});break}case"fileArray":{let l=this.getArrayFileProperty({property:a,record:i});if(d.TypeInstantiation.isNop(l))break;r.fileFields.push({name:this.context.getPropertyName(a.name),value:l});break}case"bodyProperty":{let l=this.getBodyProperty({property:a,record:i});if(d.TypeInstantiation.isNop(l))break;r.bodyPropertyFields.push({name:this.context.getPropertyName(a.name.name),value:l});break}default:I(a)}return r}getSingleFileProperty({property:t,record:e}){let r=this.context.getSingleFileValue({property:t,record:e});return r==null?d.TypeInstantiation.nop():this.context.getFileFromString(r)}getArrayFileProperty({property:t,record:e}){let r=this.context.getFileArrayValues({property:t,record:e});return r==null?d.TypeInstantiation.nop():d.TypeInstantiation.list(r.map(i=>this.context.getFileFromString(i)))}getBodyProperty({property:t,record:e}){let r=e[t.name.wireValue];return r==null?d.TypeInstantiation.nop():this.context.dynamicTypeLiteralMapper.convert({typeReference:t.typeReference,value:r})}};var la=["list","set"],He=class n extends Ne{constructor({ir:e,config:r}){var i;super({ir:e,config:r});p(this,"ir");p(this,"customConfig");p(this,"dynamicTypeLiteralMapper");p(this,"filePropertyMapper");this.ir=e,this.customConfig=(i=r.customConfig)!=null?i:{},this.dynamicTypeLiteralMapper=new ze({context:this}),this.filePropertyMapper=new Ye({context:this})}clone(){return new n({ir:this.ir,config:this.config})}getClassName(e){let r=e.pascalCase.safeName,i=this.getRootClientClassName();return r===i?`${i}Model`:r}getTypedDictClassName(e){return`${this.getClassName(e)}Params`}getPropertyName(e){let r=e.snakeCase.safeName;return r.startsWith("_")?"f_"+r.substring(r.lastIndexOf("_")+1):r}getMethodName(e){return la.includes(e.snakeCase.unsafeName)?e.snakeCase.unsafeName:e.snakeCase.safeName}getRootClientClassReference(){return d.reference({name:this.getRootClientClassName(),modulePath:this.getRootModulePath()})}getRootClientClassName(){var e,r;return((e=this.customConfig.client)==null?void 0:e.exported_class_name)!=null?this.customConfig.client.exported_class_name:this.customConfig.client_class_name!=null?this.customConfig.client_class_name:((r=this.customConfig.client)==null?void 0:r.class_name)!=null?this.customConfig.client.class_name:this.pascalCase(this.config.organization)+this.pascalCase(this.config.workspaceName)}getEnvironmentClassName(){return`${this.getRootClientClassName()}Environment`}getEnvironmentTypeReferenceFromID(e){let r=this.resolveEnvironmentName(e);if(r!=null)return d.accessAttribute({lhs:this.getEnvironmentClassReference(),rhs:d.codeBlock(this.getEnvironmentEnumName(r))})}getEnvironmentClassReference(){return d.reference({name:this.getEnvironmentClassName(),modulePath:this.getEnvironmentModulePath()})}getEnvironmentEnumName(e){return e.screamingSnakeCase.safeName}isPrimitive(e){switch(e.type){case"primitive":return!0;case"optional":case"nullable":return this.isPrimitive(e.value);case"named":{let r=this.resolveNamedType({typeId:e.value});if(r==null)return!1;switch(r.type){case"alias":return this.isPrimitive(r.typeReference);case"discriminatedUnion":case"undiscriminatedUnion":case"object":case"enum":return!1;default:I(r)}break}case"list":case"set":case"map":case"literal":case"unknown":return!1;default:I(e)}}getFileFromString(e){return d.TypeInstantiation.str(e)}getRootModulePath(){if(this.customConfig.package_name!=null)return[this.customConfig.package_name];let e=this.cleanOrganizationName();return this.customConfig.use_api_name_in_package?[e,this.getApiName()]:[e]}getCoreModulePath(){return this.getRootModulePath().concat("core")}getEnvironmentModulePath(){return this.getRootModulePath().concat("environment")}shouldInlinePathParameters(){return!0}cleanOrganizationName(){return this.config.organization.replace(/[^a-zA-Z0-9]/g,"_")}getApiName(){return st(this.config.workspaceName)}pascalCase(e){let r=at(e);return r.charAt(0).toUpperCase()+r.slice(1)}};u();f();var ca={type:"primitive",value:"STRING"},da=["example"],jr="client",Qe="request",Ze=class{constructor({context:t}){p(this,"context");this.context=t}async generateSnippet({endpoint:t,request:e}){return this.buildPythonFile({endpoint:t,snippet:e}).toString()}generateSnippetSync({endpoint:t,request:e}){return this.buildPythonFile({endpoint:t,snippet:e}).toString()}async generateSnippetAst({endpoint:t,request:e}){return this.buildPythonFile({endpoint:t,snippet:e})}generateMethodCallSnippetAst({endpoint:t,request:e}){return this.callMethod({endpoint:t,snippet:e})}buildPythonFile({endpoint:t,snippet:e}){return d.file({path:da,statements:[this.constructClient({endpoint:t,snippet:e}),this.callMethod({endpoint:t,snippet:e})]})}constructClient({endpoint:t,snippet:e}){return d.assign({lhs:d.reference({name:jr}),rhs:d.instantiateClass({classReference:this.context.getRootClientClassReference(),arguments_:this.getConstructorArgs({endpoint:t,snippet:e}).map(r=>d.methodArgument({name:r.name,value:r.value})),multiline:!0})})}getConstructorArgs({endpoint:t,snippet:e}){let r=[],i=this.getConstructorEnvironmentArgs({baseUrl:e.baseURL,environment:e.environment});return i.length>0&&r.push(...i),t.auth!=null&&(e.auth!=null?r.push(...this.getConstructorAuthArgs({auth:t.auth,values:e.auth})):this.context.errors.add({severity:T.Warning,message:`Auth with ${t.auth.type} configuration is required for this endpoint`})),this.context.errors.scope(B.PathParameters),this.context.ir.pathParameters!=null&&r.push(...this.getPathParameters({namedParameters:this.context.ir.pathParameters,snippet:e})),this.context.errors.unscope(),this.context.errors.scope(B.Headers),this.context.ir.headers!=null&&e.headers!=null&&r.push(...this.getConstructorHeaderArgs({headers:this.context.ir.headers,values:e.headers})),this.context.errors.unscope(),r}getConstructorEnvironmentArgs({baseUrl:t,environment:e}){let r=this.getEnvironmentValue({baseUrl:t,environment:e});return r==null?[]:e!=null&&this.context.isMultiEnvironmentValues(e)?[{name:"environment",value:r}]:[{name:this.getEnvironmentOptionName({environment:e}),value:r}]}getEnvironmentValue({baseUrl:t,environment:e}){if(t!=null&&e!=null){this.context.errors.add({severity:T.Critical,message:"Cannot specify both baseUrl and environment options"});return}if(t!=null)return d.TypeInstantiation.str(t);if(e!=null){if(this.context.isSingleEnvironmentID(e)){let r=this.context.getEnvironmentTypeReferenceFromID(e);if(r==null){this.context.errors.add({severity:T.Warning,message:`Environment ${JSON.stringify(e)} was not found`});return}return d.TypeInstantiation.reference(r)}if(this.context.isMultiEnvironmentValues(e))return this.context.validateMultiEnvironmentUrlValues(e)?d.TypeInstantiation.reference(d.instantiateClass({classReference:this.context.getEnvironmentClassReference(),arguments_:Object.entries(e).map(([r,i])=>({name:r,value:this.context.dynamicTypeLiteralMapper.convert({typeReference:ca,value:i})})).map(r=>d.methodArgument({name:r.name,value:r.value})),multiline:!0})):void 0}}getConstructorAuthArgs({auth:t,values:e}){switch(t.type){case"basic":return e.type!=="basic"?(this.addAuthMismatchError(t,e),[]):this.getConstructorBasicAuthArg({auth:t,values:e});case"bearer":return e.type!=="bearer"?(this.addAuthMismatchError(t,e),[]):this.getConstructorBearerAuthArgs({auth:t,values:e});case"header":return e.type!=="header"?(this.addAuthMismatchError(t,e),[]):this.getConstructorHeaderAuthArgs({auth:t,values:e});case"oauth":return e.type!=="oauth"?(this.addAuthMismatchError(t,e),[]):this.getConstructorOAuthArgs({auth:t,values:e});case"inferred":return e.type!=="inferred"?(this.addAuthMismatchError(t,e),[]):(this.addWarning("The Python SDK Generator does not support Inferred auth scheme yet"),[]);default:I(t)}}addAuthMismatchError(t,e){this.context.errors.add({severity:T.Critical,message:this.context.newAuthMismatchError({auth:t,values:e}).message})}addWarning(t){this.context.errors.add({severity:T.Warning,message:t})}getConstructorBasicAuthArg({auth:t,values:e}){return[{name:this.context.getPropertyName(t.username),value:d.TypeInstantiation.str(e.username)},{name:this.context.getPropertyName(t.password),value:d.TypeInstantiation.str(e.password)}]}getConstructorBearerAuthArgs({auth:t,values:e}){return[{name:this.context.getPropertyName(t.token),value:d.TypeInstantiation.str(e.token)}]}getConstructorHeaderAuthArgs({auth:t,values:e}){return[{name:this.context.getPropertyName(t.header.name.name),value:this.context.dynamicTypeLiteralMapper.convert({typeReference:t.header.typeReference,value:e.value})}]}getConstructorOAuthArgs({auth:t,values:e}){return[{name:this.context.getPropertyName(t.clientId),value:d.TypeInstantiation.str(e.clientId)},{name:this.context.getPropertyName(t.clientSecret),value:d.TypeInstantiation.str(e.clientSecret)}]}getConstructorHeaderArgs({headers:t,values:e}){let r=[];for(let i of t){let o=this.getConstructorHeaderArg({header:i,value:e.value});o!=null&&r.push(o)}return r}getConstructorHeaderArg({header:t,value:e}){let r=this.context.dynamicTypeLiteralMapper.convert({typeReference:t.typeReference,value:e});if(!d.TypeInstantiation.isNop(r))return{name:this.context.getPropertyName(t.name.name),value:r}}callMethod({endpoint:t,snippet:e}){return d.invokeMethod({on:d.reference({name:jr}),method:this.getMethod({endpoint:t}),arguments_:this.getMethodArgs({endpoint:t,snippet:e}).map(r=>d.methodArgument({name:r.name,value:r.value})),multiline:!0})}getMethodArgs({endpoint:t,snippet:e}){switch(t.request.type){case"inlined":return this.getMethodArgsForInlinedRequest({request:t.request,snippet:e});case"body":return this.getMethodArgsForBodyRequest({request:t.request,snippet:e});default:I(t.request)}}getMethodArgsForBodyRequest({request:t,snippet:e}){var a,l;let r=[];this.context.errors.scope(B.PathParameters);let i=[...(a=this.context.ir.pathParameters)!=null?a:[],...(l=t.pathParameters)!=null?l:[]],o=new Set;if(t.body!=null){let c=this.getBodyRequestArgs({body:t.body,value:e.requestBody});o=new Set(c.map(y=>y.name))}if(i.length>0){let y=this.getPathParameters({namedParameters:i,snippet:e}).map(h=>o.has(h.name)?Ce(ne({},h),{name:h.name+"_"}):h);r.push(...y)}return this.context.errors.unscope(),this.context.errors.scope(B.RequestBody),t.body!=null&&r.push(...this.getBodyRequestArgs({body:t.body,value:e.requestBody})),this.context.errors.unscope(),r}getBodyRequestArgs({body:t,value:e}){switch(t.type){case"bytes":return[{name:Qe,value:this.getBytesBodyRequestTypeInstantiation({value:e})}];case"typeReference":return this.getBodyRequestArgsForTypeReference({typeReference:t.value,value:e});default:I(t)}}getBodyRequestArgsForTypeReference({typeReference:t,value:e}){switch(t.type){case"named":{let r=this.context.resolveNamedType({typeId:t.value});return r==null?[]:this.getBodyRequestArgsForNamedTypeReference({typeReference:t,named:r,value:e})}case"nullable":case"optional":{let r=t.value;if(r.type==="named"){let i=this.context.resolveNamedType({typeId:r.value});if((i==null?void 0:i.type)==="object")return[{name:Qe,value:this.context.dynamicTypeLiteralMapper.convert({typeReference:r,value:e})}]}return this.getBodyRequestArgsForTypeReference({typeReference:t.value,value:e})}case"list":case"map":case"set":case"literal":case"primitive":case"unknown":return[{name:Qe,value:this.context.dynamicTypeLiteralMapper.convert({typeReference:t,value:e})}];default:I(t)}}getBodyRequestArgsForNamedTypeReference({typeReference:t,named:e,value:r}){var i;switch(e.type){case"alias":return this.getBodyRequestArgsForTypeReference({typeReference:e.typeReference,value:r});case"enum":case"discriminatedUnion":case"undiscriminatedUnion":return[{name:Qe,value:this.context.dynamicTypeLiteralMapper.convert({typeReference:t,value:r})}];case"object":return this.context.associateByWireValue({parameters:e.properties,values:(i=this.context.getRecord(r))!=null?i:{}}).map(a=>({name:this.context.getPropertyName(a.name.name),value:this.context.dynamicTypeLiteralMapper.convert(a)}));default:I(e)}}getBodyRequestArgsForBytes({body:t,value:e}){let r=this.getBytesBodyRequestTypeInstantiation({value:e});return d.TypeInstantiation.isNop(r)?[]:[{name:this.context.getPropertyName(t.bodyKey),value:r}]}getBytesBodyRequestTypeInstantiation({value:t}){return typeof t!="string"?(this.context.errors.add({severity:T.Critical,message:`Expected bytes value to be a string, got ${typeof t}`}),d.TypeInstantiation.nop()):d.TypeInstantiation.bytes(t)}getMethodArgsForInlinedRequest({request:t,snippet:e}){let r=[],i=this.context.shouldInlinePathParameters();this.context.errors.scope(B.PathParameters);let o=[];t.pathParameters!=null&&o.push(...this.getPathParameters({namedParameters:t.pathParameters,snippet:e})),this.context.errors.unscope(),this.context.errors.scope(B.RequestBody);let a=this.getFilePropertyInfo({request:t,snippet:e});return this.context.errors.unscope(),this.context.includePathParametersInWrappedRequest({request:t,inlinePathParameters:i})||r.push(...o),this.context.needsRequestParameter({request:t,inlinePathParameters:i,inlineFileProperties:!0})&&r.push(...this.getInlinedRequestArgs({request:t,snippet:e,pathParameterFields:this.context.includePathParametersInWrappedRequest({request:t,inlinePathParameters:i})?o:[],filePropertyInfo:a})),r}getFilePropertyInfo({request:t,snippet:e}){return t.body==null||!this.context.isFileUploadRequestBody(t.body)?{fileFields:[],bodyPropertyFields:[]}:this.context.filePropertyMapper.getFilePropertyInfo({body:t.body,value:e.requestBody})}getInlinedRequestArgs({request:t,snippet:e,pathParameterFields:r,filePropertyInfo:i}){var h,x,R,v;this.context.errors.scope(B.QueryParameters);let a=this.context.associateQueryParametersByWireValue({parameters:(h=t.queryParameters)!=null?h:[],values:(x=e.queryParameters)!=null?x:{}}).map(g=>({name:this.context.getPropertyName(g.name.name),value:this.context.dynamicTypeLiteralMapper.convert(g)}));this.context.errors.unscope(),this.context.errors.scope(B.Headers);let c=this.context.associateByWireValue({parameters:(R=t.headers)!=null?R:[],values:(v=e.headers)!=null?v:{}}).map(g=>({name:this.context.getPropertyName(g.name.name),value:this.context.dynamicTypeLiteralMapper.convert(g)}));this.context.errors.unscope(),this.context.errors.scope(B.RequestBody);let y=t.body!=null?this.getInlinedRequestBodyObjectFields({body:t.body,value:e.requestBody,filePropertyInfo:i}):[];return this.context.errors.unscope(),[...r,...a,...c,...y]}getInlinedRequestBodyObjectFields({body:t,value:e,filePropertyInfo:r}){switch(t.type){case"properties":return this.getInlinedRequestBodyPropertyObjectFields({parameters:t.value,value:e});case"referenced":return this.getReferencedRequestBodyPropertyTypeInstantiation({body:t,value:e});case"fileUpload":return this.getFileUploadRequestBodyObjectFields({filePropertyInfo:r});default:I(t)}}getFileUploadRequestBodyObjectFields({filePropertyInfo:t}){return[...t.fileFields,...t.bodyPropertyFields]}getReferencedRequestBodyPropertyTypeInstantiation({body:t,value:e}){let r=t.bodyType;switch(r.type){case"bytes":return this.getBodyRequestArgsForBytes({body:t,value:e});case"typeReference":return this.getBodyRequestArgsForTypeReference({typeReference:r.value,value:e});default:I(r)}}getInlinedRequestBodyPropertyObjectFields({parameters:t,value:e}){var o;let r=[],i=this.context.associateByWireValue({parameters:t,values:(o=this.context.getRecord(e))!=null?o:{}});for(let a of i)r.push({name:this.context.getPropertyName(a.name.name),value:this.context.dynamicTypeLiteralMapper.convert(a)});return r}getPathParameters({namedParameters:t,snippet:e}){var o;let r=[],i=this.context.associateByWireValue({parameters:t,values:(o=e.pathParameters)!=null?o:{},ignoreMissingParameters:!0});for(let a of i)r.push({name:this.context.getPropertyName(a.name.name),value:this.context.dynamicTypeLiteralMapper.convert(a)});return r}getMethod({endpoint:t}){return t.declaration.fernFilepath.allParts.length>0?`${t.declaration.fernFilepath.allParts.map(e=>this.context.getMethodName(e)).join(".")}.${this.context.getMethodName(t.declaration.name)}`:this.context.getMethodName(t.declaration.name)}getEnvironmentOptionName({environment:t}){return t!=null?"environment":"base_url"}};var lt=class extends Ee{constructor({ir:t,config:e}){super(new He({ir:t,config:e}))}async generate(t){return super.generate(t)}generateSync(t){return super.generateSync(t)}async generateSnippetAst(t){return super.generateSnippetAst(t)}generateMethodCallSnippetAst(t){let e=this.context.resolveEndpointLocationOrThrow(t.endpoint);if(e.length===0)throw new Error(`No endpoints found that match "${t.endpoint.method} ${t.endpoint.path}"`);let r;for(let i of e){let o=this.context.clone(),a=this.createSnippetGenerator(o);try{return a.generateMethodCallSnippetAst({endpoint:i,request:t})}catch(l){r=l}}throw r!=null?r:new Error(`Failed to generate method call snippet AST for endpoint: ${t.endpoint.method} ${t.endpoint.path}`)}createSnippetGenerator(t){return new Ze({context:t})}};0&&(module.exports={DynamicSnippetsGenerator});
|
|
21
21
|
/*! Bundled license information:
|
|
22
22
|
|
|
23
23
|
@esbuild-plugins/node-globals-polyfill/Buffer.js:
|