3.30.0

(feat): Add offsetSemantics flag, which changes how the step attribute in x-fern-pagination is interpreted. When offsetSemantics is item-index (the default), offset is understood as an item index that increases by the number of entities fetched. When offsetSemantics is page-index, offset is understood as a page index that increases by 1 each time.


3.29.2

(fix): Improve SDK generation performance.

3.29.1

(fix): When generating hasNextPage, use Math.Floor to ensure an integer comparison against the number of entities.


3.29.0

(feat): Add parameterNaming configuration option to control how parameter names are generated in the SDK. The available options are:

  • originalName: Use the original name from the OpenAPI spec.
  • wireValue: Use the wire value from the OpenAPI spec, falling back to the original name if not present.
  • camelCase: Convert the name to camelCase.
  • snakeCase: Convert the name to snake_case.
  • default: Use the default naming strategy.

3.28.11

(fix): Do not generate a snippet-templates.json file in the generated TypeScript SDK.

3.28.12

(fix): Include more files and folders in .npmignore:

  • .mock
  • .fern
  • dist
  • scripts
  • jest.config.*
  • vitest.config.*

(fix): Only generate .npmignore when useLegacyExports: true. When useLegacyExports: false, we generate a package.json with "files" field which makes .npmignore redundant.


3.28.10

(fix): Set Accept header for JSON (application/json), text (text/plain), and other (*/*) response types. This ensures that the Accept header is set consistently across runtimes. Unlike all other runtimes, Cloudflare Workers and Vercel Edge Runtime do not set a default Accept header in their fetch implementations.

3.28.9

(fix): Fix Error._visit to pass the correct type (core.Fetcher.Error) to the _other callback.

3.28.8

(fix): Clean up imports for requestWithRetries.test.ts.


3.28.7

(fix): Fix circular type alias errors (TS2456) in undiscriminated unions containing self-recursive Record types where the value is a union of itself with null and/or undefined.



3.28.5

(fix): Fix issue where logs were logged even when the respective log level was disabled.

(chore): Add tests for logging and the fetcher’s redaction functionality.

(chore): Improve unit test performance and refactor code to reduce duplication.

3.28.4

(fix): Fix a compilation error when a websocket channel has no send or receive messages.

3.28.3

(fix): Fix local GitHub generation to match remote generation.

3.28.2

(fix): Fix inconsistent path parameter casing in the WebSocket connect options. The casing now follows the same rules as other HTTP path parameters:

  • retainOriginalCasing: true: use the original casing from the OpenAPI spec, regardless of the noSerdeLayer setting.
  • noSerdeLayer: true: use the original casing from the OpenAPI spec.
  • noSerdeLayer: false: use camelCase for path parameters.

3.28.1

(fix): Always use vitest.config.mts for consistency across all generated SDKs. This ensures Vitest v3 can load the config as ESM in both CommonJS and ESM packages.

3.27.0

(feat): Add support for variables in wire tests.

3.26.0

(feat): Include "dependencies": {} in package.json when generating a TypeScript SDK without dependencies.


3.28.0

(feat): Added Generation Metadata file to output.

3.25.0

(feat): Add support for logging to the generated SDK. Users can configure the logger by passing in a logging object to the client options.

1import { FooClient, logging } from "foo";
2
3const client = new FooClient({
4 logging: {
5 level: logging.LogLevel.Info, // LogLevel.Info is the default
6 logger: new logging.ConsoleLogger(), // ConsoleLogger is the default
7 silent: false, // true is the default, set to false to enable logging
8 }
9});

The logging object can have the following properties:

  • level: The log level to use. Defaults to logging.LogLevel.Info.
  • logger: The logger to use. Defaults to logging.ConsoleLogger.
  • silent: Whether to silence the logger. Defaults to true.

The level property can be one of the following values:

  • logging.LogLevel.Debug
  • logging.LogLevel.Info
  • logging.LogLevel.Warn
  • logging.LogLevel.Error

To provide a custom logger, users can pass in a custom logger implementation that implements the logging.ILogger interface.


3.24.0

(feat): Add support for forward-compatible enums. To enable forward-compatible enums, add the following configuration to your generators.yml file:

1# In generators.yml
2groups:
3 generators:
4 - name: fernapi/fern-typescript-sdk
5 config:
6 enableForwardCompatibleEnums: true

3.23.0

(feat): Add support for bytes download responses.

3.22.0

(feat): Add support for oxfmt as the formatter. This is a beta feature and not officially supported yet.

3.21.0

(feat): Add support for oxlint as the linter. This is a beta feature and not officially supported yet.

3.20.0

(feat): Implement base and extend properties in discriminated union examples.

3.19.1

(fix): mergeHeaders() and mergeOnlyDefinedHeaders() are now case-insensitive.

3.19.0

(feat): Add support for application/x-www-form-urlencoded request bodies.

3.18.0

(feat): Users can now pass in a custom fetch function to the client options.