@@ -4,29 +4,32 @@ export function parseEvent(schema, event) {
44 const allFields = schema . type . getFields ( ) ;
55 const replayId = decodeReplayId ( event . replayId ) ;
66 const payload = schema . type . fromBuffer ( event . event . payload ) ; // This schema is the same which we retreived earlier in the GetSchema rpc.
7- try {
8- payload . ChangeEventHeader . nulledFields = parseFieldBitmaps (
9- allFields ,
10- payload . ChangeEventHeader . nulledFields
11- ) ;
12- } catch ( error ) {
13- throw new Error ( 'Failed to parse nulledFields' , { cause : error } ) ;
14- }
15- try {
16- payload . ChangeEventHeader . diffFields = parseFieldBitmaps (
17- allFields ,
18- payload . ChangeEventHeader . diffFields
19- ) ;
20- } catch ( error ) {
21- throw new Error ( 'Failed to parse diffFields' , { cause : error } ) ;
22- }
23- try {
24- payload . ChangeEventHeader . changedFields = parseFieldBitmaps (
25- allFields ,
26- payload . ChangeEventHeader . changedFields
27- ) ;
28- } catch ( error ) {
29- throw new Error ( 'Failed to parse changedFields' , { cause : error } ) ;
7+ // Parse CDC header if available
8+ if ( payload . ChangeEventHeader ) {
9+ try {
10+ payload . ChangeEventHeader . nulledFields = parseFieldBitmaps (
11+ allFields ,
12+ payload . ChangeEventHeader . nulledFields
13+ ) ;
14+ } catch ( error ) {
15+ throw new Error ( 'Failed to parse nulledFields' , { cause : error } ) ;
16+ }
17+ try {
18+ payload . ChangeEventHeader . diffFields = parseFieldBitmaps (
19+ allFields ,
20+ payload . ChangeEventHeader . diffFields
21+ ) ;
22+ } catch ( error ) {
23+ throw new Error ( 'Failed to parse diffFields' , { cause : error } ) ;
24+ }
25+ try {
26+ payload . ChangeEventHeader . changedFields = parseFieldBitmaps (
27+ allFields ,
28+ payload . ChangeEventHeader . changedFields
29+ ) ;
30+ } catch ( error ) {
31+ throw new Error ( 'Failed to parse changedFields' , { cause : error } ) ;
32+ }
3033 }
3134 return {
3235 replayId,
0 commit comments