[pull] main from fern-api:main#780
Merged
Merged
Conversation
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…#16335) * fix(go): generate compiling dynamic snippets for bytes request bodies * chore: re-trigger CI (test-ete flaked on TS registry lookup)
…-body handling (#16403) * fix(rust): use camelCase wire names in error field parsing and handle empty response bodies - ErrorGenerator.ts: getStatusCodeFields now carries a wireName (camelCase) alongside each field's snake_case Rust name; buildSuccessConstruction and buildDynamicFieldAssignments use wireName for parsed.get() lookups so the generated code looks up "authType", "resourceId", "resourceType", etc. instead of the IR snake_case names that the API never sends - http_client.rs (asIs template): parse_response and parse_response_raw now attempt serde_json::from_value(Value::Null) on an empty body rather than immediately returning Err, so endpoints returning 204 No Content or no body (e.g. HEAD) work correctly for unit-typed responses - Updated all 9 ErrorGenerator snapshots to reflect the corrected wire keys Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(rust): derive error fields from IR type definition instead of hardcoded status-code map resolveErrorFields() now reads errorDeclaration.type from the IR: if it resolves to an object type, fields (name, wireName, type) are extracted directly from the type's properties using getWireValue/snakeSafe, so the generated error parsing code uses whatever field names and types the spec author actually defined. Falls back to the existing hardcoded status-code map when no named object type is present, so APIs without structured error types continue to work unchanged. Also removes the name === "retry_after_seconds" string comparison in favour of an extractionKind: "string" | "u64" discriminant derived from the TypeReference, and consolidates all five callers (buildSuccessConstruction, buildFallbackConstruction, buildDynamicFieldAssignments, buildMultiErrorMatchArm, buildErrorTypeMatchExpression) onto the single resolveErrorFields() path. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(rust): resolve versions.yml conflict, add unreleased changelog --------- Co-authored-by: Naman Anand <info@buildwithfern.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…rovenance (#16404) * fix(cli): populate repository.url in generated npm package.json for provenance Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix: add repoUrl to test ResolvedOutputConfig objects Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: cade <info@buildwithfern.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
…120] (#16336) * fix(swift): emit .rawValue for nullable enum query parameters When a query parameter is a string-backed enum wrapped in Nullable<>, the generator emitted .string($0) instead of .string($0.rawValue), causing Swift compilation errors. This affected both Nullable<Enum> (non-optional) and Nullable<Enum>? (optional) patterns. The fix unwraps the Nullable wrapper before checking resolvesToAnEnumWithRawValues, and adds the missing enum check in the non-optional nullable code path. Fixes FER-11120 Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * ci: re-trigger CI (flaky test-ete timeout) Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * Automated update of seed files * Remove nullable-optional from allowed failures --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: kafkas <kafkas@users.noreply.github.com> Co-authored-by: Anar Kafkas <anarkafkas@gmail.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
…ation, nested glue) (#16385) * fix: three codegen bugs in CLI generator (multipart dep, mod.rs registration, nested glue) Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(cli-generator): qualify nested SDK sub-clients through api::resources The nested-glue fix emitted nested sub-client literals at `api::<group>::<SubClient>`, but the leaf clients live under `api::resources::<group>` and are not re-exported at the crate's `api` root — only the top-level clients are. This caused E0433 'cannot find <group> in api' build failures for SDKs with 2+ level nested groups. Qualify nested clients through `api::resources::`; top-level clients are unchanged (they resolve via the api-root re-export). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: cade <info@buildwithfern.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Cade Sarkin <cadesarkin@Cades-MacBook-Pro.local> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…error format strings (#16418) - Wrap non-optional IR-derived error fields in Option to match constructor code that assigns None for missing fields (prevents type mismatch) - Also handle nullable container type to avoid double Option wrapping - Fix thiserror format strings: {{message}} -> {message} so field values are actually interpolated - Update all test snapshots and seed fixtures
…16411) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )