@@ -4,18 +4,30 @@ 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- payload . ChangeEventHeader . nulledFields = parseFieldBitmaps (
8- allFields ,
9- payload . ChangeEventHeader . nulledFields
10- ) ;
11- payload . ChangeEventHeader . diffFields = parseFieldBitmaps (
12- allFields ,
13- payload . ChangeEventHeader . diffFields
14- ) ;
15- payload . ChangeEventHeader . changedFields = parseFieldBitmaps (
16- allFields ,
17- payload . ChangeEventHeader . changedFields
18- ) ;
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 } ) ;
30+ }
1931 return {
2032 replayId,
2133 payload
@@ -85,7 +97,7 @@ function getFieldNamesFromBitmap(fields, fieldBitmapAsHex) {
8597 binValue = reverseBytes ( binValue ) ; // Reverse byte order to match expected format
8698 // Use bitmap to figure out field names based on index
8799 const fieldNames = [ ] ;
88- for ( let i = 0 ; i < binValue . length ; i ++ ) {
100+ for ( let i = 0 ; i < binValue . length && i < fields . length ; i ++ ) {
89101 if ( binValue [ i ] === '1' ) {
90102 fieldNames . push ( fields [ i ] . getName ( ) ) ;
91103 }
0 commit comments