77 SnapshotFrom ,
88 assign ,
99 fromPromise ,
10+ sendParent ,
1011 setup
1112} from 'xstate' ;
1213import { reply } from '../utils' ;
@@ -54,6 +55,15 @@ interface DataValidationFailedEvent extends EventObject {
5455 } ;
5556}
5657
58+ const toSerializable = ( data : unknown ) => {
59+ try {
60+ return JSON . parse ( JSON . stringify ( data ) ) ;
61+ } catch {
62+ console . warn ( 'Data is not serializable, using toPlainObject as fallback' , data ) ;
63+ return { }
64+ }
65+ }
66+
5767export const dataValidatorCommands = {
5868 validateData : ( {
5969 validationPayload,
@@ -186,6 +196,7 @@ export const dataValidatorMachine = setup({
186196 target : 'idle' ,
187197 actions : [
188198 'setValidationResults' ,
199+ // send to parent
189200 reply (
190201 ( {
191202 context,
@@ -195,7 +206,7 @@ export const dataValidatorMachine = setup({
195206 event : ValidateActorDoneEvent ;
196207 } ) =>
197208 dataValidatorEvents . dataValidated ( {
198- validationPayload : context . validationPayload as ValidationPayload ,
209+ validationPayload : toSerializable ( context . validationPayload ) as ValidationPayload ,
199210 validationResults : event . output . validationResults
200211 } )
201212 ) as any
@@ -207,7 +218,7 @@ export const dataValidatorMachine = setup({
207218 reply (
208219 ( { context, event } : { context : ValidationMachineContext ; event : ErrorActorEvent } ) =>
209220 dataValidatorEvents . dataValidationFailed ( {
210- validationPayload : context . validationPayload as ValidationPayload ,
221+ validationPayload : toSerializable ( context . validationPayload ) as ValidationPayload ,
211222 systemErrors : event . error
212223 } )
213224 ) as any ,
0 commit comments