3.70.3
(fix): Honor the auth scheme prefix for HeaderAuthScheme when generating HeaderAuthProvider.
Previously, the generator emitted the raw header value into the configured header (e.g.
Authorization) and dropped any prefix declared in the API definition (e.g. Bearer).
The provider now emits a HEADER_PREFIX constant and prepends it to the header value,
matching the behavior of the Java, Python, Go, C#, PHP, Rust, and Ruby v2 generators.
3.70.2
(chore): Bump the typescript-sdk-validator container’s node:20-slim base image
to node:22.22-bookworm-slim. Node 20 went EOL March 24, 2026, and the
container was carrying the Node 20 EOL alert plus CVE-2025-55130
(Node 20 permission-model symlink bypass).
3.70.1
(fix): Update @types/node from ^18.19.70 to ^20.0.0 in generated SDKs to
satisfy vitest 4.x peer dependency requirements. Previously, npm install
failed with ERESOLVE because vitest 4.x requires
@types/node@^20.0.0 || ^22.0.0 || >=24.0.0.
3.70.0
(internal): Emit .fern/verify.sh (mode 0755) alongside .fern/metadata.json. The script
runs <packageManager> install, <packageManager> build, and
<packageManager> test against the generated SDK, with the package manager
matching the value pinned in the project’s package.json#packageManager
field (pnpm or yarn). The script is the contract executed by the paired
fernapi/fern-typescript-sdk-validator Docker image, which is published
alongside fernapi/fern-typescript-sdk with the same version tag. Customers
that .fernignore .fern/verify.sh retain their version on regeneration.
3.69.3
(chore): Apply latest Debian security updates to the TypeScript SDK CLI container
(node:24.14-slim) at build time so OS-level package CVEs are picked up.
3.69.2
(chore): Patch 9 transitive npm dependency vulnerabilities flagged by Grype in the
typescript-sdk generator container by upgrading the bundled npm to
11.13.0, the bundled pnpm to 10.33.3, and replacing npm’s vendored
ip-address@10.1.0 with the patched 10.1.1 release. Addresses
GHSA-7r86-cg39-jmmj, GHSA-23c5-xmqv-rm74 (minimatch), GHSA-c2c7-rcm5-vvqj,
GHSA-3v7f-55p6-f55p (picomatch), GHSA-9ppj-qmqm-q256, GHSA-qffp-2rhf-9h96
(tar), GHSA-f886-m6hf-6m8v (brace-expansion), and GHSA-v2v4-37r5-5v8g
(ip-address).
3.69.1
(chore): Update oxfmt from 0.42.0 to 0.48.0, oxlint from 1.57.0 to 1.63.0, and oxlint-tsgolint from 0.17.4 to 0.22.1.
3.69.0
(feat): Add auth option to BaseClientOptions for custom auth handling. Accepts an
undiscriminated union of a function returning auth headers, an AuthProvider
implementation, or the existing auth credential options. This allows users with
alwaysSendAuth: true to handle auth via custom fetchers without the built-in
auth provider throwing on missing credentials.
3.68.1
(fix): Fix serialization schema for map types with nullable values. Previously, the
schema generator stripped nullable wrappers from map value types, causing a
type mismatch between the API types (which correctly included | null) and
the serialization layer (which omitted .nullable() on the value schema).
3.68.0
(feat): Add alwaysSendAuth config option that forces the generated SDK to include
auth headers on all endpoints, even those marked with auth: false in the
API definition. This is useful when using the same API definition for both
server (where auth is handled by a gateway) and client SDK generation.
3.67.0
(feat): Add retryStatusCodes generator config option with legacy and recommended modes.
legacy (default) preserves current behavior (retries 408, 429, and all 5xx).
recommended retries only 408, 429, 502, 503, and 504, avoiding idempotency
issues with non-transient server errors like 500.
3.66.6
(fix): Fix TS2322 type error in generated serialization files when enableForwardCompatibleEnums is enabled.
The enum schema builder now uses forwardCompatibleEnum_ which correctly widens the parsed type to string,
matching the widened API type.
3.66.5
(fix): Fix generated wire tests for SSE endpoints with protocol-discriminated unions.
The expected event assertion no longer wraps the deserialized data in a duplicate
discriminant key (which produced TS2783 “specified more than once” errors under
strict typecheck). When the example puts the discriminant inside the data payload
and leaves the SSE event line empty, the discriminant is now promoted onto the
event line before being stripped from the data, so the mocked wire body matches
what the runtime SDK produces.
3.66.4
(fix): Fix undiscriminated-union query parameters so the list variant is sent as
repeated keys (?key=a&key=b) instead of a URL-encoded JSON blob. Mirrors
the Go fix in #15526.
3.66.3
(fix): Fix dynamic snippets to default inlinePathParameters and inlineFileProperties
to true, matching the TypeScript SDK generator’s defaults. This fixes a mismatch
where docs snippets showed positional string arguments for path parameters instead
of the correct object-wrapped syntax.
3.66.2
(chore): Bump @fern-api/generator-cli to 0.9.16, which bundles the autoversion
pipeline’s private workspace deps (@fern-api/logging-execa,
@fern-api/task-context, @fern-api/cli-ai) into the published dist/api.js
so consumers no longer hit ERR_MODULE_NOT_FOUND on
logging-execa/src/createLoggingExecutable.js under Vite/Vitest.
3.66.1
(fix): Fix JsonError and ParseError constructors to set this.name and use
new.target.prototype so that error names survive esbuild minification.
3.66.0
(feat): Use auth scheme placeholder values in SDK client snippets when configured via
placeholder field on auth schemes.
3.65.5
(fix): Stop emitting the legacy queryParameters object at endpoint call sites. Query parameters
are now passed exclusively via queryString (produced by core.url.queryBuilder()).
The runtime Fetcher.Args.queryParameters field is retained (marked deprecated) for
custom-fetcher back-compat, and both queryParameters and queryString receive equivalent
log metadata and redaction of sensitive keys.
3.65.4
(chore): Bump @fern-api/generator-cli to 0.9.13, which fixes the publish of 0.9.12
(autoversion pipeline + @fern-api/replay 0.12.0) by marking @boundaryml/baml
as external in the generator-cli CLI bundle so esbuild no longer tries to
statically resolve baml’s platform-specific native bindings.
3.65.3
(chore): Bump @fern-api/generator-cli to 0.9.12, which ships the FER-9980 autoversion
pipeline (AutoVersionStep runs between the [fern-generated] commit and replay
apply, diffing pure generator output across runs to drive a semver bump and
changelog entry via FAI) and pins @fern-api/replay to 0.12.0.