From 99bcb010df9d95a05f56a8bb5b925068e9d1f64b Mon Sep 17 00:00:00 2001 From: Jorge Costa Date: Wed, 12 Nov 2025 16:42:14 +0000 Subject: [PATCH 1/5] Fix: Input Validation handle top level default. --- packages/client/src/validation.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/client/src/validation.ts b/packages/client/src/validation.ts index 030da406..66f29514 100644 --- a/packages/client/src/validation.ts +++ b/packages/client/src/validation.ts @@ -168,8 +168,9 @@ export function validateValueFromSchema( } try { - const validate = ajv.compile( args ); - const valid = validate( value ); + const { default: defaultValue, ...schemaWithoutDefault } = args; + const validate = ajv.compile( schemaWithoutDefault ); + const valid = validate( value || defaultValue || {} ); if ( valid ) { return true; From 9b3a1301e37155076005a638c64c2e2db6120c03 Mon Sep 17 00:00:00 2001 From: Jorge Costa Date: Wed, 12 Nov 2025 17:17:35 +0000 Subject: [PATCH 2/5] enhacement --- packages/client/src/validation.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/client/src/validation.ts b/packages/client/src/validation.ts index 66f29514..4dedf6ab 100644 --- a/packages/client/src/validation.ts +++ b/packages/client/src/validation.ts @@ -170,7 +170,11 @@ export function validateValueFromSchema( try { const { default: defaultValue, ...schemaWithoutDefault } = args; const validate = ajv.compile( schemaWithoutDefault ); - const valid = validate( value || defaultValue || {} ); + let valueToValidate = value; + if ( valueToValidate === undefined && defaultValue !== undefined ) { + valueToValidate = defaultValue; + } + const valid = validate( valueToValidate ); if ( valid ) { return true; From 059fb61c939e1002969265d60881828e6e632450 Mon Sep 17 00:00:00 2001 From: Jorge Costa Date: Wed, 12 Nov 2025 17:26:31 +0000 Subject: [PATCH 3/5] fix default executeClient input --- packages/client/src/api.ts | 2 +- packages/client/src/validation.ts | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/client/src/api.ts b/packages/client/src/api.ts index 4c771108..2d5d1321 100644 --- a/packages/client/src/api.ts +++ b/packages/client/src/api.ts @@ -324,7 +324,7 @@ async function executeServerAbility( */ export async function executeAbility( name: string, - input: AbilityInput = null + input: AbilityInput ): Promise< AbilityOutput > { const ability = await getAbility( name ); if ( ! ability ) { diff --git a/packages/client/src/validation.ts b/packages/client/src/validation.ts index 4dedf6ab..130e014f 100644 --- a/packages/client/src/validation.ts +++ b/packages/client/src/validation.ts @@ -170,11 +170,7 @@ export function validateValueFromSchema( try { const { default: defaultValue, ...schemaWithoutDefault } = args; const validate = ajv.compile( schemaWithoutDefault ); - let valueToValidate = value; - if ( valueToValidate === undefined && defaultValue !== undefined ) { - valueToValidate = defaultValue; - } - const valid = validate( valueToValidate ); + const valid = validate( value === undefined ? defaultValue || {} : value ); if ( valid ) { return true; From d76a237acc15dae0fd78901ecc019ef1b56796ff Mon Sep 17 00:00:00 2001 From: Jorge Costa Date: Thu, 13 Nov 2025 09:21:06 +0000 Subject: [PATCH 4/5] Update packages/client/src/api.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Greg Ziółkowski --- packages/client/src/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/api.ts b/packages/client/src/api.ts index 2d5d1321..e7b6dd74 100644 --- a/packages/client/src/api.ts +++ b/packages/client/src/api.ts @@ -324,7 +324,7 @@ async function executeServerAbility( */ export async function executeAbility( name: string, - input: AbilityInput + input?: AbilityInput ): Promise< AbilityOutput > { const ability = await getAbility( name ); if ( ! ability ) { From 513b58e7a87581ba4754fb997a60e3d8b2cf513a Mon Sep 17 00:00:00 2001 From: Jorge Costa Date: Thu, 13 Nov 2025 09:33:20 +0000 Subject: [PATCH 5/5] remove defatlt empty object --- packages/client/src/validation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/validation.ts b/packages/client/src/validation.ts index 130e014f..8a35002f 100644 --- a/packages/client/src/validation.ts +++ b/packages/client/src/validation.ts @@ -170,7 +170,7 @@ export function validateValueFromSchema( try { const { default: defaultValue, ...schemaWithoutDefault } = args; const validate = ajv.compile( schemaWithoutDefault ); - const valid = validate( value === undefined ? defaultValue || {} : value ); + const valid = validate( value === undefined ? defaultValue : value ); if ( valid ) { return true;