@fern-api/php-dynamic-snippets 1.25.0 → 1.25.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/index.cjs +44 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +164 -0
  4. package/dist/index.d.ts +164 -0
  5. package/dist/index.js +44 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +11 -12
  8. package/cjs/DynamicSnippetsGenerator.cjs +0 -49
  9. package/cjs/DynamicSnippetsGenerator.cjs.map +0 -1
  10. package/cjs/DynamicSnippetsGenerator.d.cts +0 -18
  11. package/cjs/DynamicSnippetsGeneratorContext-CwkDTYOI.d.cts +0 -83
  12. package/cjs/EndpointSnippetGenerator.cjs +0 -49
  13. package/cjs/EndpointSnippetGenerator.cjs.map +0 -1
  14. package/cjs/EndpointSnippetGenerator.d.cts +0 -76
  15. package/cjs/context/DynamicSnippetsGeneratorContext.cjs +0 -47
  16. package/cjs/context/DynamicSnippetsGeneratorContext.cjs.map +0 -1
  17. package/cjs/context/DynamicSnippetsGeneratorContext.d.cts +0 -4
  18. package/cjs/context/DynamicTypeLiteralMapper.cjs +0 -47
  19. package/cjs/context/DynamicTypeLiteralMapper.cjs.map +0 -1
  20. package/cjs/context/DynamicTypeLiteralMapper.d.cts +0 -4
  21. package/cjs/context/FilePropertyMapper.cjs +0 -47
  22. package/cjs/context/FilePropertyMapper.cjs.map +0 -1
  23. package/cjs/context/FilePropertyMapper.d.cts +0 -4
  24. package/cjs/index.cjs +0 -49
  25. package/cjs/index.cjs.map +0 -1
  26. package/cjs/index.d.cts +0 -6
  27. package/esm/DynamicSnippetsGenerator.d.ts +0 -18
  28. package/esm/DynamicSnippetsGenerator.js +0 -2
  29. package/esm/DynamicSnippetsGenerator.js.map +0 -1
  30. package/esm/DynamicSnippetsGeneratorContext-CwkDTYOI.d.ts +0 -83
  31. package/esm/EndpointSnippetGenerator.d.ts +0 -76
  32. package/esm/EndpointSnippetGenerator.js +0 -2
  33. package/esm/EndpointSnippetGenerator.js.map +0 -1
  34. package/esm/chunk-34WVNBJS.js +0 -47
  35. package/esm/chunk-34WVNBJS.js.map +0 -1
  36. package/esm/chunk-BN32SYGE.js +0 -2
  37. package/esm/chunk-BN32SYGE.js.map +0 -1
  38. package/esm/chunk-F7LTKJMT.js +0 -2
  39. package/esm/chunk-F7LTKJMT.js.map +0 -1
  40. package/esm/chunk-MZ7AWQF7.js +0 -2
  41. package/esm/chunk-MZ7AWQF7.js.map +0 -1
  42. package/esm/chunk-P7HYTUQU.js +0 -4
  43. package/esm/chunk-P7HYTUQU.js.map +0 -1
  44. package/esm/chunk-Q7QB5SA5.js +0 -2
  45. package/esm/chunk-Q7QB5SA5.js.map +0 -1
  46. package/esm/chunk-U6JJRNQH.js +0 -2
  47. package/esm/chunk-U6JJRNQH.js.map +0 -1
  48. package/esm/context/DynamicSnippetsGeneratorContext.d.ts +0 -4
  49. package/esm/context/DynamicSnippetsGeneratorContext.js +0 -2
  50. package/esm/context/DynamicSnippetsGeneratorContext.js.map +0 -1
  51. package/esm/context/DynamicTypeLiteralMapper.d.ts +0 -4
  52. package/esm/context/DynamicTypeLiteralMapper.js +0 -2
  53. package/esm/context/DynamicTypeLiteralMapper.js.map +0 -1
  54. package/esm/context/FilePropertyMapper.d.ts +0 -4
  55. package/esm/context/FilePropertyMapper.js +0 -2
  56. package/esm/context/FilePropertyMapper.js.map +0 -1
  57. package/esm/index.d.ts +0 -6
  58. package/esm/index.js +0 -2
  59. package/esm/index.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{a as T,b as P,c as S,d as A,e as p,f as l,g as u,h,k as R}from"./chunk-34WVNBJS.js";l();u();l();u();var y=class{constructor(){p(this,"reporter");p(this,"snippet");p(this,"err");this.snippet=void 0,this.reporter=void 0,this.err=void 0}update({context:e,snippet:r}){this.shouldUpdate({snippet:r,reporter:e.errors})&&(this.reporter=e.errors.clone(),this.snippet=r)}getResponseOrThrow({endpoint:e}){var r;if(this.snippet!=null&&this.reporter!=null)return{snippet:this.snippet,errors:this.reporter.toDynamicSnippetErrors()};throw(r=this.err)!=null?r:new Error(`Failed to generate snippet for endpoint "${e.method} ${e.path}"`)}shouldUpdate({snippet:e,reporter:r}){var t,n;return this.reporter==null||this.reporter.size()>0&&r.size()===0?!0:e.length>((n=(t=this.snippet)==null?void 0:t.length)!=null?n:0)}};var E=class{constructor(e){p(this,"context");this.context=e}async generate(e,r={}){let t=this.context.resolveEndpointLocationOrThrow(e.endpoint);if(t.length===0)throw new Error(`No endpoints found that match "${e.endpoint.method} ${e.endpoint.path}"`);let n=new y;for(let i of t){let s=this.context.clone(),d=this.createSnippetGenerator(s);try{let a=await d.generateSnippet({endpoint:i,request:e,options:r});if(s.errors.empty())return{snippet:a,errors:void 0};n.update({context:s,snippet:a})}catch(a){n.err==null&&(n.err=a)}}return n.getResponseOrThrow({endpoint:e.endpoint})}async generateSnippetAst(e,r={}){let t=this.context.resolveEndpointLocationOrThrow(e.endpoint);if(t.length===0)throw new Error(`No endpoints found that match "${e.endpoint.method} ${e.endpoint.path}"`);let n;for(let i of t){let s=this.context.clone(),d=this.createSnippetGenerator(s);try{return await d.generateSnippetAst({endpoint:i,request:e,options:r})}catch(a){n=a}}throw n!=null?n:new Error(`Failed to generate snippet AST for endpoint: ${e.endpoint.method} ${e.endpoint.path}`)}generateSync(e,r={}){let t=this.context.resolveEndpointLocationOrThrow(e.endpoint);if(t.length===0)throw new Error(`No endpoints found that match "${e.endpoint.method} ${e.endpoint.path}"`);let n=new y;for(let i of t){let s=this.context.clone(),d=this.createSnippetGenerator(s);try{let a=d.generateSnippetSync({endpoint:i,request:e,options:r});if(s.errors.empty())return{snippet:a,errors:void 0};n.update({context:s,snippet:a})}catch(a){n.err==null&&(n.err=a)}}return n.getResponseOrThrow({endpoint:e.endpoint})}};l();u();var o={Critical:"CRITICAL",Warning:"WARNING"},g=class m{constructor(){p(this,"errors");p(this,"path");this.errors=[],this.path=[]}add(e){this.errors.push(P(T({},e),{path:[...this.path]}))}scope(e){this.path.push(e)}unscope(){this.path.pop()}getBySeverity(e){return this.errors.filter(r=>r.severity===e)}empty(){return this.errors.length===0}size(){return this.errors.length}clone(){let e=new m;return e.errors=[...this.errors],e.path=[...this.path],e}reset(){this.errors=[],this.path=[]}toDynamicSnippetErrors(){return this.errors.map(e=>({severity:e.severity,path:e.path!=null?this.pathToStringArray(e.path):void 0,message:e.message}))}pathToStringArray(e){let r=[];for(let t of e){if(typeof t=="string"){r.push(t);continue}r[r.length-1]+=`[${t.index}]`}return r}};l();u();l();u();l();u();var v=class{constructor(){p(this,"REFERENCE_REGEX",/^(GET|POST|PUT|DELETE|PATCH|HEAD)\s(\/\S*)$/)}validate(e){return this.REFERENCE_REGEX.test(e)?{type:"valid"}:{type:"invalid"}}tryParse(e){if(this.validate(e).type==="invalid")return;let t=e.match(this.REFERENCE_REGEX);if(!(t==null||t[1]==null||t[2]==null))return{method:t[1],path:t[2]}}};var w=class{constructor({ir:e,config:r,options:t={}}){p(this,"config");p(this,"options");p(this,"errors");p(this,"_ir");p(this,"httpEndpointReferenceParser");this._ir=e,this.config=r,this.options=t,this.errors=new g,this.httpEndpointReferenceParser=new v}associateQueryParametersByWireValue({parameters:e,values:r}){let t=[];for(let[n,i]of Object.entries(r)){this.errors.scope(n);try{let s=e.find(a=>a.name.wireValue===n);if(s==null)throw this.newParameterNotRecognizedError(n);let d=this.isListTypeReference(s.typeReference)&&!Array.isArray(i)?[i]:i;t.push({name:s.name,typeReference:s.typeReference,value:d})}finally{this.errors.unscope()}}return t}associateByWireValueOrDefault({parameters:e,values:r}){let t=[];for(let n of e){this.errors.scope(n.name.wireValue);try{let i=r[n.name.wireValue];if(i==null)if(n.typeReference.type==="primitive"&&n.typeReference.value==="STRING")i=`<${n.name.wireValue}>`;else{this.errors.add({severity:o.Critical,message:this.newParameterNotRecognizedError(n.name.wireValue).message});continue}t.push({name:n.name,typeReference:n.typeReference,value:i})}finally{this.errors.unscope()}}return t}associateByWireValue({parameters:e,values:r,ignoreMissingParameters:t}){let n=[];for(let[i,s]of Object.entries(r)){this.errors.scope(i);try{let d=e.find(a=>a.name.wireValue===i);if(d==null){if(t)continue;this.errors.add({severity:o.Critical,message:this.newParameterNotRecognizedError(i).message});continue}n.push({name:d.name,typeReference:d.typeReference,value:s})}finally{this.errors.unscope()}}return n}getExampleObjectProperties({parameters:e,snippetObject:r}){let t=typeof r=="object"&&r!==null&&!Array.isArray(r)?r:{},n=[];for(let i of e){let s=t[i.name.wireValue];s==null?i.typeReference.type==="nullable"&&n.push({name:i.name,typeReference:i.typeReference,value:null}):n.push({name:i.name,typeReference:i.typeReference,value:s})}return n}getSingleFileValue({property:e,record:r}){let t=r[e.wireValue];if(t!=null){if(typeof t!="string"){this.errors.add({severity:o.Critical,message:`Expected file value to be a string, got ${typeof t}`});return}return t}}getFileArrayValues({property:e,record:r}){let t=r[e.wireValue];if(t==null)return;if(!Array.isArray(t)){this.errors.add({severity:o.Critical,message:`Expected file array value to be an array of strings, got ${typeof t}`});return}let n=[];for(let i of t){if(typeof i!="string"){this.errors.add({severity:o.Critical,message:`Expected file array value to be an array of strings, got ${typeof i}`});return}n.push(i)}return n}getRecord(e){if(typeof e!="object"||Array.isArray(e)){this.errors.add({severity:o.Critical,message:`Expected object with key, value pairs but got: ${Array.isArray(e)?"array":typeof e}`});return}return e==null?{}:e}resolveNamedType({typeId:e}){let r=this._ir.types[e];if(r==null){this.errors.add({severity:o.Critical,message:`Type identified by "${e}" could not be found`});return}return r}resolveDiscriminatedUnionTypeInstance({discriminatedUnion:e,value:r}){let t=this.getRecord(r);if(t==null)return;let n=e.discriminant.wireValue,i=t[n];if(i==null){this.errors.add({severity:o.Critical,message:this.newParameterNotRecognizedError(n).message});return}if(typeof i!="string"){this.errors.add({severity:o.Critical,message:`Expected discriminant value to be a string but got: ${typeof i}`});return}let s=e.types[i];if(s==null){this.errors.add({severity:o.Critical,message:`No type found for discriminant value "${i}"`});return}let x=t,{[n]:d}=x,a=A(x,[S(n)]);return{singleDiscriminatedUnionType:s,discriminantValue:s.discriminantValue,value:a}}resolveEndpointOrThrow(e){let r=this.httpEndpointReferenceParser.tryParse(e);if(r==null)throw new Error(`Failed to parse endpoint reference "${e}"`);return this.resolveEndpointLocationOrThrow(r)}resolveEndpointLocation(e){let r=[];for(let t of Object.values(this._ir.endpoints))this.parsedEndpointMatches({endpoint:t,parsedEndpoint:e})&&r.push(t);return r}resolveEndpointLocationOrThrow(e){let r=this.resolveEndpointLocation(e);if(r.length===0)throw new Error(`Failed to find endpoint identified by "${e.method} ${e.path}"`);return r}needsRequestParameter({request:e,inlinePathParameters:r,inlineFileProperties:t}){var n;return this.includePathParametersInWrappedRequest({request:e,inlinePathParameters:r})||e.queryParameters!=null&&e.queryParameters.length>0||e.headers!=null&&e.headers.length>0?!0:e.body!=null?this.includeRequestBodyInWrappedRequest({body:e.body,inlineFileProperties:t}):!((n=e.metadata)!=null&&n.onlyPathParameters)}includePathParametersInWrappedRequest({request:e,inlinePathParameters:r}){var t,n;return r&&((n=(t=e.metadata)==null?void 0:t.includePathParameters)!=null?n:!1)}isFileUploadRequestBody(e){switch(e.type){case"fileUpload":return!0;case"properties":case"referenced":return!1;default:h(e)}}resolveEnvironmentName(e){if(this._ir.environments==null)return;let r=this._ir.environments.environments;switch(r.type){case"singleBaseUrl":{let t=r.environments.find(n=>n.id===e);return t==null?void 0:t.name}case"multipleBaseUrls":{let t=r.environments.find(n=>n.id===e);return t==null?void 0:t.name}default:h(r)}}isSingleEnvironmentID(e){return typeof e=="string"}isMultiEnvironmentValues(e){return typeof e=="object"}validateMultiEnvironmentUrlValues(e){if(this._ir.environments==null)return this.errors.add({severity:o.Critical,message:"Multiple environments are not supported for single base URL environments; use the baseUrl option instead"}),!1;let r=this._ir.environments.environments;switch(r.type){case"singleBaseUrl":return this.errors.add({severity:o.Critical,message:"Multiple environments are not supported for single base URL environments; use the baseUrl option instead"}),!1;case"multipleBaseUrls":{let t=r.environments[0];if(t==null)return this.errors.add({severity:o.Critical,message:"Multiple environments are not supported; use the baseUrl option instead"}),!1;let n=new Set(R(t.urls));for(let i of R(e))n.has(i)&&n.delete(i);return n.size>0?(this.errors.add({severity:o.Critical,message:`The provided environments are invalid; got: [${Object.keys(e).join(", ")}], expected: [${R(t.urls).join(", ")}]`}),!1):!0}}}getValueAsNumber({value:e}){if(typeof e!="number"){this.errors.add({severity:o.Critical,message:this.newTypeMismatchError({expected:"number",value:e}).message});return}return e}getValueAsBoolean({value:e}){if(typeof e!="boolean"){this.errors.add({severity:o.Critical,message:this.newTypeMismatchError({expected:"boolean",value:e}).message});return}return e}getValueAsString({value:e}){if(typeof e!="string"){this.errors.add({severity:o.Critical,message:this.newTypeMismatchError({expected:"string",value:e}).message});return}return e}isOptional(e){switch(e.type){case"nullable":return this.isOptional(e.value);case"optional":return!0;case"named":{let r=this.resolveNamedType({typeId:e.value});return r==null?!1:r.type==="alias"?this.isNullable(r.typeReference):!1}}return!1}isNullable(e){switch(e.type){case"nullable":return!0;case"optional":return this.isNullable(e.value);case"named":{let r=this.resolveNamedType({typeId:e.value});return r==null?!1:r.type==="alias"?this.isNullable(r.typeReference):!1}}return!1}newAuthMismatchError({auth:e,values:r}){return new Error(`Expected auth type ${e.type}, got ${r.type}`)}newParameterNotRecognizedError(e){return new Error(`"${e}" is not a recognized parameter for this endpoint`)}newTypeMismatchError({expected:e,value:r}){return new Error(`Expected ${e}, got ${typeof r}`)}includeRequestBodyInWrappedRequest({body:e,inlineFileProperties:r}){switch(e.type){case"properties":case"referenced":return!0;case"fileUpload":return this.includeFileUploadBodyInWrappedRequest({fileUpload:e,inlineFileProperties:r});default:h(e)}}includeFileUploadBodyInWrappedRequest({fileUpload:e,inlineFileProperties:r}){return this.fileUploadHasBodyProperties({fileUpload:e})||r&&this.fileUploadHasFileProperties({fileUpload:e})}fileUploadHasBodyProperties({fileUpload:e}){return e.properties.some(r=>{switch(r.type){case"file":case"fileArray":return!1;case"bodyProperty":return!0;default:h(r)}})}fileUploadHasFileProperties({fileUpload:e}){return e.properties.some(r=>{switch(r.type){case"file":case"fileArray":return!0;case"bodyProperty":return!1;default:h(r)}})}isListTypeReference(e){return e.type==="optional"?this.isListTypeReference(e.value):e.type==="list"||e.type==="set"}parsedEndpointMatches({endpoint:e,parsedEndpoint:r}){return e.location.method===r.method&&e.location.path===r.path}};l();u();var b={PathParameters:"pathParameters",QueryParameters:"queryParameters",Headers:"headers",RequestBody:"requestBody"};l();u();export{E as a,o as b,w as c,b as d};
2
- //# sourceMappingURL=chunk-BN32SYGE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGenerator.ts","../../../../browser-compatible-base/src/dynamic-snippets/Result.ts","../../../../browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGeneratorContext.ts","../../../../../packages/cli/fern-definition/schema/src/index.ts","../../../../../packages/cli/fern-definition/schema/src/utils/HttpEndpointReferenceParser.ts","../../../../browser-compatible-base/src/dynamic-snippets/Scope.ts","../../../../browser-compatible-base/src/dynamic-snippets/index.ts"],"sourcesContent":["import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { AbstractAstNode } from \"../ast\";\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext\";\nimport { AbstractEndpointSnippetGenerator } from \"./AbstractEndpointSnippetGenerator\";\nimport { Options } from \"./Options\";\nimport { Result } from \"./Result\";\n\nexport abstract class AbstractDynamicSnippetsGenerator<\n Context extends AbstractDynamicSnippetsGeneratorContext,\n EndpointSnippetGenerator extends AbstractEndpointSnippetGenerator<Context>\n> {\n public constructor(public readonly context: Context) {}\n\n protected abstract createSnippetGenerator(context: Context): EndpointSnippetGenerator;\n\n public async generate(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options: Options = {}\n ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n const endpoints = this.context.resolveEndpointLocationOrThrow(request.endpoint);\n if (endpoints.length === 0) {\n throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n }\n const result = new Result();\n for (const endpoint of endpoints) {\n const context = this.context.clone() as Context;\n const snippetGenerator = this.createSnippetGenerator(context);\n try {\n const snippet = await snippetGenerator.generateSnippet({ endpoint, request, options });\n if (context.errors.empty()) {\n return {\n snippet,\n errors: undefined\n };\n }\n result.update({ context, snippet });\n } catch (error) {\n if (result.err == null) {\n result.err = error as Error;\n }\n }\n }\n return result.getResponseOrThrow({ endpoint: request.endpoint });\n }\n\n public async generateSnippetAst(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options: Options = {}\n ): Promise<AbstractAstNode> {\n const endpoints = this.context.resolveEndpointLocationOrThrow(request.endpoint);\n if (endpoints.length === 0) {\n throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n }\n let lastError: Error | undefined = undefined;\n for (const endpoint of endpoints) {\n const context = this.context.clone() as Context;\n const snippetGenerator = this.createSnippetGenerator(context);\n try {\n const ast = await snippetGenerator.generateSnippetAst({ endpoint, request, options });\n return ast;\n } catch (error) {\n lastError = error as Error;\n }\n }\n if (lastError != null) {\n throw lastError;\n }\n throw new Error(\n `Failed to generate snippet AST for endpoint: ${request.endpoint.method} ${request.endpoint.path}`\n );\n }\n\n public generateSync(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options: Options = {}\n ): FernIr.dynamic.EndpointSnippetResponse {\n const endpoints = this.context.resolveEndpointLocationOrThrow(request.endpoint);\n if (endpoints.length === 0) {\n throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n }\n const result = new Result();\n for (const endpoint of endpoints) {\n const context = this.context.clone() as Context;\n const snippetGenerator = this.createSnippetGenerator(context);\n try {\n const snippet = snippetGenerator.generateSnippetSync({ endpoint, request, options });\n if (context.errors.empty()) {\n return {\n snippet,\n errors: undefined\n };\n }\n result.update({ context, snippet });\n } catch (error) {\n if (result.err == null) {\n result.err = error as Error;\n }\n }\n }\n return result.getResponseOrThrow({ endpoint: request.endpoint });\n }\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext\";\nimport { ErrorReporter } from \"./ErrorReporter\";\n\nexport class Result {\n public reporter: ErrorReporter | undefined;\n public snippet: string | undefined;\n public err: Error | undefined;\n\n constructor() {\n this.snippet = undefined;\n this.reporter = undefined;\n this.err = undefined;\n }\n\n public update({ context, snippet }: { context: AbstractDynamicSnippetsGeneratorContext; snippet: string }): void {\n if (this.shouldUpdate({ snippet, reporter: context.errors })) {\n this.reporter = context.errors.clone();\n this.snippet = snippet;\n }\n }\n\n public getResponseOrThrow({\n endpoint\n }: {\n endpoint: FernIr.dynamic.EndpointLocation;\n }): FernIr.dynamic.EndpointSnippetResponse {\n if (this.snippet != null && this.reporter != null) {\n return {\n snippet: this.snippet,\n errors: this.reporter.toDynamicSnippetErrors()\n };\n }\n throw this.err ?? new Error(`Failed to generate snippet for endpoint \"${endpoint.method} ${endpoint.path}\"`);\n }\n\n private shouldUpdate({ snippet, reporter }: { snippet: string; reporter: ErrorReporter }): boolean {\n if (this.reporter == null || (this.reporter.size() > 0 && reporter.size() === 0)) {\n return true;\n }\n return snippet.length > (this.snippet?.length ?? 0);\n }\n}\n","export const Severity = {\n Critical: \"CRITICAL\",\n Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n type Path = readonly PathItem[];\n\n type PathItem = string | ArrayPathItem;\n\n type Severity = (typeof Severity)[keyof typeof Severity];\n\n interface ArrayPathItem {\n index: number;\n }\n\n interface Error {\n path?: Path;\n severity: Severity;\n message: string;\n }\n}\n\ninterface Error_ {\n severity: \"CRITICAL\" | \"WARNING\";\n path: string[] | undefined;\n message: string;\n}\n\nexport class ErrorReporter {\n private errors: ErrorReporter.Error[];\n private path: ErrorReporter.PathItem[];\n\n constructor() {\n this.errors = [];\n this.path = [];\n }\n\n public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n this.errors.push({\n ...err,\n path: [...this.path]\n });\n }\n\n public scope(path: ErrorReporter.PathItem): void {\n this.path.push(path);\n }\n\n public unscope(): void {\n this.path.pop();\n }\n\n public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n return this.errors.filter((err) => err.severity === severity);\n }\n\n public empty(): boolean {\n return this.errors.length === 0;\n }\n\n public size(): number {\n return this.errors.length;\n }\n\n public clone(): ErrorReporter {\n const clone = new ErrorReporter();\n clone.errors = [...this.errors];\n clone.path = [...this.path];\n return clone;\n }\n\n public reset(): void {\n this.errors = [];\n this.path = [];\n }\n\n public toDynamicSnippetErrors(): Error_[] {\n return this.errors.map((err) => ({\n severity: err.severity,\n path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n message: err.message\n }));\n }\n\n private pathToStringArray(path: ErrorReporter.Path): string[] {\n const result: string[] = [];\n for (const item of path) {\n if (typeof item === \"string\") {\n result.push(item);\n continue;\n }\n result[result.length - 1] += `[${item.index}]`;\n }\n return result;\n }\n}\n","import { assertNever, keys } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { HttpEndpointReferenceParser } from \"@fern-api/fern-definition-schema\";\n\nimport { FernGeneratorExec } from \"../GeneratorNotificationService\";\nimport { DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance\";\nimport { ErrorReporter, Severity } from \"./ErrorReporter\";\nimport { Options } from \"./Options\";\nimport { TypeInstance } from \"./TypeInstance\";\n\nexport abstract class AbstractDynamicSnippetsGeneratorContext {\n public config: FernGeneratorExec.GeneratorConfig;\n public options: Options;\n public errors: ErrorReporter;\n\n private _ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n private httpEndpointReferenceParser: HttpEndpointReferenceParser;\n\n constructor({\n ir,\n config,\n options = {}\n }: {\n ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n config: FernGeneratorExec.GeneratorConfig;\n options?: Options;\n }) {\n this._ir = ir;\n this.config = config;\n this.options = options;\n this.errors = new ErrorReporter();\n this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n }\n\n public abstract clone(): AbstractDynamicSnippetsGeneratorContext;\n\n public associateQueryParametersByWireValue({\n parameters,\n values\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): TypeInstance[] {\n const instances: TypeInstance[] = [];\n for (const [key, value] of Object.entries(values)) {\n this.errors.scope(key);\n try {\n const parameter = parameters.find((param) => param.name.wireValue === key);\n if (parameter == null) {\n throw this.newParameterNotRecognizedError(key);\n }\n // If this query parameter supports allow-multiple, the user-provided values\n // must be wrapped in an array.\n const typeInstanceValue =\n this.isListTypeReference(parameter.typeReference) && !Array.isArray(value) ? [value] : value;\n instances.push({\n name: parameter.name,\n typeReference: parameter.typeReference,\n value: typeInstanceValue\n });\n } finally {\n this.errors.unscope();\n }\n }\n return instances;\n }\n\n public associateByWireValueOrDefault({\n parameters,\n values\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): TypeInstance[] {\n const instances: TypeInstance[] = [];\n for (const parameter of parameters) {\n this.errors.scope(parameter.name.wireValue);\n try {\n let value = values[parameter.name.wireValue];\n\n if (value == null) {\n if (parameter.typeReference.type === \"primitive\" && parameter.typeReference.value === \"STRING\") {\n // synthesize a parameter value for string parameters that are missing data\n value = `<${parameter.name.wireValue}>`;\n } else {\n this.errors.add({\n severity: Severity.Critical,\n message: this.newParameterNotRecognizedError(parameter.name.wireValue).message\n });\n continue;\n }\n }\n\n instances.push({\n name: parameter.name,\n typeReference: parameter.typeReference,\n value\n });\n } finally {\n this.errors.unscope();\n }\n }\n\n return instances;\n }\n\n public associateByWireValue({\n parameters,\n values,\n ignoreMissingParameters\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n ignoreMissingParameters?: boolean;\n }): TypeInstance[] {\n const instances: TypeInstance[] = [];\n for (const [key, value] of Object.entries(values)) {\n this.errors.scope(key);\n try {\n const parameter = parameters.find((param) => param.name.wireValue === key);\n if (parameter == null) {\n if (ignoreMissingParameters) {\n // Required for request payloads that include more information than\n // just the target parameters (e.g. union base properties).\n continue;\n }\n this.errors.add({\n severity: Severity.Critical,\n message: this.newParameterNotRecognizedError(key).message\n });\n continue;\n }\n instances.push({\n name: parameter.name,\n typeReference: parameter.typeReference,\n value\n });\n } finally {\n this.errors.unscope();\n }\n }\n return instances;\n }\n\n /**\n * Similar to `associateByWireValue` but it builds TypeInstance objects by iterating over schema parameters rather\n * than snippet values. Skips non-nullable parameters that are missing from the snippet object.\n */\n public getExampleObjectProperties({\n parameters,\n snippetObject\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n snippetObject: unknown;\n }): TypeInstance[] {\n const objectRecord = (\n typeof snippetObject === \"object\" && snippetObject !== null && !Array.isArray(snippetObject)\n ? snippetObject\n : {}\n ) as Record<string, unknown>;\n const instances: TypeInstance[] = [];\n for (const parameter of parameters) {\n const value = objectRecord[parameter.name.wireValue];\n if (value == null) {\n if (parameter.typeReference.type === \"nullable\") {\n instances.push({\n name: parameter.name,\n typeReference: parameter.typeReference,\n value: null\n });\n }\n } else {\n instances.push({\n name: parameter.name,\n typeReference: parameter.typeReference,\n value\n });\n }\n }\n return instances;\n }\n\n public getSingleFileValue({\n property,\n record\n }: {\n property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n record: Record<string, unknown>;\n }): string | undefined {\n const fileValue = record[property.wireValue];\n if (fileValue == null) {\n return undefined;\n }\n if (typeof fileValue !== \"string\") {\n this.errors.add({\n severity: Severity.Critical,\n message: `Expected file value to be a string, got ${typeof fileValue}`\n });\n return undefined;\n }\n return fileValue;\n }\n\n public getFileArrayValues({\n property,\n record\n }: {\n property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n record: Record<string, unknown>;\n }): string[] | undefined {\n const fileArrayValue = record[property.wireValue];\n if (fileArrayValue == null) {\n return undefined;\n }\n if (!Array.isArray(fileArrayValue)) {\n this.errors.add({\n severity: Severity.Critical,\n message: `Expected file array value to be an array of strings, got ${typeof fileArrayValue}`\n });\n return undefined;\n }\n const stringValues: string[] = [];\n for (const value of fileArrayValue) {\n if (typeof value !== \"string\") {\n this.errors.add({\n severity: Severity.Critical,\n message: `Expected file array value to be an array of strings, got ${typeof value}`\n });\n return undefined;\n }\n stringValues.push(value);\n }\n return stringValues;\n }\n\n public getRecord(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== \"object\" || Array.isArray(value)) {\n this.errors.add({\n severity: Severity.Critical,\n message: `Expected object with key, value pairs but got: ${\n Array.isArray(value) ? \"array\" : typeof value\n }`\n });\n return undefined;\n }\n if (value == null) {\n return {};\n }\n return value as Record<string, unknown>;\n }\n\n public resolveNamedType({ typeId }: { typeId: FernIr.dynamic.TypeId }): FernIr.dynamic.NamedType | undefined {\n const namedType = this._ir.types[typeId];\n if (namedType == null) {\n this.errors.add({\n severity: Severity.Critical,\n message: `Type identified by \"${typeId}\" could not be found`\n });\n return undefined;\n }\n return namedType;\n }\n\n public resolveDiscriminatedUnionTypeInstance({\n discriminatedUnion,\n value\n }: {\n discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n value: unknown;\n }): DiscriminatedUnionTypeInstance | undefined {\n const record = this.getRecord(value);\n if (record == null) {\n return undefined;\n }\n\n const discriminantFieldName = discriminatedUnion.discriminant.wireValue;\n const discriminantValue = record[discriminantFieldName];\n if (discriminantValue == null) {\n this.errors.add({\n severity: Severity.Critical,\n message: this.newParameterNotRecognizedError(discriminantFieldName).message\n });\n return undefined;\n }\n if (typeof discriminantValue !== \"string\") {\n this.errors.add({\n severity: Severity.Critical,\n message: `Expected discriminant value to be a string but got: ${typeof discriminantValue}`\n });\n return undefined;\n }\n\n const singleDiscriminatedUnionType = discriminatedUnion.types[discriminantValue];\n if (singleDiscriminatedUnionType == null) {\n this.errors.add({\n severity: Severity.Critical,\n message: `No type found for discriminant value \"${discriminantValue}\"`\n });\n return undefined;\n }\n\n // Remove the discriminant from the record so that the value is valid for the type.\n const { [discriminantFieldName]: _, ...filtered } = record;\n\n return {\n singleDiscriminatedUnionType,\n discriminantValue: singleDiscriminatedUnionType.discriminantValue,\n value: filtered\n };\n }\n\n public resolveEndpointOrThrow(rawEndpoint: string): FernIr.dynamic.Endpoint[] {\n const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(rawEndpoint);\n if (parsedEndpoint == null) {\n throw new Error(`Failed to parse endpoint reference \"${rawEndpoint}\"`);\n }\n return this.resolveEndpointLocationOrThrow(parsedEndpoint);\n }\n\n public resolveEndpointLocation(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n const endpoints: FernIr.dynamic.Endpoint[] = [];\n for (const endpoint of Object.values(this._ir.endpoints)) {\n if (this.parsedEndpointMatches({ endpoint, parsedEndpoint: location })) {\n endpoints.push(endpoint);\n }\n }\n\n return endpoints;\n }\n\n public resolveEndpointLocationOrThrow(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n const endpoints = this.resolveEndpointLocation(location);\n if (endpoints.length === 0) {\n throw new Error(`Failed to find endpoint identified by \"${location.method} ${location.path}\"`);\n }\n return endpoints;\n }\n\n public needsRequestParameter({\n request,\n inlinePathParameters,\n inlineFileProperties\n }: {\n request: FernIr.dynamic.InlinedRequest;\n inlinePathParameters: boolean;\n inlineFileProperties: boolean;\n }): boolean {\n if (this.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n return true;\n }\n if (request.queryParameters != null && request.queryParameters.length > 0) {\n return true;\n }\n if (request.headers != null && request.headers.length > 0) {\n return true;\n }\n if (request.body != null) {\n return this.includeRequestBodyInWrappedRequest({ body: request.body, inlineFileProperties });\n }\n if (request.metadata?.onlyPathParameters) {\n return false;\n }\n return true;\n }\n\n public includePathParametersInWrappedRequest({\n request,\n inlinePathParameters\n }: {\n request: FernIr.dynamic.InlinedRequest;\n inlinePathParameters: boolean;\n }): boolean {\n return inlinePathParameters && (request.metadata?.includePathParameters ?? false);\n }\n\n public isFileUploadRequestBody(\n body: FernIr.dynamic.InlinedRequestBody\n ): body is FernIr.dynamic.InlinedRequestBody.FileUpload {\n switch (body.type) {\n case \"fileUpload\":\n return true;\n case \"properties\":\n case \"referenced\":\n return false;\n default:\n assertNever(body);\n }\n }\n\n public resolveEnvironmentName(environmentID: string): FernIr.Name | undefined {\n if (this._ir.environments == null) {\n return undefined;\n }\n const environments = this._ir.environments.environments;\n switch (environments.type) {\n case \"singleBaseUrl\": {\n const environment = environments.environments.find((env) => env.id === environmentID);\n if (environment == null) {\n return undefined;\n }\n return environment.name;\n }\n case \"multipleBaseUrls\": {\n const environment = environments.environments.find((env) => env.id === environmentID);\n if (environment == null) {\n return undefined;\n }\n return environment.name;\n }\n default:\n assertNever(environments);\n }\n }\n\n public isSingleEnvironmentID(\n environment: FernIr.dynamic.EnvironmentValues\n ): environment is FernIr.dynamic.EnvironmentId {\n return typeof environment === \"string\";\n }\n\n public isMultiEnvironmentValues(\n environment: FernIr.dynamic.EnvironmentValues\n ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n return typeof environment === \"object\";\n }\n\n public validateMultiEnvironmentUrlValues(\n multiEnvironmentUrlValues: FernIr.dynamic.MultipleEnvironmentUrlValues\n ): boolean {\n if (this._ir.environments == null) {\n this.errors.add({\n severity: Severity.Critical,\n message:\n \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n });\n return false;\n }\n const environments = this._ir.environments.environments;\n switch (environments.type) {\n case \"singleBaseUrl\": {\n this.errors.add({\n severity: Severity.Critical,\n message:\n \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n });\n return false;\n }\n case \"multipleBaseUrls\": {\n const firstEnvironment = environments.environments[0];\n if (firstEnvironment == null) {\n this.errors.add({\n severity: Severity.Critical,\n message: \"Multiple environments are not supported; use the baseUrl option instead\"\n });\n return false;\n }\n const expectedKeys = new Set(keys(firstEnvironment.urls));\n for (const key of keys(multiEnvironmentUrlValues)) {\n if (expectedKeys.has(key)) {\n expectedKeys.delete(key);\n }\n }\n if (expectedKeys.size > 0) {\n this.errors.add({\n severity: Severity.Critical,\n message: `The provided environments are invalid; got: [${Object.keys(multiEnvironmentUrlValues).join(\", \")}], expected: [${keys(firstEnvironment.urls).join(\", \")}]`\n });\n return false;\n }\n return true;\n }\n }\n }\n\n public getValueAsNumber({ value }: { value: unknown }): number | undefined {\n if (typeof value !== \"number\") {\n this.errors.add({\n severity: Severity.Critical,\n message: this.newTypeMismatchError({ expected: \"number\", value }).message\n });\n return undefined;\n }\n return value;\n }\n\n public getValueAsBoolean({ value }: { value: unknown }): boolean | undefined {\n if (typeof value !== \"boolean\") {\n this.errors.add({\n severity: Severity.Critical,\n message: this.newTypeMismatchError({ expected: \"boolean\", value }).message\n });\n return undefined;\n }\n return value;\n }\n\n public getValueAsString({ value }: { value: unknown }): string | undefined {\n if (typeof value !== \"string\") {\n this.errors.add({\n severity: Severity.Critical,\n message: this.newTypeMismatchError({ expected: \"string\", value }).message\n });\n return undefined;\n }\n return value;\n }\n\n public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n switch (typeReference.type) {\n case \"nullable\":\n return this.isOptional(typeReference.value);\n case \"optional\":\n return true;\n case \"named\": {\n const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n if (resolvedType == null) {\n return false;\n }\n if (resolvedType.type === \"alias\") {\n return this.isNullable(resolvedType.typeReference);\n }\n return false;\n }\n }\n return false;\n }\n\n public isNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n switch (typeReference.type) {\n case \"nullable\":\n return true;\n case \"optional\":\n return this.isNullable(typeReference.value);\n case \"named\": {\n const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n if (resolvedType == null) {\n return false;\n }\n if (resolvedType.type === \"alias\") {\n return this.isNullable(resolvedType.typeReference);\n }\n return false;\n }\n }\n return false;\n }\n\n public newAuthMismatchError({\n auth,\n values\n }: {\n auth: FernIr.dynamic.Auth;\n values: FernIr.dynamic.AuthValues;\n }): Error {\n return new Error(`Expected auth type ${auth.type}, got ${values.type}`);\n }\n\n public newParameterNotRecognizedError(parameterName: string): Error {\n return new Error(`\"${parameterName}\" is not a recognized parameter for this endpoint`);\n }\n\n public newTypeMismatchError({ expected, value }: { expected: string; value: unknown }): Error {\n return new Error(`Expected ${expected}, got ${typeof value}`);\n }\n\n private includeRequestBodyInWrappedRequest({\n body,\n inlineFileProperties\n }: {\n body: FernIr.dynamic.InlinedRequestBody;\n inlineFileProperties: boolean;\n }): boolean {\n switch (body.type) {\n case \"properties\":\n case \"referenced\":\n return true;\n case \"fileUpload\":\n return this.includeFileUploadBodyInWrappedRequest({ fileUpload: body, inlineFileProperties });\n default:\n assertNever(body);\n }\n }\n\n private includeFileUploadBodyInWrappedRequest({\n fileUpload,\n inlineFileProperties\n }: {\n fileUpload: FernIr.dynamic.FileUploadRequestBody;\n inlineFileProperties: boolean;\n }): boolean {\n return (\n this.fileUploadHasBodyProperties({ fileUpload }) ||\n (inlineFileProperties && this.fileUploadHasFileProperties({ fileUpload }))\n );\n }\n\n private fileUploadHasBodyProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n return fileUpload.properties.some((property) => {\n switch (property.type) {\n case \"file\":\n case \"fileArray\":\n return false;\n case \"bodyProperty\":\n return true;\n default:\n assertNever(property);\n }\n });\n }\n\n private fileUploadHasFileProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n return fileUpload.properties.some((property) => {\n switch (property.type) {\n case \"file\":\n case \"fileArray\":\n return true;\n case \"bodyProperty\":\n return false;\n default:\n assertNever(property);\n }\n });\n }\n\n private isListTypeReference(typeReference: FernIr.dynamic.TypeReference): boolean {\n if (typeReference.type === \"optional\") {\n return this.isListTypeReference(typeReference.value);\n }\n return typeReference.type === \"list\" || typeReference.type === \"set\";\n }\n\n private parsedEndpointMatches({\n endpoint,\n parsedEndpoint\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n parsedEndpoint: HttpEndpointReferenceParser.Parsed;\n }): boolean {\n return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n }\n}\n","export { EXAMPLE_REFERENCE_PREFIX, YAML_SCHEMA_VERSION } from \"./constants\";\nexport { type NodePath, type NodePathItem } from \"./NodePath\";\nexport * as RawSchemas from \"./schemas\";\nexport { type DefinitionFileSchema, type PackageMarkerFileSchema, type RootApiFileSchema } from \"./schemas\";\nexport * from \"./utils/auth\";\nexport * from \"./utils/generics\";\nexport { getRequestBody } from \"./utils/getRequestBody\";\nexport { getResponseBodyType } from \"./utils/getResponseBodyType\";\nexport { HttpEndpointReferenceParser } from \"./utils/HttpEndpointReferenceParser\";\nexport { isInlineRequestBody } from \"./utils/isInlineRequestBody\";\nexport { isOpenApiSourceSchema } from \"./utils/isOpenApiSourceSchema\";\nexport { isRawProtobufSourceSchema } from \"./utils/isRawProtobufSourceSchema\";\nexport { isRawTextType } from \"./utils/isRawTextType\";\nexport { type BytesRequest, parseBytesRequest } from \"./utils/parseBytesRequest\";\nexport { parseFileUploadRequest, type RawFileUploadRequest } from \"./utils/parseFileUploadRequest\";\nexport { parseRawBytesType, type RawBytesType } from \"./utils/parseRawBytesType\";\nexport { parseRawFileType, type RawFileType } from \"./utils/parseRawFileType\";\nexport { parseRawTextType, type RawTextType } from \"./utils/parseRawTextType\";\nexport { RawPrimitiveType } from \"./utils/RawPrimitiveType\";\nexport { recursivelyVisitRawTypeReference } from \"./utils/recursivelyVisitRawTypeReference\";\nexport { visitExampleCodeSampleSchema } from \"./utils/visitExampleCodeSampleSchema\";\nexport { type ExampleResponseSchemaVisitor, visitExampleResponseSchema } from \"./utils/visitExampleResponseSchema\";\nexport { isAnyAuthSchemes, isSingleAuthScheme, type RawApiAuthVisitor, visitRawApiAuth } from \"./utils/visitRawApiAuth\";\nexport {\n type AuthSchemeDeclarationVisitor,\n isHeaderAuthScheme,\n visitRawAuthSchemeDeclaration\n} from \"./utils/visitRawAuthSchemeDeclaration\";\nexport {\n isRawMultipleBaseUrlsEnvironment,\n isRawSingleBaseUrlEnvironment,\n visitRawEnvironmentDeclaration\n} from \"./utils/visitRawEnvironmentDeclaration\";\nexport {\n isVariablePathParameter,\n type PathParameterDeclarationVisitor,\n visitRawPathParameter\n} from \"./utils/visitRawPathParameter\";\nexport {\n isRawAliasDefinition,\n isRawDiscriminatedUnionDefinition,\n isRawEnumDefinition,\n isRawObjectDefinition,\n isRawUndiscriminatedUnionDefinition,\n type RawTypeDeclarationVisitor,\n visitRawTypeDeclaration\n} from \"./utils/visitRawTypeDeclaration\";\nexport { FernContainerRegex, visitRawTypeReference } from \"./utils/visitRawTypeReference\";\n","export declare namespace HttpEndpointReferenceParser {\n interface Parsed {\n path: string;\n method: Method;\n }\n\n type Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\";\n\n export type ValidationResult = Valid | Invalid;\n\n interface Valid {\n type: \"valid\";\n }\n\n interface Invalid {\n type: \"invalid\";\n }\n}\n\n/**\n * Parses an HTTP endpoint reference like `POST /users/get`\n */\nexport class HttpEndpointReferenceParser {\n //eslint-disable-next-line\n private REFERENCE_REGEX = /^(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n\n public validate(reference: string): HttpEndpointReferenceParser.ValidationResult {\n const validFormat = this.REFERENCE_REGEX.test(reference);\n if (!validFormat) {\n return { type: \"invalid\" };\n }\n return { type: \"valid\" };\n }\n\n public tryParse(reference: string): HttpEndpointReferenceParser.Parsed | undefined {\n const validationResponse = this.validate(reference);\n if (validationResponse.type === \"invalid\") {\n return undefined;\n }\n const match = reference.match(this.REFERENCE_REGEX);\n if (match == null || match[1] == null || match[2] == null) {\n return undefined;\n }\n return {\n method: match[1] as HttpEndpointReferenceParser.Method,\n path: match[2]\n };\n }\n}\n","export const Scope = {\n PathParameters: \"pathParameters\",\n QueryParameters: \"queryParameters\",\n Headers: \"headers\",\n RequestBody: \"requestBody\"\n} as const;\n\nexport type Scope = (typeof Scope)[keyof typeof Scope];\n","export { AbstractDynamicSnippetsGenerator } from \"./AbstractDynamicSnippetsGenerator\";\nexport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext\";\nexport { type DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance\";\nexport { ErrorReporter, Severity } from \"./ErrorReporter\";\nexport { type Options, Style } from \"./Options\";\nexport { Result } from \"./Result\";\nexport { Scope } from \"./Scope\";\nexport { type TypeInstance } from \"./TypeInstance\";\nexport { DynamicSnippetsTestRunner } from \"./test-utils/DynamicSnippetsTestRunner\";\n"],"mappings":"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","names":["init_process","init_buffer","init_process","init_buffer","Result","__publicField","context","snippet","endpoint","_a","reporter","_b","AbstractDynamicSnippetsGenerator","context","__publicField","request","options","endpoints","result","Result","endpoint","snippetGenerator","snippet","error","lastError","init_process","init_buffer","Severity","ErrorReporter","_ErrorReporter","__publicField","err","__spreadProps","__spreadValues","path","severity","clone","result","item","init_process","init_buffer","init_process","init_buffer","init_process","init_buffer","HttpEndpointReferenceParser","__publicField","reference","match","AbstractDynamicSnippetsGeneratorContext","ir","config","options","__publicField","ErrorReporter","HttpEndpointReferenceParser","parameters","values","instances","key","value","parameter","param","typeInstanceValue","Severity","ignoreMissingParameters","snippetObject","objectRecord","property","record","fileValue","fileArrayValue","stringValues","typeId","namedType","discriminatedUnion","discriminantFieldName","discriminantValue","singleDiscriminatedUnionType","_a","_","filtered","__objRest","__restKey","rawEndpoint","parsedEndpoint","location","endpoints","endpoint","request","inlinePathParameters","inlineFileProperties","_b","body","assertNever","environmentID","environments","environment","env","multiEnvironmentUrlValues","firstEnvironment","expectedKeys","keys","typeReference","resolvedType","auth","parameterName","expected","fileUpload","init_process","init_buffer","Scope","init_process","init_buffer"]}
@@ -1,2 +0,0 @@
1
- import{e as l,f as a,g as y,h as s,l as i}from"./chunk-34WVNBJS.js";a();y();var c=class{constructor({context:r}){l(this,"context");this.context=r}getFilePropertyInfo({body:r,value:o}){var p;let e={fileFields:[],bodyPropertyFields:[]},n=(p=this.context.getRecord(o))!=null?p:{};for(let t of r.properties)switch(t.type){case"file":e.fileFields.push({name:this.context.getPropertyName(t.name),value:this.getSingleFileProperty({property:t,record:n})});break;case"fileArray":e.fileFields.push({name:this.context.getPropertyName(t.name),value:this.getArrayFileProperty({property:t,record:n})});break;case"bodyProperty":e.bodyPropertyFields.push({name:this.context.getPropertyName(t.name.name),value:this.getBodyProperty({property:t,record:n})});break;default:s(t)}return e}getSingleFileProperty({property:r,record:o}){let e=this.context.getSingleFileValue({property:r,record:o});return e==null?i.TypeLiteral.nop():i.TypeLiteral.file(e)}getArrayFileProperty({property:r,record:o}){let e=this.context.getFileArrayValues({property:r,record:o});return e==null?i.TypeLiteral.nop():i.TypeLiteral.list({values:e.map(n=>i.TypeLiteral.file(n))})}getBodyProperty({property:r,record:o}){let e=o[r.name.wireValue];return e==null?i.TypeLiteral.nop():this.context.dynamicTypeLiteralMapper.convert({typeReference:r.typeReference,value:e})}};export{c as a};
2
- //# sourceMappingURL=chunk-F7LTKJMT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/context/FilePropertyMapper.ts"],"sourcesContent":["import { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { php } from \"@fern-api/php-codegen\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext\";\n\nexport interface FilePropertyInfo {\n fileFields: php.ConstructorField[];\n bodyPropertyFields: php.ConstructorField[];\n}\n\nexport class FilePropertyMapper {\n private context: DynamicSnippetsGeneratorContext;\n\n constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n this.context = context;\n }\n\n public getFilePropertyInfo({\n body,\n value\n }: {\n body: FernIr.dynamic.FileUploadRequestBody;\n value: unknown;\n }): FilePropertyInfo {\n const result: FilePropertyInfo = {\n fileFields: [],\n bodyPropertyFields: []\n };\n const record = this.context.getRecord(value) ?? {};\n for (const property of body.properties) {\n switch (property.type) {\n case \"file\":\n result.fileFields.push({\n name: this.context.getPropertyName(property.name),\n value: this.getSingleFileProperty({ property, record })\n });\n break;\n case \"fileArray\":\n result.fileFields.push({\n name: this.context.getPropertyName(property.name),\n value: this.getArrayFileProperty({ property, record })\n });\n break;\n case \"bodyProperty\":\n result.bodyPropertyFields.push({\n name: this.context.getPropertyName(property.name.name),\n value: this.getBodyProperty({ property, record })\n });\n break;\n default:\n assertNever(property);\n }\n }\n return result;\n }\n\n private getSingleFileProperty({\n property,\n record\n }: {\n property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n record: Record<string, unknown>;\n }): php.TypeLiteral {\n const fileValue = this.context.getSingleFileValue({ property, record });\n if (fileValue == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.file(fileValue);\n }\n\n private getArrayFileProperty({\n property,\n record\n }: {\n property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n record: Record<string, unknown>;\n }): php.TypeLiteral {\n const fileValues = this.context.getFileArrayValues({ property, record });\n if (fileValues == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.list({ values: fileValues.map((value) => php.TypeLiteral.file(value)) });\n }\n\n private getBodyProperty({\n property,\n record\n }: {\n property: FernIr.dynamic.NamedParameter;\n record: Record<string, unknown>;\n }): php.TypeLiteral {\n const bodyPropertyValue = record[property.name.wireValue];\n if (bodyPropertyValue == null) {\n return php.TypeLiteral.nop();\n }\n return this.context.dynamicTypeLiteralMapper.convert({\n typeReference: property.typeReference,\n value: bodyPropertyValue\n });\n }\n}\n"],"mappings":"oEAAAA,IAAAC,IAWO,IAAMC,EAAN,KAAyB,CAG5B,YAAY,CAAE,QAAAC,CAAQ,EAAiD,CAFvEC,EAAA,KAAQ,WAGJ,KAAK,QAAUD,CACnB,CAEO,oBAAoB,CACvB,KAAAE,EACA,MAAAC,CACJ,EAGqB,CAxBzB,IAAAC,EAyBQ,IAAMC,EAA2B,CAC7B,WAAY,CAAC,EACb,mBAAoB,CAAC,CACzB,EACMC,GAASF,EAAA,KAAK,QAAQ,UAAUD,CAAK,IAA5B,KAAAC,EAAiC,CAAC,EACjD,QAAWG,KAAYL,EAAK,WACxB,OAAQK,EAAS,KAAM,CACnB,IAAK,OACDF,EAAO,WAAW,KAAK,CACnB,KAAM,KAAK,QAAQ,gBAAgBE,EAAS,IAAI,EAChD,MAAO,KAAK,sBAAsB,CAAE,SAAAA,EAAU,OAAAD,CAAO,CAAC,CAC1D,CAAC,EACD,MACJ,IAAK,YACDD,EAAO,WAAW,KAAK,CACnB,KAAM,KAAK,QAAQ,gBAAgBE,EAAS,IAAI,EAChD,MAAO,KAAK,qBAAqB,CAAE,SAAAA,EAAU,OAAAD,CAAO,CAAC,CACzD,CAAC,EACD,MACJ,IAAK,eACDD,EAAO,mBAAmB,KAAK,CAC3B,KAAM,KAAK,QAAQ,gBAAgBE,EAAS,KAAK,IAAI,EACrD,MAAO,KAAK,gBAAgB,CAAE,SAAAA,EAAU,OAAAD,CAAO,CAAC,CACpD,CAAC,EACD,MACJ,QACIE,EAAYD,CAAQ,CAC5B,CAEJ,OAAOF,CACX,CAEQ,sBAAsB,CAC1B,SAAAE,EACA,OAAAD,CACJ,EAGoB,CAChB,IAAMG,EAAY,KAAK,QAAQ,mBAAmB,CAAE,SAAAF,EAAU,OAAAD,CAAO,CAAC,EACtE,OAAIG,GAAa,KACNC,EAAI,YAAY,IAAI,EAExBA,EAAI,YAAY,KAAKD,CAAS,CACzC,CAEQ,qBAAqB,CACzB,SAAAF,EACA,OAAAD,CACJ,EAGoB,CAChB,IAAMK,EAAa,KAAK,QAAQ,mBAAmB,CAAE,SAAAJ,EAAU,OAAAD,CAAO,CAAC,EACvE,OAAIK,GAAc,KACPD,EAAI,YAAY,IAAI,EAExBA,EAAI,YAAY,KAAK,CAAE,OAAQC,EAAW,IAAKR,GAAUO,EAAI,YAAY,KAAKP,CAAK,CAAC,CAAE,CAAC,CAClG,CAEQ,gBAAgB,CACpB,SAAAI,EACA,OAAAD,CACJ,EAGoB,CAChB,IAAMM,EAAoBN,EAAOC,EAAS,KAAK,SAAS,EACxD,OAAIK,GAAqB,KACdF,EAAI,YAAY,IAAI,EAExB,KAAK,QAAQ,yBAAyB,QAAQ,CACjD,cAAeH,EAAS,cACxB,MAAOK,CACX,CAAC,CACL,CACJ","names":["init_process","init_buffer","FilePropertyMapper","context","__publicField","body","value","_a","result","record","property","assertNever","fileValue","php_exports","fileValues","bodyPropertyValue"]}
@@ -1,2 +0,0 @@
1
- import{a as g}from"./chunk-Q7QB5SA5.js";import{c as l}from"./chunk-BN32SYGE.js";import{a as f}from"./chunk-F7LTKJMT.js";import{e as r,f as m,g as p,i as o,j as c,l as s,m as u}from"./chunk-34WVNBJS.js";m();p();var h=["use","clone","list"],d="Requests",y="Types",C=class i extends l{constructor({ir:e,config:t}){var n;super({ir:e,config:t});r(this,"ir");r(this,"customConfig");r(this,"dynamicTypeLiteralMapper");r(this,"filePropertyMapper");r(this,"rootNamespace");this.ir=e,this.customConfig=t.customConfig!=null?t.customConfig:void 0,this.dynamicTypeLiteralMapper=new g({context:this}),this.filePropertyMapper=new f({context:this}),this.rootNamespace=F({organization:t.organization,namespaceOverride:(n=this.customConfig)==null?void 0:n.namespace})}clone(){return new i({ir:this.ir,config:this.config})}getParameterName(e){return this.prependUnderscoreIfNeeded(e.camelCase.unsafeName)}getPropertyName(e){return this.prependUnderscoreIfNeeded(e.camelCase.unsafeName)}getMethodName(e){let t=e.camelCase.unsafeName;return h.includes(t)?t:e.camelCase.safeName}getClassName(e){return u(e.pascalCase.safeName)}getRootClientClassName(){var e,t,n;return((e=this.customConfig)==null?void 0:e.clientName)!=null?this.customConfig.clientName:((t=this.customConfig)==null?void 0:t["client-class-name"])!=null?(n=this.customConfig)==null?void 0:n["client-class-name"]:this.getComputedClientName()}getEnvironmentsClassReference(){return s.classReference({name:"Environments",namespace:this.rootNamespace})}getRequestNamespace(e){return this.getNamespace(e,d)}getTypesNamespace(e){return this.getNamespace(e,y)}getNamespace(e,t){let n=e.allParts.map(N=>N.pascalCase.safeName);return n=t!=null?[...n,t]:n,[this.rootNamespace,...n].join("\\")}getEnvironmentClassAccessFromID(e){let t=this.resolveEnvironmentName(e);if(t!=null)return s.codeblock(n=>{n.writeNode(this.getEnvironmentClassReference(t)),n.write("::"),n.write(this.getClassName(t))})}getEnvironmentClassReference(e){return s.classReference({name:"Environments",namespace:this.rootNamespace})}prependUnderscoreIfNeeded(e){return/^[a-zA-Z_]/.test(e)?e:`_${e}`}getComputedClientName(){return`${this.getOrganizationPascalCase()}Client`}getOrganizationPascalCase(){return`${o(c(this.config.organization))}`}};function F({organization:i,namespaceOverride:a}){return a!=null?a:`${o(c(i))}`}export{C as a};
2
- //# sourceMappingURL=chunk-MZ7AWQF7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/context/DynamicSnippetsGeneratorContext.ts"],"sourcesContent":["import {\n AbstractDynamicSnippetsGeneratorContext,\n FernGeneratorExec\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { BasePhpCustomConfigSchema, getSafeClassName, php } from \"@fern-api/php-codegen\";\nimport { camelCase, upperFirst } from \"lodash-es\";\n\nimport { DynamicTypeLiteralMapper } from \"./DynamicTypeLiteralMapper\";\nimport { FilePropertyMapper } from \"./FilePropertyMapper\";\n\nconst RESERVED_METHOD_NAMES = [\"use\", \"clone\", \"list\"];\nconst REQUEST_NAMESPACE = \"Requests\";\nconst TYPES_NAMESPACE = \"Types\";\n\nexport class DynamicSnippetsGeneratorContext extends AbstractDynamicSnippetsGeneratorContext {\n public ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n public customConfig: BasePhpCustomConfigSchema | undefined;\n public dynamicTypeLiteralMapper: DynamicTypeLiteralMapper;\n public filePropertyMapper: FilePropertyMapper;\n public rootNamespace: string;\n constructor({\n ir,\n config\n }: {\n ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n config: FernGeneratorExec.GeneratorConfig;\n }) {\n super({ ir, config });\n this.ir = ir;\n this.customConfig =\n config.customConfig != null ? (config.customConfig as BasePhpCustomConfigSchema) : undefined;\n this.dynamicTypeLiteralMapper = new DynamicTypeLiteralMapper({ context: this });\n this.filePropertyMapper = new FilePropertyMapper({ context: this });\n this.rootNamespace = getRootNamespace({\n organization: config.organization,\n namespaceOverride: this.customConfig?.namespace\n });\n }\n\n public clone(): DynamicSnippetsGeneratorContext {\n return new DynamicSnippetsGeneratorContext({\n ir: this.ir,\n config: this.config\n });\n }\n\n public getParameterName(name: FernIr.Name): string {\n return this.prependUnderscoreIfNeeded(name.camelCase.unsafeName);\n }\n\n public getPropertyName(name: FernIr.Name): string {\n return this.prependUnderscoreIfNeeded(name.camelCase.unsafeName);\n }\n\n public getMethodName(name: FernIr.Name): string {\n // TODO: Propogate reserved keywords through IR via CasingsGenerator.\n const unsafeName = name.camelCase.unsafeName;\n if (RESERVED_METHOD_NAMES.includes(unsafeName)) {\n return unsafeName;\n }\n return name.camelCase.safeName;\n }\n\n public getClassName(name: FernIr.Name): string {\n return getSafeClassName(name.pascalCase.safeName);\n }\n\n public getRootClientClassName(): string {\n if (this.customConfig?.clientName != null) {\n return this.customConfig.clientName;\n }\n if (this.customConfig?.[\"client-class-name\"] != null) {\n return this.customConfig?.[\"client-class-name\"];\n }\n return this.getComputedClientName();\n }\n\n public getEnvironmentsClassReference(): php.ClassReference {\n return php.classReference({\n name: \"Environments\",\n namespace: this.rootNamespace\n });\n }\n\n public getRequestNamespace(fernFilepath: FernIr.dynamic.FernFilepath): string {\n return this.getNamespace(fernFilepath, REQUEST_NAMESPACE);\n }\n\n public getTypesNamespace(fernFilepath: FernIr.dynamic.FernFilepath): string {\n return this.getNamespace(fernFilepath, TYPES_NAMESPACE);\n }\n\n public getNamespace(fernFilepath: FernIr.dynamic.FernFilepath, suffix?: string): string {\n let parts = fernFilepath.allParts.map((path) => path.pascalCase.safeName);\n parts = suffix != null ? [...parts, suffix] : parts;\n return [this.rootNamespace, ...parts].join(\"\\\\\");\n }\n\n public getEnvironmentClassAccessFromID(environmentID: string): php.AstNode | undefined {\n const environmentName = this.resolveEnvironmentName(environmentID);\n if (environmentName == null) {\n return undefined;\n }\n return php.codeblock((writer) => {\n writer.writeNode(this.getEnvironmentClassReference(environmentName));\n writer.write(\"::\");\n writer.write(this.getClassName(environmentName));\n });\n }\n\n public getEnvironmentClassReference(name: FernIr.Name): php.ClassReference {\n return php.classReference({\n name: \"Environments\",\n namespace: this.rootNamespace\n });\n }\n\n private prependUnderscoreIfNeeded(input: string): string {\n // https://www.php.net/manual/en/language.variables.basics.php\n if (!/^[a-zA-Z_]/.test(input)) {\n return `_${input}`;\n }\n return input;\n }\n\n private getComputedClientName(): string {\n return `${this.getOrganizationPascalCase()}Client`;\n }\n\n private getOrganizationPascalCase(): string {\n return `${upperFirst(camelCase(this.config.organization))}`;\n }\n}\n\nfunction getRootNamespace({\n organization,\n namespaceOverride\n}: {\n organization: string;\n namespaceOverride?: string;\n}): string {\n return namespaceOverride ?? `${upperFirst(camelCase(organization))}`;\n}\n"],"mappings":"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","names":["init_process","init_buffer","RESERVED_METHOD_NAMES","REQUEST_NAMESPACE","TYPES_NAMESPACE","DynamicSnippetsGeneratorContext","_DynamicSnippetsGeneratorContext","AbstractDynamicSnippetsGeneratorContext","ir","config","_a","__publicField","DynamicTypeLiteralMapper","FilePropertyMapper","getRootNamespace","name","unsafeName","getSafeClassName","_b","_c","php_exports","fernFilepath","suffix","parts","path","environmentID","environmentName","writer","input","upperFirst_default","camelCase_default","organization","namespaceOverride"]}
@@ -1,4 +0,0 @@
1
- import{b as l,d as p}from"./chunk-BN32SYGE.js";import{e as F,f as I,g as x,h as m,l as i}from"./chunk-34WVNBJS.js";I();x();var A="$client",f="Example",C=`<?php
2
-
3
- `,P=class{constructor({context:e}){F(this,"context");this.context=e}async generateSnippet({endpoint:e,request:t}){var n;let r=this.buildCodeBlock({endpoint:e,snippet:t});return C+await r.toStringAsync({namespace:f,rootNamespace:f,customConfig:(n=this.context.customConfig)!=null?n:{}})}generateSnippetSync({endpoint:e,request:t}){var n;let r=this.buildCodeBlock({endpoint:e,snippet:t});return C+r.toString({namespace:f,rootNamespace:f,customConfig:(n=this.context.customConfig)!=null?n:{}})}async generateSnippetAst({endpoint:e,request:t,options:r}){return r!=null&&r.skipClientInstantiation?this.buildCodeBlockWithoutClient({endpoint:e,snippet:t}):this.buildCodeBlock({endpoint:e,snippet:t})}buildCodeBlock({endpoint:e,snippet:t}){return i.codeblock(r=>{r.writeNodeStatement(this.constructClient({endpoint:e,snippet:t})),r.writeNodeStatement(this.callMethod({endpoint:e,snippet:t}))})}buildCodeBlockWithoutClient({endpoint:e,snippet:t}){return i.codeblock(r=>{r.writeNodeStatement(this.callMethodOnExistingClient({endpoint:e,snippet:t}))})}constructClient({endpoint:e,snippet:t}){return i.codeblock(r=>{r.write(`${A} = `),r.writeNode(this.getRootClientClassInstantiation(this.getConstructorArgs({endpoint:e,snippet:t})))})}callMethod({endpoint:e,snippet:t}){return i.invokeMethod({on:i.codeblock(A),method:this.getMethod({endpoint:e}),arguments_:this.getMethodArgs({endpoint:e,snippet:t}),multiline:!0})}callMethodOnExistingClient({endpoint:e,snippet:t}){let r=this.getMethodArgs({endpoint:e,snippet:t}),n=this.getRequestOptions({endpoint:e,snippet:t});return i.TypeLiteral.isNop(n)||r.push(n),i.invokeMethod({on:i.codeblock("$this->client"),method:this.getMethod({endpoint:e}),arguments_:r,multiline:!0})}getRequestOptions({endpoint:e,snippet:t}){var o;let r=(o=t.headers)!=null?o:{},n=Object.entries(r);if(n.length===0)return i.TypeLiteral.nop();let s=new Set;if(this.context.ir.headers!=null)for(let c of this.context.ir.headers)s.add(c.name.wireValue.toLowerCase());if(e.request.type==="inlined"&&e.request.headers!=null)for(let c of e.request.headers)s.add(c.name.wireValue.toLowerCase());let a=n.filter(([c])=>!s.has(c.toLowerCase()));return a.length===0?i.TypeLiteral.nop():i.TypeLiteral.map({entries:[{key:i.TypeLiteral.string("headers"),value:i.TypeLiteral.map({entries:a.map(([c,u])=>({key:i.TypeLiteral.string(c),value:i.TypeLiteral.string(String(u))}))})}]})}getConstructorArgs({endpoint:e,snippet:t}){var c;let r=[];if(e.auth!=null)if(t.auth!=null)r.push(...this.getConstructorAuthArgs({auth:e.auth,values:t.auth}));else if(e.auth.type==="inferred"){let u={type:"inferred"};r.push(...this.getConstructorInferredAuthArgs({auth:e.auth,values:u}))}else this.context.errors.add({severity:l.Warning,message:`Auth with ${e.auth.type} configuration is required for this endpoint`});let n=((c=this.context.ir.environments)==null?void 0:c.environments.type)==="multipleBaseUrls",s=this.getConstructorEnvironmentArg({environment:t.environment,hasMultiUrlEnvironments:n}),a=[];if(!n){let u=this.getConstructorBaseUrlArgs({baseUrl:t.baseURL,environment:t.environment});u.length>0&&a.push(...u)}this.context.errors.scope(p.Headers),this.context.ir.headers!=null&&t.headers!=null&&a.push(...this.getConstructorHeaderArgs({headers:this.context.ir.headers,values:t.headers})),this.context.errors.unscope();let o=[...r];return s!=null&&o.push(s),a.length>0&&o.push({name:"options",assignment:i.TypeLiteral.map({entries:a.map(u=>({key:i.TypeLiteral.string(u.name),value:u.value}))})}),o}getConstructorAuthArgs({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.getConstructorBasicAuthArgs({auth:e,values:t}):[];case"bearer":return t.type==="bearer"?this.getConstructorBearerAuthArgs({auth:e,values:t}):[];case"header":return t.type==="header"?this.getConstructorHeaderAuthArgs({auth:e,values:t}):[];case"oauth":return t.type==="oauth"?this.getConstructorOAuthArgs({auth:e,values:t}):[];case"inferred":return t.type==="inferred"?this.getConstructorInferredAuthArgs({auth:e,values:t}):[];default:m(e)}}addError(e){this.context.errors.add({severity:l.Critical,message:e})}addWarning(e){this.context.errors.add({severity:l.Warning,message:e})}getConstructorBasicAuthArgs({auth:e,values:t}){return[{name:this.context.getPropertyName(e.username),assignment:i.TypeLiteral.string(t.username)},{name:this.context.getPropertyName(e.password),assignment:i.TypeLiteral.string(t.password)}]}getConstructorEnvironmentArg({environment:e,hasMultiUrlEnvironments:t}){if(!t)return;let r=this.context.getEnvironmentsClassReference();if(e!=null){if(this.context.isSingleEnvironmentID(e)){let s=this.context.resolveEnvironmentName(e);if(s==null){this.addWarning(`Environment "${e}" was not found`);return}let a=this.context.getClassName(s);return{name:"environment",assignment:i.TypeLiteral.reference(i.codeblock(o=>{o.writeNode(r),o.write("::"),o.write(a),o.write("()")}))}}if(this.context.isMultiEnvironmentValues(e)){let s=this.resolveMultiEnvironmentName(e);if(s==null){this.addWarning("Invalid multi url environment");return}return s.type==="named"?{name:"environment",assignment:i.TypeLiteral.reference(i.codeblock(a=>{a.writeNode(r),a.write("::"),a.write(s.name),a.write("()")}))}:{name:"environment",assignment:i.TypeLiteral.reference(i.codeblock(a=>{a.writeNode(r),a.write("::custom(");let o=Object.entries(s.urls);o.forEach(([c,u],d)=>{a.write(`${c}: '${u}'`),d<o.length-1&&a.write(", ")}),a.write(")")}))}}}let n=this.getDefaultEnvironmentName();if(n!=null)return{name:"environment",assignment:i.TypeLiteral.reference(i.codeblock(s=>{s.writeNode(r),s.write("::"),s.write(n),s.write("()")}))}}getDefaultEnvironmentName(){var n;if(((n=this.context.ir.environments)==null?void 0:n.environments.type)!=="multipleBaseUrls")return;let e=this.context.ir.environments.environments;if(e.type!=="multipleBaseUrls")return;let t=e.environments;if(t.length===0)return;for(let s of t){let a=this.context.getClassName(s.name);if(a==="Production")return a}let r=t[0];if(r!=null)return this.context.getClassName(r.name)}resolveMultiEnvironmentName(e){let t=Object.keys(e);if(t.length===0||!this.context.validateMultiEnvironmentUrlValues(e))return;let r=t[0];if(r==null)return;let n=e[r];if(n==null)return;let s=this.context.resolveEnvironmentName(n);if(s!=null&&t.every(c=>{let u=e[c];return u==null?!1:this.context.resolveEnvironmentName(u)!=null&&u===n}))return{type:"named",name:this.context.getClassName(s)};let a={};for(let o of t){let c=e[o];if(c==null)continue;let u=this.getBaseUrlPropertyName(o);a[u]=c}if(Object.keys(a).length>0)return{type:"custom",urls:a}}getBaseUrlPropertyName(e){var n;if(((n=this.context.ir.environments)==null?void 0:n.environments.type)!=="multipleBaseUrls")return e;let t=this.context.ir.environments.environments;if(t.type!=="multipleBaseUrls")return e;let r=t.baseUrls.find(s=>s.id===e);return r==null?e:r.name.camelCase.safeName}getConstructorBaseUrlArgs({baseUrl:e,environment:t}){let r=this.getBaseUrlArg({baseUrl:e,environment:t});return i.TypeLiteral.isNop(r)?[]:[{name:"baseUrl",value:r}]}getBaseUrlArg({baseUrl:e,environment:t}){var r;if(e!=null&&t!=null)return this.context.errors.add({severity:l.Critical,message:"Cannot specify both baseUrl and environment options"}),i.TypeLiteral.nop();if(e!=null)return i.TypeLiteral.string(e);if(t!=null){if(this.context.isSingleEnvironmentID(t)){let n=this.context.getEnvironmentClassAccessFromID(t);return n==null?(this.context.errors.add({severity:l.Warning,message:`Environment ${JSON.stringify(t)} was not found`}),i.TypeLiteral.nop()):i.TypeLiteral.reference(i.codeblock(s=>{s.writeNode(n),s.write("->value")}))}if(((r=this.context.ir.environments)==null?void 0:r.environments.type)==="multipleBaseUrls")return i.TypeLiteral.nop()}return i.TypeLiteral.nop()}getConstructorBearerAuthArgs({auth:e,values:t}){return[{name:this.context.getPropertyName(e.token),assignment:i.TypeLiteral.string(t.token)}]}getConstructorHeaderAuthArgs({auth:e,values:t}){return[{name:this.context.getPropertyName(e.header.name.name),assignment:this.context.dynamicTypeLiteralMapper.convert({typeReference:e.header.typeReference,value:t.value})}]}getConstructorOAuthArgs({auth:e,values:t}){return[{name:this.context.getPropertyName(e.clientId),assignment:i.TypeLiteral.string(t.clientId)},{name:this.context.getPropertyName(e.clientSecret),assignment:i.TypeLiteral.string(t.clientSecret)}]}getConstructorInferredAuthArgs({auth:e,values:t}){return[]}getConstructorHeaderArgs({headers:e,values:t}){let r=[];for(let n of e){let s=this.getConstructorHeaderArg({header:n,value:t.value});s!=null&&r.push({name:this.context.getPropertyName(n.name.name),value:s})}return r}getConstructorHeaderArg({header:e,value:t}){let r=this.context.dynamicTypeLiteralMapper.convert({typeReference:e.typeReference,value:t});if(!i.TypeLiteral.isNop(r))return r}getMethodArgs({endpoint:e,snippet:t}){switch(e.request.type){case"inlined":return this.getMethodArgsForInlinedRequest({request:e.request,snippet:t});case"body":return this.getMethodArgsForBodyRequest({request:e.request,snippet:t});default:m(e.request)}}getMethodArgsForBodyRequest({request:e,snippet:t}){var s,a;let r=[];this.context.errors.scope(p.PathParameters);let n=[...(s=this.context.ir.pathParameters)!=null?s:[],...(a=e.pathParameters)!=null?a:[]];return n.length>0&&r.push(...this.getPathParameters({namedParameters:n,snippet:t}).map(o=>o.value)),this.context.errors.unscope(),this.context.errors.scope(p.RequestBody),e.body!=null&&r.push(this.getBodyRequestArg({body:e.body,value:t.requestBody})),this.context.errors.unscope(),r}getBodyRequestArg({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});default:m(e)}}getBytesBodyRequestArg({value:e}){return this.context.errors.add({severity:l.Critical,message:"The PHP SDK doesn't support bytes requests yet"}),i.TypeLiteral.nop()}getMethodArgsForInlinedRequest({request:e,snippet:t}){var c,u,d,h;let r=[],n=(u=(c=this.context.customConfig)==null?void 0:c.inlinePathParameters)!=null?u:!1;this.context.errors.scope(p.PathParameters);let s=[],a=[...(d=this.context.ir.pathParameters)!=null?d:[],...(h=e.pathParameters)!=null?h:[]];a.length>0&&s.push(...this.getPathParameters({namedParameters:a,snippet:t})),this.context.errors.unscope(),this.context.errors.scope(p.RequestBody);let o=this.getFilePropertyInfo({request:e,snippet:t});return this.context.errors.unscope(),this.context.includePathParametersInWrappedRequest({request:e,inlinePathParameters:n})||r.push(...s.map(g=>g.value)),this.context.needsRequestParameter({request:e,inlinePathParameters:n,inlineFileProperties:!0})&&r.push(this.getInlinedRequestArg({request:e,snippet:t,pathParameterFields:this.context.includePathParametersInWrappedRequest({request:e,inlinePathParameters:n})?s:[],filePropertyInfo:o})),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:n}){var d,h,g,v;this.context.errors.scope(p.QueryParameters);let a=this.context.associateQueryParametersByWireValue({parameters:(d=e.queryParameters)!=null?d:[],values:(h=t.queryParameters)!=null?h:{}}).map(y=>({name:this.context.getPropertyName(y.name.name),value:this.context.dynamicTypeLiteralMapper.convert(y)}));this.context.errors.unscope(),this.context.errors.scope(p.Headers);let c=this.context.associateByWireValue({parameters:(g=e.headers)!=null?g:[],values:(v=t.headers)!=null?v:{}}).map(y=>({name:this.context.getPropertyName(y.name.name),value:this.context.dynamicTypeLiteralMapper.convert(y)}));this.context.errors.unscope(),this.context.errors.scope(p.RequestBody);let u=e.body!=null?this.getInlinedRequestBodyConstructorFields({body:e.body,value:t.requestBody,filePropertyInfo:n}):[];return this.context.errors.unscope(),i.TypeLiteral.class_({reference:i.classReference({name:this.context.getClassName(e.declaration.name),namespace:this.context.getRequestNamespace(e.declaration.fernFilepath)}),fields:[...r,...a,...c,...u]})}getInlinedRequestBodyConstructorFields({body:e,value:t,filePropertyInfo:r}){switch(e.type){case"properties":return this.getInlinedRequestBodyPropertyConstructorFields({parameters:e.value,value:t});case"referenced":return[this.getReferencedRequestBodyPropertyConstructorField({body:e,value:t})];case"fileUpload":return this.getFileUploadRequestBodyConstructorFields({filePropertyInfo:r});default:m(e)}}getFileUploadRequestBodyConstructorFields({filePropertyInfo:e}){return[...e.fileFields,...e.bodyPropertyFields]}getReferencedRequestBodyPropertyConstructorField({body:e,value:t}){return{name:this.context.getPropertyName(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});default:m(e)}}getInlinedRequestBodyPropertyConstructorFields({parameters:e,value:t}){var s;let r=[],n=this.context.associateByWireValue({parameters:e,values:(s=this.context.getRecord(t))!=null?s:{}});for(let a of n)r.push({name:this.context.getPropertyName(a.name.name),value:this.context.dynamicTypeLiteralMapper.convert(a)});return r}getPathParameters({namedParameters:e,snippet:t}){var s;let r=[],n=this.context.associateByWireValue({parameters:e,values:(s=t.pathParameters)!=null?s:{}});for(let a of n)r.push({name:this.context.getPropertyName(a.name.name),value:this.context.dynamicTypeLiteralMapper.convert(a)});return r}getMethod({endpoint:e}){return e.declaration.fernFilepath.allParts.length>0?`${e.declaration.fernFilepath.allParts.map(t=>this.context.getPropertyName(t)).join("->")}->${this.context.getMethodName(e.declaration.name)}`:this.context.getMethodName(e.declaration.name)}getRootClientClassInstantiation(e){return i.instantiateClass({classReference:i.classReference({name:this.context.getRootClientClassName(),namespace:this.context.rootNamespace}),arguments_:e,multiline:!0})}};export{P as a};
4
- //# sourceMappingURL=chunk-P7HYTUQU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/EndpointSnippetGenerator.ts"],"sourcesContent":["import { AbstractAstNode, NamedArgument, Options, Scope, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { php } from \"@fern-api/php-codegen\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper\";\n\nconst CLIENT_VAR_NAME = \"$client\";\nconst SNIPPET_NAMESPACE = \"Example\";\nconst PHP_PREFIX = \"<?php\\n\\n\";\n\nexport class EndpointSnippetGenerator {\n private context: DynamicSnippetsGeneratorContext;\n\n constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n this.context = context;\n }\n\n public async generateSnippet({\n endpoint,\n request\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n }): Promise<string> {\n const code = this.buildCodeBlock({ endpoint, snippet: request });\n return (\n PHP_PREFIX +\n (await code.toStringAsync({\n namespace: SNIPPET_NAMESPACE,\n rootNamespace: SNIPPET_NAMESPACE,\n customConfig: this.context.customConfig ?? {}\n }))\n );\n }\n\n public generateSnippetSync({\n endpoint,\n request\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n }): string {\n const code = this.buildCodeBlock({ endpoint, snippet: request });\n return (\n PHP_PREFIX +\n code.toString({\n namespace: SNIPPET_NAMESPACE,\n rootNamespace: SNIPPET_NAMESPACE,\n customConfig: this.context.customConfig ?? {}\n })\n );\n }\n\n public async generateSnippetAst({\n endpoint,\n request,\n options\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n request: FernIr.dynamic.EndpointSnippetRequest;\n options?: Options;\n }): Promise<AbstractAstNode> {\n if (options?.skipClientInstantiation) {\n return this.buildCodeBlockWithoutClient({ endpoint, snippet: request });\n }\n return this.buildCodeBlock({ endpoint, snippet: request });\n }\n\n public buildCodeBlock({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): php.AstNode {\n return php.codeblock((writer) => {\n writer.writeNodeStatement(this.constructClient({ endpoint, snippet }));\n writer.writeNodeStatement(this.callMethod({ endpoint, snippet }));\n });\n }\n\n public buildCodeBlockWithoutClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): php.AstNode {\n return php.codeblock((writer) => {\n // Skip client instantiation - assume client is already available as $this->client\n writer.writeNodeStatement(this.callMethodOnExistingClient({ endpoint, snippet }));\n });\n }\n\n private constructClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): php.CodeBlock {\n return php.codeblock((writer) => {\n writer.write(`${CLIENT_VAR_NAME} = `);\n writer.writeNode(this.getRootClientClassInstantiation(this.getConstructorArgs({ endpoint, snippet })));\n });\n }\n\n private callMethod({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): php.MethodInvocation {\n return php.invokeMethod({\n on: php.codeblock(CLIENT_VAR_NAME),\n method: this.getMethod({ endpoint }),\n arguments_: this.getMethodArgs({ endpoint, snippet }),\n multiline: true\n });\n }\n\n private callMethodOnExistingClient({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): php.MethodInvocation {\n const args = this.getMethodArgs({ endpoint, snippet });\n const requestOptions = this.getRequestOptions({ endpoint, snippet });\n if (!php.TypeLiteral.isNop(requestOptions)) {\n args.push(requestOptions);\n }\n return php.invokeMethod({\n on: php.codeblock(\"$this->client\"),\n method: this.getMethod({ endpoint }),\n arguments_: args,\n multiline: true\n });\n }\n\n /**\n * Builds request options from snippet headers for per-request options.\n * This is used when generating snippets for existing clients (e.g., wire tests)\n * where headers should be passed as method call options rather than client constructor options.\n * Only includes headers that are NOT already mapped to the request directly (i.e., not defined in the IR).\n */\n private getRequestOptions({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): php.TypeLiteral {\n const headers = snippet.headers ?? {};\n const entries = Object.entries(headers);\n if (entries.length === 0) {\n return php.TypeLiteral.nop();\n }\n\n // Build a set of header names that are already mapped to the request directly\n const mappedHeaderNames = new Set<string>();\n\n // Add global headers from IR\n if (this.context.ir.headers != null) {\n for (const header of this.context.ir.headers) {\n mappedHeaderNames.add(header.name.wireValue.toLowerCase());\n }\n }\n\n // Add endpoint-level headers from inlined request\n if (endpoint.request.type === \"inlined\" && endpoint.request.headers != null) {\n for (const header of endpoint.request.headers) {\n mappedHeaderNames.add(header.name.wireValue.toLowerCase());\n }\n }\n\n // Filter out headers that are already mapped to the request\n const unmappedEntries = entries.filter(([name]) => !mappedHeaderNames.has(name.toLowerCase()));\n if (unmappedEntries.length === 0) {\n return php.TypeLiteral.nop();\n }\n\n return php.TypeLiteral.map({\n entries: [\n {\n key: php.TypeLiteral.string(\"headers\"),\n value: php.TypeLiteral.map({\n entries: unmappedEntries.map(([name, value]) => ({\n key: php.TypeLiteral.string(name),\n value: php.TypeLiteral.string(String(value))\n }))\n })\n }\n ]\n });\n }\n\n private getConstructorArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): NamedArgument[] {\n const authArgs: NamedArgument[] = [];\n if (endpoint.auth != null) {\n if (snippet.auth != null) {\n authArgs.push(...this.getConstructorAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n } else {\n // Provide default auth values for endpoints that require authentication\n if (endpoint.auth.type === \"inferred\") {\n // For inferred auth, provide default test values\n const defaultInferredAuthValues: FernIr.dynamic.InferredAuthValues = {\n type: \"inferred\"\n };\n authArgs.push(\n ...this.getConstructorInferredAuthArgs({\n auth: endpoint.auth,\n values: defaultInferredAuthValues\n })\n );\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 }\n\n const hasMultiUrlEnvironments = this.context.ir.environments?.environments.type === \"multipleBaseUrls\";\n const environmentArg = this.getConstructorEnvironmentArg({\n environment: snippet.environment,\n hasMultiUrlEnvironments\n });\n\n const optionArgs: php.ConstructorField[] = [];\n\n if (!hasMultiUrlEnvironments) {\n const baseUrlArgs = this.getConstructorBaseUrlArgs({\n baseUrl: snippet.baseURL,\n environment: snippet.environment\n });\n if (baseUrlArgs.length > 0) {\n optionArgs.push(...baseUrlArgs);\n }\n }\n\n this.context.errors.scope(Scope.Headers);\n if (this.context.ir.headers != null && snippet.headers != null) {\n optionArgs.push(\n ...this.getConstructorHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n );\n }\n this.context.errors.unscope();\n\n const args: NamedArgument[] = [...authArgs];\n\n if (environmentArg != null) {\n args.push(environmentArg);\n }\n\n if (optionArgs.length > 0) {\n args.push({\n name: \"options\",\n assignment: php.TypeLiteral.map({\n entries: optionArgs.map((arg) => ({\n key: php.TypeLiteral.string(arg.name),\n value: arg.value\n }))\n })\n });\n }\n\n return args;\n }\n\n private getConstructorAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.Auth;\n values: FernIr.dynamic.AuthValues;\n }): NamedArgument[] {\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.getConstructorBasicAuthArgs({ auth, values }) : [];\n case \"bearer\":\n return values.type === \"bearer\" ? this.getConstructorBearerAuthArgs({ auth, values }) : [];\n case \"header\":\n return values.type === \"header\" ? this.getConstructorHeaderAuthArgs({ auth, values }) : [];\n case \"oauth\":\n return values.type === \"oauth\" ? this.getConstructorOAuthArgs({ auth, values }) : [];\n case \"inferred\":\n return values.type === \"inferred\" ? this.getConstructorInferredAuthArgs({ auth, values }) : [];\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 getConstructorBasicAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BasicAuth;\n values: FernIr.dynamic.BasicAuthValues;\n }): NamedArgument[] {\n return [\n {\n name: this.context.getPropertyName(auth.username),\n assignment: php.TypeLiteral.string(values.username)\n },\n {\n name: this.context.getPropertyName(auth.password),\n assignment: php.TypeLiteral.string(values.password)\n }\n ];\n }\n\n private getConstructorEnvironmentArg({\n environment,\n hasMultiUrlEnvironments\n }: {\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n hasMultiUrlEnvironments: boolean;\n }): NamedArgument | undefined {\n if (!hasMultiUrlEnvironments) {\n return undefined;\n }\n\n const environmentClassRef = this.context.getEnvironmentsClassReference();\n\n if (environment != null) {\n if (this.context.isSingleEnvironmentID(environment)) {\n const environmentName = this.context.resolveEnvironmentName(environment);\n if (environmentName == null) {\n this.addWarning(`Environment \"${environment}\" was not found`);\n return undefined;\n }\n const className = this.context.getClassName(environmentName);\n return {\n name: \"environment\",\n assignment: php.TypeLiteral.reference(\n php.codeblock((writer) => {\n writer.writeNode(environmentClassRef);\n writer.write(`::`);\n writer.write(className);\n writer.write(`()`);\n })\n )\n };\n }\n\n if (this.context.isMultiEnvironmentValues(environment)) {\n const result = this.resolveMultiEnvironmentName(environment);\n if (result == null) {\n this.addWarning(\"Invalid multi url environment\");\n return undefined;\n }\n if (result.type === \"named\") {\n return {\n name: \"environment\",\n assignment: php.TypeLiteral.reference(\n php.codeblock((writer) => {\n writer.writeNode(environmentClassRef);\n writer.write(`::`);\n writer.write(result.name);\n writer.write(`()`);\n })\n )\n };\n } else {\n return {\n name: \"environment\",\n assignment: php.TypeLiteral.reference(\n php.codeblock((writer) => {\n writer.writeNode(environmentClassRef);\n writer.write(`::custom(`);\n const entries = Object.entries(result.urls);\n entries.forEach(([paramName, url], index) => {\n writer.write(`${paramName}: '${url}'`);\n if (index < entries.length - 1) {\n writer.write(`, `);\n }\n });\n writer.write(`)`);\n })\n )\n };\n }\n }\n }\n\n const defaultName = this.getDefaultEnvironmentName();\n if (defaultName == null) {\n return undefined;\n }\n\n return {\n name: \"environment\",\n assignment: php.TypeLiteral.reference(\n php.codeblock((writer) => {\n writer.writeNode(environmentClassRef);\n writer.write(`::`);\n writer.write(defaultName);\n writer.write(`()`);\n })\n )\n };\n }\n\n private getDefaultEnvironmentName(): string | undefined {\n if (this.context.ir.environments?.environments.type !== \"multipleBaseUrls\") {\n return undefined;\n }\n\n const environmentsConfig = this.context.ir.environments.environments;\n if (environmentsConfig.type !== \"multipleBaseUrls\") {\n return undefined;\n }\n\n const environments = environmentsConfig.environments;\n if (environments.length === 0) {\n return undefined;\n }\n\n for (const env of environments) {\n const className = this.context.getClassName(env.name);\n if (className === \"Production\") {\n return className;\n }\n }\n\n const firstEnv = environments[0];\n if (firstEnv == null) {\n return undefined;\n }\n return this.context.getClassName(firstEnv.name);\n }\n\n private resolveMultiEnvironmentName(\n environment: FernIr.dynamic.MultipleEnvironmentUrlValues\n ): { type: \"named\"; name: string } | { type: \"custom\"; urls: Record<string, string> } | undefined {\n const baseUrlIds = Object.keys(environment);\n if (baseUrlIds.length === 0) {\n return undefined;\n }\n\n // Validate that all required base URLs are provided\n if (!this.context.validateMultiEnvironmentUrlValues(environment)) {\n return undefined;\n }\n\n const firstBaseUrlId = baseUrlIds[0];\n if (firstBaseUrlId == null) {\n return undefined;\n }\n\n const firstBaseUrlValue = environment[firstBaseUrlId];\n if (firstBaseUrlValue == null) {\n return undefined;\n }\n\n // Check if the first value is a valid environment ID (not just any string)\n const firstEnvironmentName = this.context.resolveEnvironmentName(firstBaseUrlValue);\n if (firstEnvironmentName != null) {\n // Check if all values point to the same environment\n const allSameEnvironment = baseUrlIds.every((baseUrlId) => {\n const value = environment[baseUrlId];\n if (value == null) {\n return false;\n }\n const envName = this.context.resolveEnvironmentName(value);\n return envName != null && value === firstBaseUrlValue;\n });\n\n if (allSameEnvironment) {\n return { type: \"named\", name: this.context.getClassName(firstEnvironmentName) };\n }\n }\n\n // Treat all values as custom URLs\n const urls: Record<string, string> = {};\n for (const baseUrlId of baseUrlIds) {\n const value = environment[baseUrlId];\n if (value == null) {\n continue;\n }\n const paramName = this.getBaseUrlPropertyName(baseUrlId);\n urls[paramName] = value;\n }\n\n if (Object.keys(urls).length > 0) {\n return { type: \"custom\", urls };\n }\n\n return undefined;\n }\n\n private getBaseUrlPropertyName(baseUrlId: string): string {\n if (this.context.ir.environments?.environments.type !== \"multipleBaseUrls\") {\n return baseUrlId;\n }\n\n const environmentsConfig = this.context.ir.environments.environments;\n if (environmentsConfig.type !== \"multipleBaseUrls\") {\n return baseUrlId;\n }\n\n const baseUrl = environmentsConfig.baseUrls.find((url) => url.id === baseUrlId);\n if (baseUrl == null) {\n return baseUrlId;\n }\n\n return baseUrl.name.camelCase.safeName;\n }\n\n private getConstructorBaseUrlArgs({\n baseUrl,\n environment\n }: {\n baseUrl: string | undefined;\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n }): php.ConstructorField[] {\n const baseUrlArg = this.getBaseUrlArg({ baseUrl, environment });\n if (php.TypeLiteral.isNop(baseUrlArg)) {\n return [];\n }\n return [\n {\n name: \"baseUrl\",\n value: baseUrlArg\n }\n ];\n }\n\n private getBaseUrlArg({\n baseUrl,\n environment\n }: {\n baseUrl: string | undefined;\n environment: FernIr.dynamic.EnvironmentValues | undefined;\n }): php.TypeLiteral {\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 php.TypeLiteral.nop();\n }\n if (baseUrl != null) {\n return php.TypeLiteral.string(baseUrl);\n }\n if (environment != null) {\n if (this.context.isSingleEnvironmentID(environment)) {\n const classReference = this.context.getEnvironmentClassAccessFromID(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 php.TypeLiteral.nop();\n }\n return php.TypeLiteral.reference(\n php.codeblock((writer) => {\n writer.writeNode(classReference);\n writer.write(\"->value\");\n })\n );\n }\n if (this.context.ir.environments?.environments.type === \"multipleBaseUrls\") {\n return php.TypeLiteral.nop();\n }\n }\n return php.TypeLiteral.nop();\n }\n\n private getConstructorBearerAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.BearerAuth;\n values: FernIr.dynamic.BearerAuthValues;\n }): NamedArgument[] {\n return [\n {\n name: this.context.getPropertyName(auth.token),\n assignment: php.TypeLiteral.string(values.token)\n }\n ];\n }\n\n private getConstructorHeaderAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.HeaderAuth;\n values: FernIr.dynamic.HeaderAuthValues;\n }): NamedArgument[] {\n return [\n {\n name: this.context.getPropertyName(auth.header.name.name),\n assignment: this.context.dynamicTypeLiteralMapper.convert({\n typeReference: auth.header.typeReference,\n value: values.value\n })\n }\n ];\n }\n\n private getConstructorOAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.OAuth;\n values: FernIr.dynamic.OAuthValues;\n }): NamedArgument[] {\n return [\n {\n name: this.context.getPropertyName(auth.clientId),\n assignment: php.TypeLiteral.string(values.clientId)\n },\n {\n name: this.context.getPropertyName(auth.clientSecret),\n assignment: php.TypeLiteral.string(values.clientSecret)\n }\n ];\n }\n\n private getConstructorInferredAuthArgs({\n auth,\n values\n }: {\n auth: FernIr.dynamic.InferredAuth;\n values: FernIr.dynamic.InferredAuthValues;\n }): NamedArgument[] {\n // For now, return empty array to avoid the RangeError issue\n // The inferred auth parameters should be extracted from the normal IR,\n // not the dynamic IR which doesn't contain the detailed endpoint information\n return [];\n }\n\n private getConstructorHeaderArgs({\n headers,\n values\n }: {\n headers: FernIr.dynamic.NamedParameter[];\n values: FernIr.dynamic.Values;\n }): php.ConstructorField[] {\n const args: php.ConstructorField[] = [];\n for (const header of headers) {\n const arg = this.getConstructorHeaderArg({ header, value: values.value });\n if (arg != null) {\n args.push({\n name: this.context.getPropertyName(header.name.name),\n value: arg\n });\n }\n }\n return args;\n }\n\n private getConstructorHeaderArg({\n header,\n value\n }: {\n header: FernIr.dynamic.NamedParameter;\n value: unknown;\n }): php.TypeLiteral | undefined {\n const typeLiteral = this.context.dynamicTypeLiteralMapper.convert({\n typeReference: header.typeReference,\n value\n });\n if (php.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 getMethodArgs({\n endpoint,\n snippet\n }: {\n endpoint: FernIr.dynamic.Endpoint;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): php.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 }): php.TypeLiteral[] {\n const args: php.TypeLiteral[] = [];\n\n this.context.errors.scope(Scope.PathParameters);\n const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\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 return args;\n }\n\n private getBodyRequestArg({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBodyType;\n value: unknown;\n }): php.TypeLiteral {\n switch (body.type) {\n case \"bytes\": {\n return this.getBytesBodyRequestArg({ value });\n }\n case \"typeReference\":\n return this.context.dynamicTypeLiteralMapper.convert({ typeReference: body.value, value });\n default:\n assertNever(body);\n }\n }\n\n private getBytesBodyRequestArg({ value }: { value: unknown }): php.TypeLiteral {\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"The PHP SDK doesn't support bytes requests yet\"\n });\n return php.TypeLiteral.nop();\n }\n\n private getMethodArgsForInlinedRequest({\n request,\n snippet\n }: {\n request: FernIr.dynamic.InlinedRequest;\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): php.TypeLiteral[] {\n const args: php.TypeLiteral[] = [];\n\n const inlinePathParameters = this.context.customConfig?.inlinePathParameters ?? false;\n\n this.context.errors.scope(Scope.PathParameters);\n const pathParameterFields: php.ConstructorField[] = [];\n const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n if (pathParameters.length > 0) {\n pathParameterFields.push(...this.getPathParameters({ namedParameters: pathParameters, 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 (!this.context.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n args.push(...pathParameterFields.map((field) => field.value));\n }\n\n if (\n this.context.needsRequestParameter({\n request,\n inlinePathParameters,\n inlineFileProperties: true // The PHP SDK requires inlineFileProperties.\n })\n ) {\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: php.ConstructorField[];\n filePropertyInfo: FilePropertyInfo;\n }): php.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 queryParameterFields = queryParameters.map((queryParameter) => ({\n name: this.context.getPropertyName(queryParameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert(queryParameter)\n }));\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.Headers);\n const headers = this.context.associateByWireValue({\n parameters: request.headers ?? [],\n values: snippet.headers ?? {}\n });\n const headerFields = headers.map((header) => ({\n name: this.context.getPropertyName(header.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert(header)\n }));\n this.context.errors.unscope();\n\n this.context.errors.scope(Scope.RequestBody);\n const requestBodyFields =\n request.body != null\n ? this.getInlinedRequestBodyConstructorFields({\n body: request.body,\n value: snippet.requestBody,\n filePropertyInfo\n })\n : [];\n this.context.errors.unscope();\n\n return php.TypeLiteral.class_({\n reference: php.classReference({\n name: this.context.getClassName(request.declaration.name),\n namespace: this.context.getRequestNamespace(request.declaration.fernFilepath)\n }),\n fields: [...pathParameterFields, ...queryParameterFields, ...headerFields, ...requestBodyFields]\n });\n }\n\n private getInlinedRequestBodyConstructorFields({\n body,\n value,\n filePropertyInfo\n }: {\n body: FernIr.dynamic.InlinedRequestBody;\n value: unknown;\n filePropertyInfo: FilePropertyInfo;\n }): php.ConstructorField[] {\n switch (body.type) {\n case \"properties\":\n return this.getInlinedRequestBodyPropertyConstructorFields({ parameters: body.value, value });\n case \"referenced\":\n return [this.getReferencedRequestBodyPropertyConstructorField({ body, value })];\n case \"fileUpload\":\n return this.getFileUploadRequestBodyConstructorFields({ filePropertyInfo });\n default:\n assertNever(body);\n }\n }\n\n private getFileUploadRequestBodyConstructorFields({\n filePropertyInfo\n }: {\n filePropertyInfo: FilePropertyInfo;\n }): php.ConstructorField[] {\n return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n }\n\n private getReferencedRequestBodyPropertyConstructorField({\n body,\n value\n }: {\n body: FernIr.dynamic.ReferencedRequestBody;\n value: unknown;\n }): php.ConstructorField {\n return {\n name: this.context.getPropertyName(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 }): php.TypeLiteral {\n switch (body.type) {\n case \"bytes\":\n return this.getBytesBodyRequestArg({ value });\n case \"typeReference\":\n return this.context.dynamicTypeLiteralMapper.convert({ typeReference: body.value, value });\n default:\n assertNever(body);\n }\n }\n\n private getInlinedRequestBodyPropertyConstructorFields({\n parameters,\n value\n }: {\n parameters: FernIr.dynamic.NamedParameter[];\n value: unknown;\n }): php.ConstructorField[] {\n const fields: php.ConstructorField[] = [];\n\n const bodyProperties = this.context.associateByWireValue({\n parameters,\n values: this.context.getRecord(value) ?? {}\n });\n for (const parameter of bodyProperties) {\n fields.push({\n name: this.context.getPropertyName(parameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n });\n }\n\n return fields;\n }\n\n private getPathParameters({\n namedParameters,\n snippet\n }: {\n namedParameters: FernIr.dynamic.NamedParameter[];\n snippet: FernIr.dynamic.EndpointSnippetRequest;\n }): php.ConstructorField[] {\n const args: php.ConstructorField[] = [];\n\n const pathParameters = this.context.associateByWireValue({\n parameters: namedParameters,\n values: snippet.pathParameters ?? {}\n });\n for (const parameter of pathParameters) {\n args.push({\n name: this.context.getPropertyName(parameter.name.name),\n value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n });\n }\n\n return args;\n }\n\n private getMethod({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n return `${endpoint.declaration.fernFilepath.allParts\n .map((val) => this.context.getPropertyName(val))\n .join(\"->\")}->${this.context.getMethodName(endpoint.declaration.name)}`;\n }\n return this.context.getMethodName(endpoint.declaration.name);\n }\n\n private getRootClientClassInstantiation(arguments_: NamedArgument[]): php.ClassInstantiation {\n return php.instantiateClass({\n classReference: php.classReference({\n name: this.context.getRootClientClassName(),\n namespace: this.context.rootNamespace\n }),\n arguments_,\n multiline: true\n });\n }\n}\n"],"mappings":"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","names":["init_process","init_buffer","CLIENT_VAR_NAME","SNIPPET_NAMESPACE","PHP_PREFIX","EndpointSnippetGenerator","context","__publicField","endpoint","request","_a","code","options","snippet","php_exports","writer","args","requestOptions","headers","entries","mappedHeaderNames","header","unmappedEntries","name","value","authArgs","defaultInferredAuthValues","Severity","hasMultiUrlEnvironments","environmentArg","optionArgs","baseUrlArgs","Scope","arg","auth","values","assertNever","message","environment","environmentClassRef","environmentName","className","result","paramName","url","index","defaultName","environmentsConfig","environments","env","firstEnv","baseUrlIds","firstBaseUrlId","firstBaseUrlValue","firstEnvironmentName","baseUrlId","urls","baseUrl","baseUrlArg","classReference","typeLiteral","_b","pathParameters","field","body","_c","_d","inlinePathParameters","pathParameterFields","filePropertyInfo","queryParameterFields","queryParameter","headerFields","requestBodyFields","parameters","fields","bodyProperties","parameter","namedParameters","val","arguments_"]}
@@ -1,2 +0,0 @@
1
- import{b as s}from"./chunk-BN32SYGE.js";import{e as p,f as l,g as u,h as c,l as i}from"./chunk-34WVNBJS.js";l();u();var y=class{constructor({context:e}){p(this,"context");this.context=e}convert(e){if(e.value===null)return this.context.isNullable(e.typeReference)?i.TypeLiteral.null():(this.context.errors.add({severity:s.Critical,message:"Expected non-null value, but got null"}),i.TypeLiteral.nop());if(e.value===void 0)return i.TypeLiteral.nop();switch(e.typeReference.type){case"list":case"set":return this.convertList({list:e.typeReference.value,value:e.value});case"literal":return this.convertLiteral({literalType:e.typeReference.value,value:e.value});case"map":return this.convertMap({map:e.typeReference,value:e.value});case"named":{let t=this.context.resolveNamedType({typeId:e.typeReference.value});return t==null?i.TypeLiteral.nop():this.convertNamed({named:t,value:e.value,as:e.as})}case"optional":return this.convert({typeReference:e.typeReference.value,value:e.value,as:e.as});case"nullable":return this.convert({typeReference:e.typeReference.value,value:e.value,as:e.as});case"primitive":return this.convertPrimitive({primitive:e.typeReference.value,value:e.value,as:e.as});case"unknown":return this.convertUnknown({value:e.value});default:c(e.typeReference)}}convertLiteral({literalType:e,value:t}){switch(e.type){case"boolean":{let n=this.context.getValueAsBoolean({value:t});return n==null?i.TypeLiteral.nop():i.TypeLiteral.boolean(n)}case"string":{let n=this.context.getValueAsString({value:t});return n==null?i.TypeLiteral.nop():i.TypeLiteral.string(n)}default:c(e)}}convertList({list:e,value:t}){return Array.isArray(t)?i.TypeLiteral.list({values:t.map((n,r)=>{this.context.errors.scope({index:r});try{return this.convert({typeReference:e,value:n})}finally{this.context.errors.unscope()}})}):(this.context.errors.add({severity:s.Critical,message:`Expected array but got: ${typeof t}`}),i.TypeLiteral.nop())}convertMap({map:e,value:t}){return typeof t!="object"||t==null?(this.context.errors.add({severity:s.Critical,message:`Expected object but got: ${t==null?"null":typeof t}`}),i.TypeLiteral.nop()):i.TypeLiteral.map({entries:Object.entries(t).map(([n,r])=>{this.context.errors.scope(n);try{return{key:this.convert({typeReference:e.key,value:n,as:"key"}),value:this.convert({typeReference:e.value,value:r})}}finally{this.context.errors.unscope()}})})}convertNamed({named:e,value:t,as:n}){switch(e.type){case"alias":return this.convert({typeReference:e.typeReference,value:t,as:n});case"discriminatedUnion":return this.convertDiscriminatedUnion({discriminatedUnion:e,value:t});case"enum":return this.convertEnum({enum_:e,value:t});case"object":return this.convertObject({object_:e,value:t});case"undiscriminatedUnion":return this.convertUndiscriminatedUnion({undiscriminatedUnion:e,value:t});default:c(e)}}convertDiscriminatedUnion({discriminatedUnion:e,value:t}){let n=this.context.resolveDiscriminatedUnionTypeInstance({discriminatedUnion:e,value:t});if(n==null)return i.TypeLiteral.nop();let r=n.singleDiscriminatedUnionType,a=this.convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:n,unionVariant:r});return a==null?i.TypeLiteral.nop():i.TypeLiteral.reference(i.codeblock(o=>{o.writeNode(i.invokeMethod({on:i.classReference({name:this.context.getClassName(e.declaration.name),namespace:this.context.getTypesNamespace(e.declaration.fernFilepath)}),method:this.context.getMethodName(r.discriminantValue.name),arguments_:this.convertDiscriminatedUnionVariantArgs({discriminatedUnionTypeInstance:n,unionVariant:r,unionProperties:a}),static_:!0}))}))}convertDiscriminatedUnionProperties({discriminatedUnionTypeInstance:e,unionVariant:t}){switch(t.type){case"samePropertiesAsObject":{let n=this.context.resolveNamedType({typeId:t.typeId});if(n==null)return;let r=this.convertNamed({named:n,value:e.value});if(!r.isClass()){this.context.errors.add({severity:s.Critical,message:"Internal error; expected union value to be an object"});return}return r.asClassOrThrow().fields}case"singleProperty":try{this.context.errors.scope(t.discriminantValue.wireValue);let n=this.context.getRecord(e.value);return n==null?[{name:this.context.getPropertyName(t.discriminantValue.name),value:this.convert({typeReference:t.typeReference,value:e.value})}]:[{name:this.context.getPropertyName(t.discriminantValue.name),value:this.convert({typeReference:t.typeReference,value:n[t.discriminantValue.wireValue]})}]}finally{this.context.errors.unscope()}case"noProperties":return[];default:c(t)}}convertDiscriminatedUnionVariantArgs({discriminatedUnionTypeInstance:e,unionVariant:t,unionProperties:n}){let r=this.getBaseFields({discriminatedUnionTypeInstance:e,singleDiscriminatedUnionType:t});if(t.type==="singleProperty"&&this.context.getRecord(e.value)==null&&n.length===1)return[...r,this.convert({typeReference:t.typeReference,value:e.value})];if(t.type==="samePropertiesAsObject"){let a=this.context.resolveNamedType({typeId:t.typeId});return a==null?[]:[...r,i.TypeLiteral.class_({reference:i.classReference({name:this.context.getClassName(a.declaration.name),namespace:this.context.getTypesNamespace(a.declaration.fernFilepath)}),fields:n})]}return r}getBaseFields({discriminatedUnionTypeInstance:e,singleDiscriminatedUnionType:t}){var r,a;return this.context.associateByWireValue({parameters:(r=t.properties)!=null?r:[],values:(a=this.context.getRecord(e.value))!=null?a:{},ignoreMissingParameters:!0}).map(o=>{this.context.errors.scope(o.name.wireValue);try{return this.convert(o)}finally{this.context.errors.unscope()}})}convertObject({object_:e,value:t}){var r;let n=this.context.associateByWireValue({parameters:e.properties,values:(r=this.context.getRecord(t))!=null?r:{}});return i.TypeLiteral.class_({reference:i.classReference({name:this.context.getClassName(e.declaration.name),namespace:this.context.getTypesNamespace(e.declaration.fernFilepath)}),fields:n.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()}})})}convertEnum({enum_:e,value:t}){let n=this.getEnumValueName({enum_:e,value:t});return n==null?i.TypeLiteral.nop():i.TypeLiteral.reference(i.codeblock(r=>{r.writeNode(i.classReference({name:this.context.getClassName(e.declaration.name),namespace:this.context.getTypesNamespace(e.declaration.fernFilepath)})),r.write("::"),r.write(n),r.write("->value")}))}getEnumValueName({enum_:e,value:t}){if(typeof t!="string"){this.context.errors.add({severity:s.Critical,message:`Expected enum value string, got: ${typeof t}`});return}let n=e.values.find(r=>r.wireValue===t);if(n==null){this.context.errors.add({severity:s.Critical,message:`An enum value named "${t}" does not exist in this context`});return}return this.context.getClassName(n.name)}convertUndiscriminatedUnion({undiscriminatedUnion:e,value:t}){let n=this.findMatchingUndiscriminatedUnionType({undiscriminatedUnion:e,value:t});return n==null?i.TypeLiteral.nop():n}findMatchingUndiscriminatedUnionType({undiscriminatedUnion:e,value:t}){for(let n of e.types)try{return this.convert({typeReference:n,value:t})}catch(r){continue}this.context.errors.add({severity:s.Critical,message:`None of the types in the undiscriminated union matched the given "${typeof t}" value`})}convertUnknown({value:e}){return i.TypeLiteral.unknown(e)}convertPrimitive({primitive:e,value:t,as:n}){switch(e){case"INTEGER":case"LONG":case"UINT":case"UINT_64":{let r=this.getValueAsNumber({value:t,as:n});return r==null?i.TypeLiteral.nop():i.TypeLiteral.number(r)}case"FLOAT":case"DOUBLE":{let r=this.getValueAsNumber({value:t});return r==null?i.TypeLiteral.nop():i.TypeLiteral.float(r)}case"BOOLEAN":{let r=this.getValueAsBoolean({value:t,as:n});return r==null?i.TypeLiteral.nop():i.TypeLiteral.boolean(r)}case"DATE":case"DATE_TIME":{let r=this.context.getValueAsString({value:t});return r==null?i.TypeLiteral.nop():i.TypeLiteral.datetime(r)}case"BASE_64":case"UUID":case"BIG_INTEGER":case"STRING":{let r=this.context.getValueAsString({value:t});return r==null?i.TypeLiteral.nop():i.TypeLiteral.string(r)}default:c(e)}}getValueAsNumber({value:e,as:t}){let n=t==="key"&&typeof e=="string"?Number(e):e;return this.context.getValueAsNumber({value:n})}getValueAsBoolean({value:e,as:t}){let n=t==="key"?typeof e=="string"?e==="true":e==="false"?!1:e:e;return this.context.getValueAsBoolean({value:n})}};export{y as a};
2
- //# sourceMappingURL=chunk-Q7QB5SA5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/context/DynamicTypeLiteralMapper.ts"],"sourcesContent":["import { DiscriminatedUnionTypeInstance, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { php } from \"@fern-api/php-codegen\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n interface Args {\n typeReference: FernIr.dynamic.TypeReference;\n value: unknown;\n as?: ConvertedAs;\n }\n\n // Identifies what the type is being converted as, which sometimes influences how\n // the type is instantiated.\n type ConvertedAs = \"key\";\n}\n\nexport class DynamicTypeLiteralMapper {\n private context: DynamicSnippetsGeneratorContext;\n\n constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n this.context = context;\n }\n\n public convert(args: DynamicTypeLiteralMapper.Args): php.TypeLiteral {\n // eslint-disable-next-line eqeqeq\n if (args.value === null) {\n if (this.context.isNullable(args.typeReference)) {\n return php.TypeLiteral.null();\n }\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"Expected non-null value, but got null\"\n });\n return php.TypeLiteral.nop();\n }\n if (args.value === undefined) {\n return php.TypeLiteral.nop();\n }\n switch (args.typeReference.type) {\n case \"list\":\n case \"set\":\n return this.convertList({ list: args.typeReference.value, value: args.value });\n case \"literal\":\n return this.convertLiteral({ literalType: args.typeReference.value, value: args.value });\n case \"map\":\n return this.convertMap({ map: args.typeReference, value: args.value });\n case \"named\": {\n const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n if (named == null) {\n return php.TypeLiteral.nop();\n }\n return this.convertNamed({ named, value: args.value, as: args.as });\n }\n case \"optional\":\n return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n case \"nullable\":\n return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n case \"primitive\":\n return this.convertPrimitive({ primitive: args.typeReference.value, value: args.value, as: args.as });\n case \"unknown\":\n return this.convertUnknown({ value: args.value });\n default:\n assertNever(args.typeReference);\n }\n }\n\n private convertLiteral({\n literalType,\n value\n }: {\n literalType: FernIr.dynamic.LiteralType;\n value: unknown;\n }): php.TypeLiteral {\n switch (literalType.type) {\n case \"boolean\": {\n const bool = this.context.getValueAsBoolean({ value });\n if (bool == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.boolean(bool);\n }\n case \"string\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.string(str);\n }\n default:\n assertNever(literalType);\n }\n }\n\n private convertList({ list, value }: { list: FernIr.dynamic.TypeReference; value: unknown }): php.TypeLiteral {\n if (!Array.isArray(value)) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected array but got: ${typeof value}`\n });\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.list({\n values: value.map((v, index) => {\n this.context.errors.scope({ index });\n try {\n return this.convert({ typeReference: list, value: v });\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertMap({ map, value }: { map: FernIr.dynamic.MapType; value: unknown }): php.TypeLiteral {\n if (typeof value !== \"object\" || value == null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n });\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.map({\n entries: Object.entries(value).map(([key, value]) => {\n this.context.errors.scope(key);\n try {\n return {\n key: this.convert({ typeReference: map.key, value: key, as: \"key\" }),\n value: this.convert({ typeReference: map.value, value })\n };\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertNamed({\n named,\n value,\n as\n }: {\n named: FernIr.dynamic.NamedType;\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): php.TypeLiteral {\n switch (named.type) {\n case \"alias\": {\n return this.convert({ typeReference: named.typeReference, value, as });\n }\n case \"discriminatedUnion\":\n return this.convertDiscriminatedUnion({\n discriminatedUnion: named,\n value\n });\n case \"enum\":\n return this.convertEnum({ enum_: named, value });\n case \"object\":\n return this.convertObject({ object_: named, value });\n case \"undiscriminatedUnion\":\n return this.convertUndiscriminatedUnion({ undiscriminatedUnion: named, value });\n default:\n assertNever(named);\n }\n }\n\n private convertDiscriminatedUnion({\n discriminatedUnion,\n value\n }: {\n discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n value: unknown;\n }): php.TypeLiteral {\n const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n discriminatedUnion,\n value\n });\n if (discriminatedUnionTypeInstance == null) {\n return php.TypeLiteral.nop();\n }\n const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n const unionProperties = this.convertDiscriminatedUnionProperties({\n discriminatedUnionTypeInstance,\n unionVariant\n });\n if (unionProperties == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.reference(\n php.codeblock((writer) => {\n writer.writeNode(\n php.invokeMethod({\n on: php.classReference({\n name: this.context.getClassName(discriminatedUnion.declaration.name),\n namespace: this.context.getTypesNamespace(discriminatedUnion.declaration.fernFilepath)\n }),\n method: this.context.getMethodName(unionVariant.discriminantValue.name),\n arguments_: this.convertDiscriminatedUnionVariantArgs({\n discriminatedUnionTypeInstance,\n unionVariant,\n unionProperties\n }),\n static_: true\n })\n );\n })\n );\n }\n\n private convertDiscriminatedUnionProperties({\n discriminatedUnionTypeInstance,\n unionVariant\n }: {\n discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n unionVariant: FernIr.dynamic.SingleDiscriminatedUnionType;\n }): php.ConstructorField[] | undefined {\n switch (unionVariant.type) {\n case \"samePropertiesAsObject\": {\n const named = this.context.resolveNamedType({\n typeId: unionVariant.typeId\n });\n if (named == null) {\n return undefined;\n }\n const converted = this.convertNamed({ named, value: discriminatedUnionTypeInstance.value });\n if (!converted.isClass()) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: \"Internal error; expected union value to be an object\"\n });\n return undefined;\n }\n const object_ = converted.asClassOrThrow();\n return object_.fields;\n }\n case \"singleProperty\": {\n try {\n this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n if (record == null) {\n return [\n {\n name: this.context.getPropertyName(unionVariant.discriminantValue.name),\n value: this.convert({\n typeReference: unionVariant.typeReference,\n value: discriminatedUnionTypeInstance.value\n })\n }\n ];\n }\n return [\n {\n name: this.context.getPropertyName(unionVariant.discriminantValue.name),\n value: this.convert({\n typeReference: unionVariant.typeReference,\n value: record[unionVariant.discriminantValue.wireValue]\n })\n }\n ];\n } finally {\n this.context.errors.unscope();\n }\n }\n case \"noProperties\":\n return [];\n default:\n assertNever(unionVariant);\n }\n }\n\n private convertDiscriminatedUnionVariantArgs({\n discriminatedUnionTypeInstance,\n unionVariant,\n unionProperties\n }: {\n discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n unionVariant: FernIr.dynamic.SingleDiscriminatedUnionType;\n unionProperties: php.ConstructorField[];\n }): php.AstNode[] {\n const baseFields = this.getBaseFields({\n discriminatedUnionTypeInstance,\n singleDiscriminatedUnionType: unionVariant\n });\n if (unionVariant.type === \"singleProperty\") {\n const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n if (record == null && unionProperties.length === 1) {\n // The union is a single value without any base properties, e.g.\n return [\n ...baseFields,\n this.convert({\n typeReference: unionVariant.typeReference,\n value: discriminatedUnionTypeInstance.value\n })\n ];\n }\n }\n if (unionVariant.type === \"samePropertiesAsObject\") {\n const named = this.context.resolveNamedType({\n typeId: unionVariant.typeId\n });\n if (named == null) {\n return [];\n }\n return [\n ...baseFields,\n php.TypeLiteral.class_({\n reference: php.classReference({\n name: this.context.getClassName(named.declaration.name),\n namespace: this.context.getTypesNamespace(named.declaration.fernFilepath)\n }),\n fields: unionProperties\n })\n ];\n }\n return baseFields;\n }\n\n private getBaseFields({\n discriminatedUnionTypeInstance,\n singleDiscriminatedUnionType\n }: {\n discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n singleDiscriminatedUnionType: FernIr.dynamic.SingleDiscriminatedUnionType;\n }): php.AstNode[] {\n const properties = this.context.associateByWireValue({\n parameters: singleDiscriminatedUnionType.properties ?? [],\n values: this.context.getRecord(discriminatedUnionTypeInstance.value) ?? {},\n\n // We're only selecting the base properties here. The rest of the properties\n // are handled by the union variant.\n ignoreMissingParameters: true\n });\n return properties.map((property) => {\n this.context.errors.scope(property.name.wireValue);\n try {\n return this.convert(property);\n } finally {\n this.context.errors.unscope();\n }\n });\n }\n\n private convertObject({ object_, value }: { object_: FernIr.dynamic.ObjectType; value: unknown }): php.TypeLiteral {\n const properties = this.context.associateByWireValue({\n parameters: object_.properties,\n values: this.context.getRecord(value) ?? {}\n });\n return php.TypeLiteral.class_({\n reference: php.classReference({\n name: this.context.getClassName(object_.declaration.name),\n namespace: this.context.getTypesNamespace(object_.declaration.fernFilepath)\n }),\n fields: properties.map((property) => {\n this.context.errors.scope(property.name.wireValue);\n try {\n return {\n name: this.context.getPropertyName(property.name.name),\n value: this.convert(property)\n };\n } finally {\n this.context.errors.unscope();\n }\n })\n });\n }\n\n private convertEnum({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): php.TypeLiteral {\n const name = this.getEnumValueName({ enum_, value });\n if (name == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.reference(\n php.codeblock((writer) => {\n writer.writeNode(\n php.classReference({\n name: this.context.getClassName(enum_.declaration.name),\n namespace: this.context.getTypesNamespace(enum_.declaration.fernFilepath)\n })\n );\n writer.write(\"::\");\n writer.write(name);\n writer.write(\"->value\");\n })\n );\n }\n\n private getEnumValueName({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): string | undefined {\n if (typeof value !== \"string\") {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `Expected enum value string, got: ${typeof value}`\n });\n return undefined;\n }\n const enumValue = enum_.values.find((v) => v.wireValue === value);\n if (enumValue == null) {\n this.context.errors.add({\n severity: Severity.Critical,\n message: `An enum value named \"${value}\" does not exist in this context`\n });\n return undefined;\n }\n return this.context.getClassName(enumValue.name);\n }\n\n private convertUndiscriminatedUnion({\n undiscriminatedUnion,\n value\n }: {\n undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n value: unknown;\n }): php.TypeLiteral {\n const result = this.findMatchingUndiscriminatedUnionType({\n undiscriminatedUnion,\n value\n });\n if (result == null) {\n return php.TypeLiteral.nop();\n }\n return result;\n }\n\n private findMatchingUndiscriminatedUnionType({\n undiscriminatedUnion,\n value\n }: {\n undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n value: unknown;\n }): php.TypeLiteral | undefined {\n for (const typeReference of undiscriminatedUnion.types) {\n try {\n return this.convert({ typeReference, value });\n } catch (e) {\n continue;\n }\n }\n this.context.errors.add({\n severity: Severity.Critical,\n message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value`\n });\n return undefined;\n }\n\n private convertUnknown({ value }: { value: unknown }): php.TypeLiteral {\n return php.TypeLiteral.unknown(value);\n }\n\n private convertPrimitive({\n primitive,\n value,\n as\n }: {\n primitive: FernIr.dynamic.PrimitiveTypeV1;\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): php.TypeLiteral {\n switch (primitive) {\n case \"INTEGER\":\n case \"LONG\":\n case \"UINT\":\n case \"UINT_64\": {\n const num = this.getValueAsNumber({ value, as });\n if (num == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.number(num);\n }\n case \"FLOAT\":\n case \"DOUBLE\": {\n const num = this.getValueAsNumber({ value });\n if (num == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.float(num);\n }\n case \"BOOLEAN\": {\n const bool = this.getValueAsBoolean({ value, as });\n if (bool == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.boolean(bool);\n }\n case \"DATE\":\n case \"DATE_TIME\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.datetime(str);\n }\n case \"BASE_64\":\n case \"UUID\":\n case \"BIG_INTEGER\":\n case \"STRING\": {\n const str = this.context.getValueAsString({ value });\n if (str == null) {\n return php.TypeLiteral.nop();\n }\n return php.TypeLiteral.string(str);\n }\n default:\n assertNever(primitive);\n }\n }\n\n private getValueAsNumber({\n value,\n as\n }: {\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): number | undefined {\n const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n return this.context.getValueAsNumber({ value: num });\n }\n\n private getValueAsBoolean({\n value,\n as\n }: {\n value: unknown;\n as?: DynamicTypeLiteralMapper.ConvertedAs;\n }): boolean | undefined {\n const bool =\n as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : value === \"false\" ? false : value) : value;\n return this.context.getValueAsBoolean({ value: bool });\n }\n}\n"],"mappings":"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","names":["init_process","init_buffer","DynamicTypeLiteralMapper","context","__publicField","args","php_exports","Severity","named","assertNever","literalType","value","bool","str","list","v","index","map","key","as","discriminatedUnion","discriminatedUnionTypeInstance","unionVariant","unionProperties","writer","converted","record","baseFields","singleDiscriminatedUnionType","_a","_b","property","object_","properties","enum_","name","enumValue","undiscriminatedUnion","result","typeReference","e","primitive","num"]}
@@ -1,2 +0,0 @@
1
- import{a as o}from"./chunk-P7HYTUQU.js";import{a as i}from"./chunk-MZ7AWQF7.js";import{a as p}from"./chunk-BN32SYGE.js";import{f as t,g as r}from"./chunk-34WVNBJS.js";t();r();var a=class extends p{constructor({ir:e,config:n}){super(new i({ir:e,config:n}))}async generate(e){return super.generate(e)}generateSync(e){return super.generateSync(e)}async generateSnippetAst(e,n){return await super.generateSnippetAst(e,n)}createSnippetGenerator(e){return new o({context:e})}};export{a};
2
- //# sourceMappingURL=chunk-U6JJRNQH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/DynamicSnippetsGenerator.ts"],"sourcesContent":["import {\n AbstractAstNode,\n AbstractDynamicSnippetsGenerator,\n FernGeneratorExec,\n Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n DynamicSnippetsGeneratorContext,\n EndpointSnippetGenerator\n> {\n constructor({\n ir,\n config\n }: {\n ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n config: FernGeneratorExec.GeneratorConfig;\n }) {\n super(new DynamicSnippetsGeneratorContext({ ir, config }));\n }\n\n public async generate(\n request: FernIr.dynamic.EndpointSnippetRequest\n ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n return super.generate(request);\n }\n\n public generateSync(request: FernIr.dynamic.EndpointSnippetRequest): FernIr.dynamic.EndpointSnippetResponse {\n return super.generateSync(request);\n }\n\n public async generateSnippetAst(\n request: FernIr.dynamic.EndpointSnippetRequest,\n options?: Options\n ): Promise<AbstractAstNode> {\n return await super.generateSnippetAst(request, options);\n }\n\n protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n return new EndpointSnippetGenerator({ context });\n }\n}\n"],"mappings":"uKAAAA,IAAAC,IAUO,IAAMC,EAAN,cAAuCC,CAG5C,CACE,YAAY,CACR,GAAAC,EACA,OAAAC,CACJ,EAGG,CACC,MAAM,IAAIC,EAAgC,CAAE,GAAAF,EAAI,OAAAC,CAAO,CAAC,CAAC,CAC7D,CAEA,MAAa,SACTE,EAC+C,CAC/C,OAAO,MAAM,SAASA,CAAO,CACjC,CAEO,aAAaA,EAAwF,CACxG,OAAO,MAAM,aAAaA,CAAO,CACrC,CAEA,MAAa,mBACTA,EACAC,EACwB,CACxB,OAAO,MAAM,MAAM,mBAAmBD,EAASC,CAAO,CAC1D,CAEU,uBAAuBC,EAAoE,CACjG,OAAO,IAAIC,EAAyB,CAAE,QAAAD,CAAQ,CAAC,CACnD,CACJ","names":["init_process","init_buffer","DynamicSnippetsGenerator","AbstractDynamicSnippetsGenerator","ir","config","DynamicSnippetsGeneratorContext","request","options","context","EndpointSnippetGenerator"]}
@@ -1,4 +0,0 @@
1
- import '@fern-api/browser-compatible-base-generator';
2
- import '@fern-api/dynamic-ir-sdk';
3
- import '@fern-api/php-codegen';
4
- export { D as DynamicSnippetsGeneratorContext } from '../DynamicSnippetsGeneratorContext-CwkDTYOI.js';
@@ -1,2 +0,0 @@
1
- import{a}from"../chunk-MZ7AWQF7.js";import"../chunk-Q7QB5SA5.js";import"../chunk-BN32SYGE.js";import"../chunk-F7LTKJMT.js";import"../chunk-34WVNBJS.js";export{a as DynamicSnippetsGeneratorContext};
2
- //# sourceMappingURL=DynamicSnippetsGeneratorContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,4 +0,0 @@
1
- import '@fern-api/dynamic-ir-sdk';
2
- import '@fern-api/php-codegen';
3
- export { a as DynamicTypeLiteralMapper } from '../DynamicSnippetsGeneratorContext-CwkDTYOI.js';
4
- import '@fern-api/browser-compatible-base-generator';
@@ -1,2 +0,0 @@
1
- import{a}from"../chunk-Q7QB5SA5.js";import"../chunk-BN32SYGE.js";import"../chunk-34WVNBJS.js";export{a as DynamicTypeLiteralMapper};
2
- //# sourceMappingURL=DynamicTypeLiteralMapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,4 +0,0 @@
1
- import '@fern-api/dynamic-ir-sdk';
2
- import '@fern-api/php-codegen';
3
- export { F as FilePropertyInfo, b as FilePropertyMapper } from '../DynamicSnippetsGeneratorContext-CwkDTYOI.js';
4
- import '@fern-api/browser-compatible-base-generator';
@@ -1,2 +0,0 @@
1
- import{a}from"../chunk-F7LTKJMT.js";import"../chunk-34WVNBJS.js";export{a as FilePropertyMapper};
2
- //# sourceMappingURL=FilePropertyMapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/esm/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- export { DynamicSnippetsGenerator } from './DynamicSnippetsGenerator.js';
2
- export { EndpointSnippetGenerator } from './EndpointSnippetGenerator.js';
3
- import '@fern-api/browser-compatible-base-generator';
4
- import '@fern-api/dynamic-ir-sdk';
5
- import './DynamicSnippetsGeneratorContext-CwkDTYOI.js';
6
- import '@fern-api/php-codegen';
package/esm/index.js DELETED
@@ -1,2 +0,0 @@
1
- import{a as o}from"./chunk-U6JJRNQH.js";import{a as n}from"./chunk-P7HYTUQU.js";import"./chunk-MZ7AWQF7.js";import"./chunk-Q7QB5SA5.js";import"./chunk-BN32SYGE.js";import"./chunk-F7LTKJMT.js";import{f as e,g as r}from"./chunk-34WVNBJS.js";e();r();export{o as DynamicSnippetsGenerator,n as EndpointSnippetGenerator};
2
- //# sourceMappingURL=index.js.map
package/esm/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export { DynamicSnippetsGenerator } from \"./DynamicSnippetsGenerator\";\nexport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator\";\n"],"mappings":"+OAAAA,IAAAC","names":["init_process","init_buffer"]}