Skip to content

Commit 3f07d25

Browse files
committed
fix(core): give empty Standard Schema issues a non-empty error
1 parent 66e590a commit 3f07d25

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

‎packages/core-internal/src/util/standardSchema.ts‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,10 @@ export async function validateStandardSchema<T extends StandardSchemaV1>(
285285
): Promise<StandardSchemaValidationResult<StandardSchemaV1.InferOutput<T>>> {
286286
const result = await schema['~standard'].validate(data);
287287
if (result.issues) {
288-
return { success: false, error: result.issues.map(i => formatIssue(i)).join(', ') };
288+
// A present but empty `issues` array is still a failure, so fall back to a
289+
// non-empty message: callers that surface `error` must not report it as success.
290+
const message = result.issues.map(i => formatIssue(i)).join(', ');
291+
return { success: false, error: message || 'validation failed' };
289292
}
290293
return { success: true, data: (result as StandardSchemaV1.SuccessResult<unknown>).value as StandardSchemaV1.InferOutput<T> };
291294
}

‎packages/core-internal/test/util/standardSchema.test.ts‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ describe('validateStandardSchema', () => {
1212
}
1313
};
1414

15-
await expect(validateStandardSchema(schema, { name: 'example' })).resolves.toEqual({ success: false, error: '' });
15+
await expect(validateStandardSchema(schema, { name: 'example' })).resolves.toEqual({
16+
success: false,
17+
error: 'validation failed'
18+
});
1619
});
1720

1821
test('preserves transformed values when validation succeeds', async () => {

0 commit comments

Comments
 (0)