From f46073c41283505ee2e073eb71a7e97c85e9fce6 Mon Sep 17 00:00:00 2001 From: Chris Thorwarth Date: Fri, 20 Feb 2026 12:59:19 -0500 Subject: [PATCH] fix: type WorkersBindingKindJson `json` property to accept all JSON value types --- .../dispatch/namespaces/scripts/bindings.ts | 2 +- .../dispatch/namespaces/scripts/scripts.ts | 2 +- .../dispatch/namespaces/scripts/settings.ts | 6 ++--- .../workers/beta/workers/versions.ts | 4 ++-- .../scripts/script-and-version-settings.ts | 6 ++--- src/resources/workers/scripts/scripts.ts | 2 +- src/resources/workers/scripts/versions.ts | 6 ++--- tests/workers-binding-kind-json.test.ts | 24 +++++++++++++++++++ 8 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 tests/workers-binding-kind-json.test.ts diff --git a/src/resources/workers-for-platforms/dispatch/namespaces/scripts/bindings.ts b/src/resources/workers-for-platforms/dispatch/namespaces/scripts/bindings.ts index d2cb382d90..aa59c11615 100644 --- a/src/resources/workers-for-platforms/dispatch/namespaces/scripts/bindings.ts +++ b/src/resources/workers-for-platforms/dispatch/namespaces/scripts/bindings.ts @@ -309,7 +309,7 @@ export namespace BindingGetResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. diff --git a/src/resources/workers-for-platforms/dispatch/namespaces/scripts/scripts.ts b/src/resources/workers-for-platforms/dispatch/namespaces/scripts/scripts.ts index e65723e7b8..670972d372 100644 --- a/src/resources/workers-for-platforms/dispatch/namespaces/scripts/scripts.ts +++ b/src/resources/workers-for-platforms/dispatch/namespaces/scripts/scripts.ts @@ -893,7 +893,7 @@ export namespace ScriptUpdateParams { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. diff --git a/src/resources/workers-for-platforms/dispatch/namespaces/scripts/settings.ts b/src/resources/workers-for-platforms/dispatch/namespaces/scripts/settings.ts index 457cf2163d..757e484198 100644 --- a/src/resources/workers-for-platforms/dispatch/namespaces/scripts/settings.ts +++ b/src/resources/workers-for-platforms/dispatch/namespaces/scripts/settings.ts @@ -394,7 +394,7 @@ export namespace SettingEditResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -1151,7 +1151,7 @@ export namespace SettingGetResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -1922,7 +1922,7 @@ export namespace SettingEditParams { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. diff --git a/src/resources/workers/beta/workers/versions.ts b/src/resources/workers/beta/workers/versions.ts index 9ccfe39b95..35c4140ccb 100644 --- a/src/resources/workers/beta/workers/versions.ts +++ b/src/resources/workers/beta/workers/versions.ts @@ -556,7 +556,7 @@ export namespace Version { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -1392,7 +1392,7 @@ export namespace VersionCreateParams { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. diff --git a/src/resources/workers/scripts/script-and-version-settings.ts b/src/resources/workers/scripts/script-and-version-settings.ts index 770335682c..db7f87e941 100644 --- a/src/resources/workers/scripts/script-and-version-settings.ts +++ b/src/resources/workers/scripts/script-and-version-settings.ts @@ -390,7 +390,7 @@ export namespace ScriptAndVersionSettingEditResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -1147,7 +1147,7 @@ export namespace ScriptAndVersionSettingGetResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -1918,7 +1918,7 @@ export namespace ScriptAndVersionSettingEditParams { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. diff --git a/src/resources/workers/scripts/scripts.ts b/src/resources/workers/scripts/scripts.ts index caafb8509c..0aecf70305 100644 --- a/src/resources/workers/scripts/scripts.ts +++ b/src/resources/workers/scripts/scripts.ts @@ -1618,7 +1618,7 @@ export namespace ScriptUpdateParams { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. diff --git a/src/resources/workers/scripts/versions.ts b/src/resources/workers/scripts/versions.ts index bcd4ecd00b..c6087ece46 100644 --- a/src/resources/workers/scripts/versions.ts +++ b/src/resources/workers/scripts/versions.ts @@ -399,7 +399,7 @@ export namespace VersionCreateResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -1213,7 +1213,7 @@ export namespace VersionGetResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -2022,7 +2022,7 @@ export namespace VersionCreateParams { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. diff --git a/tests/workers-binding-kind-json.test.ts b/tests/workers-binding-kind-json.test.ts new file mode 100644 index 0000000000..5674bc49fd --- /dev/null +++ b/tests/workers-binding-kind-json.test.ts @@ -0,0 +1,24 @@ +// Regression test for https://github.com/cloudflare/cloudflare-typescript/issues/2682 +// +// WorkersBindingKindJson's `json` property should accept any valid JSON value, +// not just strings. + +import { type ScriptUpdateParams } from 'cloudflare/resources/workers/scripts/scripts'; + +type WorkersBindingKindJson = ScriptUpdateParams.Metadata.WorkersBindingKindJson; + +const binding = (json: WorkersBindingKindJson['json']): WorkersBindingKindJson => ({ + name: 'MY_BINDING', + type: 'json', + json, +}); + +// Type-level validation: if any of these fail to compile, the test suite won't build. +test('WorkersBindingKindJson json property accepts all JSON value types', () => { + expect(binding({ key: 'value' }).json).toEqual({ key: 'value' }); + expect(binding('hello').json).toBe('hello'); // backwards compatible + expect(binding([1, 2, 3]).json).toEqual([1, 2, 3]); + expect(binding(42).json).toBe(42); + expect(binding(true).json).toBe(true); + expect(binding(null).json).toBeNull(); +});