2.8.1
(fix): Fix dynamic snippet generator to emit required global headers as named
constructor arguments instead of inside the options array.
2.8.0
(feat): Add retryStatusCodes configuration option (legacy | recommended). The default
legacy mode preserves existing behavior (retries 408, 429, and all >= 500). The
recommended mode only retries 408, 429, 502, 503, 504 (excludes 500 Internal
Server Error to avoid retrying non-idempotent failures).
2.7.0
(feat): 支持 x-fern-default 作为生成的 PHP SDK 中参数的回退值。
当 header、查询参数或路径参数在 IR 中具有 clientDefault 值时,
生成的 PHP SDK 使该参数可选,并自动应用默认值。
2.6.0
(feat): 当通过身份验证方案的 placeholder 字段配置时,
在 README 代码片段中使用身份验证方案占位符值。
2.5.2
(fix): 修复动态代码片段生成器,当代码片段请求对需要 bearer、OAuth、basic 或 header
身份验证的端点省略身份验证时,发出占位符身份验证值。之前生成的构造函数调用
缺少必需的身份验证参数,导致 phpstan 失败。
2.5.1
(chore): 将 @fern-api/generator-cli 升级到 0.9.11。GitHub 管道步骤现在通过
GitHub REST API 创建签名提交(匹配 fiddle 的传统 InMemoryGitRepo 推送路径),
在启用重放的组织上恢复已验证的 fern-api[bot] 提交。
2.5.0
(feat): 添加 offsetSemantics 配置选项。设置为 "page-index" 时,偏移分页每页递增 1,
而不是按返回的项目数递增("item-index",默认值)。
2.4.4
(fix): 修复具有多值数组查询参数的端点的线路测试验证。
2.4.3
(chore): 通过 Sentry 为生成器运行时添加崩溃报告,并使用新的共享 GeneratorError
分类法对抛出的错误进行分类,以便将面向用户的故障(配置、验证、身份验证、网络、环境)
与内部 Fern 错误区分开来 — 只有后者会转发给 Sentry。生成的输出无变化。
2.4.2
(chore): 将 phpunit/phpunit 开发依赖从 9.0 升级到 12.5.22,以解决
GHSA-qrr6-mg7r-m243(通过转发给子进程的 PHP INI 值中的换行符进行参数注入)。
还将生成的 ci.yml 工作流使用的 PHP 版本从 8.1 升级到 8.3,这是 PHPUnit 12
支持的最低版本。生成的 composer.json 文件中的 php 约束保持 8.1 不变,
因此生产安装(composer install --no-dev)不受影响。
2.4.1
(chore): 将 @fern-api/generator-cli 升级到 0.9.8。生成的 PR 中的变更日志 URL
现在使用提交 SHA 而不是 PR 分支名称,在分支被删除或合并压缩后保持链接有效。
2.4.0
(feat): 支持在 IR 中通过 usernameOmit 或 passwordOmit 配置时从基本身份验证中省略用户名或密码。
省略的字段从 SDK 的公共 API 中删除,并在内部视为空字符串(例如,省略密码编码为 username:,
省略用户名编码为 :password)。当两者都省略时,完全跳过 Authorization 标头。
2.3.1
(chore): 将模板引擎从 lodash 迁移到 Eta,以与其他生成器保持一致。
2.3.0
(feat): 添加 maxRetries 自定义配置选项,以覆盖失败请求的默认最大重试次数。
未指定时默认值仍为 2。
2.3.2-rc.0
(feat): 升级到 IR v66,压缩 IR Name 类型,减小 IR 大小并提高性能。
2.2.6
(fix): 支持多个具有 AuthSchemesRequirement.Any 的 Basic Auth 方案。
当 API 定义多个基本身份验证方案时(例如,
accountId/authToken 和 apiKey/apiKeySecret),生成的客户端现在
生成条件 if/else if 块,检查提供了哪个凭据对
并相应地设置 Authorization 标头。之前,
仅使用第一个基本身份验证方案。