From e8aae4b847f4c97e95165b7fe3ea26d8e1cb60c8 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 20:07:17 +0000 Subject: [PATCH 1/2] fix(typescript): Update WebSocket allow-multiple query params to include undefined in type Co-Authored-By: thomas@buildwithfern.com --- .../websocket/GeneratedDefaultWebsocketImplementation.ts | 3 ++- generators/typescript/sdk/versions.yml | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/generators/typescript/sdk/client-class-generator/src/websocket/GeneratedDefaultWebsocketImplementation.ts b/generators/typescript/sdk/client-class-generator/src/websocket/GeneratedDefaultWebsocketImplementation.ts index 6bd5dec101ba..0215bfe7a598 100644 --- a/generators/typescript/sdk/client-class-generator/src/websocket/GeneratedDefaultWebsocketImplementation.ts +++ b/generators/typescript/sdk/client-class-generator/src/websocket/GeneratedDefaultWebsocketImplementation.ts @@ -176,7 +176,8 @@ export class GeneratedDefaultWebsocketImplementation implements GeneratedWebsock const typeNode = queryParameter.allowMultiple ? ts.factory.createUnionTypeNode([ type.typeNodeWithoutUndefined, - ts.factory.createArrayTypeNode(type.typeNodeWithoutUndefined) + ts.factory.createArrayTypeNode(type.typeNodeWithoutUndefined), + ts.factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword) ]) : type.typeNodeWithoutUndefined; return { diff --git a/generators/typescript/sdk/versions.yml b/generators/typescript/sdk/versions.yml index 7a8db64f9aa6..5dd6d09882d0 100644 --- a/generators/typescript/sdk/versions.yml +++ b/generators/typescript/sdk/versions.yml @@ -1,4 +1,12 @@ # yaml-language-server: $schema=../../../fern-versions-yml.schema.json +- version: 3.35.10 + changelogEntry: + - summary: | + Update WebSocket `ConnectArgs` interface to type `allow-multiple: true` query parameters as `T | T[] | undefined` instead of `T | T[]` for consistency. + type: fix + createdAt: "2025-12-05" + irVersion: 62 + - version: 3.35.9 changelogEntry: - summary: | From 750bac41375323240f81d613ea56cf9854f69ee9 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 20:12:56 +0000 Subject: [PATCH 2/2] fix(typescript): Only add undefined to allow-multiple union when type is optional Co-Authored-By: thomas@buildwithfern.com --- .../src/websocket/GeneratedDefaultWebsocketImplementation.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/generators/typescript/sdk/client-class-generator/src/websocket/GeneratedDefaultWebsocketImplementation.ts b/generators/typescript/sdk/client-class-generator/src/websocket/GeneratedDefaultWebsocketImplementation.ts index 0215bfe7a598..cd4ce880251b 100644 --- a/generators/typescript/sdk/client-class-generator/src/websocket/GeneratedDefaultWebsocketImplementation.ts +++ b/generators/typescript/sdk/client-class-generator/src/websocket/GeneratedDefaultWebsocketImplementation.ts @@ -173,17 +173,18 @@ export class GeneratedDefaultWebsocketImplementation implements GeneratedWebsock }), ...(this.channel.queryParameters ?? []).map((queryParameter) => { const type = context.type.getReferenceToType(queryParameter.valueType); + const isOptional = context.type.isOptional(queryParameter.valueType); const typeNode = queryParameter.allowMultiple ? ts.factory.createUnionTypeNode([ type.typeNodeWithoutUndefined, ts.factory.createArrayTypeNode(type.typeNodeWithoutUndefined), - ts.factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword) + ...(isOptional ? [ts.factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword)] : []) ]) : type.typeNodeWithoutUndefined; return { name: getPropertyKey(this.getPropertyNameOfQueryParameter(queryParameter).propertyName), type: getTextOfTsNode(typeNode), - hasQuestionToken: context.type.isOptional(queryParameter.valueType) + hasQuestionToken: isOptional }; }), ...(this.channel.headers ?? []).map((header) => {