diff --git a/packages/contract/src/error.ts b/packages/contract/src/error.ts index 37e6fa579..000729b6b 100644 --- a/packages/contract/src/error.ts +++ b/packages/contract/src/error.ts @@ -5,6 +5,10 @@ import type { AnySchema, InferSchemaOutput, Schema, SchemaIssue } from './schema export interface ValidationErrorOptions extends ErrorOptions { message: string issues: readonly SchemaIssue[] + /** + * @todo require this field in v2 + */ + data?: unknown } /** @@ -14,11 +18,13 @@ export interface ValidationErrorOptions extends ErrorOptions { */ export class ValidationError extends Error { readonly issues: readonly SchemaIssue[] + readonly data: unknown constructor(options: ValidationErrorOptions) { super(options.message, options) this.issues = options.issues + this.data = options.data } } diff --git a/packages/contract/src/event-iterator.test.ts b/packages/contract/src/event-iterator.test.ts index a8eab060b..ea29752f7 100644 --- a/packages/contract/src/event-iterator.test.ts +++ b/packages/contract/src/event-iterator.test.ts @@ -45,6 +45,7 @@ describe('eventIterator', async () => { expect(e.code).toEqual('EVENT_ITERATOR_VALIDATION_FAILED') expect(e.cause).toBeInstanceOf(ValidationError) expect(e.cause.issues).toHaveLength(1) + expect(e.cause.data).toEqual({ order: '3' }) return true }) diff --git a/packages/contract/src/event-iterator.ts b/packages/contract/src/event-iterator.ts index 685e9fc75..4c87bd9ac 100644 --- a/packages/contract/src/event-iterator.ts +++ b/packages/contract/src/event-iterator.ts @@ -45,6 +45,7 @@ export function eventIterator