From 3e14e721f729e45565a17e1faaeecbda749d3bca Mon Sep 17 00:00:00 2001 From: tzh476 Date: Sun, 23 Aug 2026 16:32:58 +0800 Subject: [PATCH 1/2] fix: allow excess protocol-specific fields on Binding (issue #735) Change-Id: I2b53925665dd23e273e90fe42eb8ee90b4342907 --- packages/parser/src/spec-types/v2.ts | 2 ++ packages/parser/src/spec-types/v3.ts | 2 ++ packages/parser/test/models/v2/bindings.spec.ts | 9 +++++++++ 3 files changed, 13 insertions(+) diff --git a/packages/parser/src/spec-types/v2.ts b/packages/parser/src/spec-types/v2.ts index 758cd3035..ac95402ce 100644 --- a/packages/parser/src/spec-types/v2.ts +++ b/packages/parser/src/spec-types/v2.ts @@ -440,6 +440,8 @@ export interface CorrelationIDObject extends SpecificationExtensions { export interface Binding { bindingVersion?: string; + // protocol-specific binding fields (excess properties) + [propName: string]: any; } export interface SpecificationExtensions { diff --git a/packages/parser/src/spec-types/v3.ts b/packages/parser/src/spec-types/v3.ts index d3d11069d..ce78f2c9d 100644 --- a/packages/parser/src/spec-types/v3.ts +++ b/packages/parser/src/spec-types/v3.ts @@ -484,6 +484,8 @@ export interface AsyncAPISchemaDefinition extends SpecificationExtensions { export interface Binding { bindingVersion?: string; + // protocol-specific binding fields (excess properties) + [propName: string]: any; } export interface SpecificationExtensions { diff --git a/packages/parser/test/models/v2/bindings.spec.ts b/packages/parser/test/models/v2/bindings.spec.ts index 4075508a6..2680a51f0 100644 --- a/packages/parser/test/models/v2/bindings.spec.ts +++ b/packages/parser/test/models/v2/bindings.spec.ts @@ -61,4 +61,13 @@ describe('Bindings model', function () { expect(bindings.extensions().get('x-anotherOne')?.value()).toEqual({ someKey: 123 }); }); }); + + describe('excess properties (issue #735)', function () { + it('should preserve protocol-specific excess fields on a binding value', function () { + const b = new Binding({ clientId: 'my-client', clean: true } as any, { asyncapi: {} as any, pointer: '', protocol: 'mqtt' }); + const value = b.value() as Record; + expect(value).toHaveProperty('clientId', 'my-client'); + expect(value).toHaveProperty('clean', true); + }); + }); }); From e3656303a9082e46173181e250bddfb197c863f3 Mon Sep 17 00:00:00 2001 From: tzh476 Date: Mon, 24 Aug 2026 01:17:10 +0800 Subject: [PATCH 2/2] chore: changeset for #735 Change-Id: Ie4f192783e7f7fb3e533f058974c6a5bb51a3eb8 --- .changeset/735-binding-excess.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/735-binding-excess.md diff --git a/.changeset/735-binding-excess.md b/.changeset/735-binding-excess.md new file mode 100644 index 000000000..f912fb631 --- /dev/null +++ b/.changeset/735-binding-excess.md @@ -0,0 +1,5 @@ +--- +'@asyncapi/parser': patch +--- + +Allow protocol-specific excess properties on the `Binding` type (issue #735).