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 7eccbf2a2d..ba0a6be5de 100644 --- a/src/resources/workers-for-platforms/dispatch/namespaces/scripts/scripts.ts +++ b/src/resources/workers-for-platforms/dispatch/namespaces/scripts/scripts.ts @@ -1022,7 +1022,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 fc8d864ee3..5a122d32ee 100644 --- a/src/resources/workers-for-platforms/dispatch/namespaces/scripts/settings.ts +++ b/src/resources/workers-for-platforms/dispatch/namespaces/scripts/settings.ts @@ -397,7 +397,7 @@ export namespace SettingEditResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -1228,7 +1228,7 @@ export namespace SettingGetResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -2077,7 +2077,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 fb7909a3e1..d4cb14a635 100644 --- a/src/resources/workers/beta/workers/versions.ts +++ b/src/resources/workers/beta/workers/versions.ts @@ -566,7 +566,7 @@ export namespace Version { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -1502,7 +1502,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 b62eb10dec..12eda260b7 100644 --- a/src/resources/workers/scripts/script-and-version-settings.ts +++ b/src/resources/workers/scripts/script-and-version-settings.ts @@ -393,7 +393,7 @@ export namespace ScriptAndVersionSettingEditResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -1224,7 +1224,7 @@ export namespace ScriptAndVersionSettingGetResponse { /** * JSON data to use. */ - json: string; + json: string | Record | unknown[] | number | boolean | null; /** * A JavaScript variable name for the binding. @@ -2073,7 +2073,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 202fd2d7e0..7e20c00846 100644 --- a/src/resources/workers/scripts/scripts.ts +++ b/src/resources/workers/scripts/scripts.ts @@ -1996,7 +1996,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(); +});