@@ -35,6 +35,41 @@ export type RealtimeChannelOptions = {
35
35
}
36
36
}
37
37
38
+ type RealtimeChangesPayloadBase = {
39
+ schema : string
40
+ table : string
41
+ }
42
+
43
+ type RealtimeBroadcastChangesPayloadBase = RealtimeChangesPayloadBase & {
44
+ id : string
45
+ }
46
+
47
+ export type RealtimeBroadcastInsertPayload < T extends { [ key : string ] : any } > =
48
+ RealtimeBroadcastChangesPayloadBase & {
49
+ operation : `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . INSERT } `
50
+ record : T
51
+ old_record : null
52
+ }
53
+
54
+ export type RealtimeBroadcastUpdatePayload < T extends { [ key : string ] : any } > =
55
+ RealtimeBroadcastChangesPayloadBase & {
56
+ operation : `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . UPDATE } `
57
+ record : T
58
+ old_record : T
59
+ }
60
+
61
+ export type RealtimeBroadcastDeletePayload < T extends { [ key : string ] : any } > =
62
+ RealtimeBroadcastChangesPayloadBase & {
63
+ operation : `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . DELETE } `
64
+ record : null
65
+ old_record : T
66
+ }
67
+
68
+ export type RealtimeBroadcastPayload < T extends { [ key : string ] : any } > =
69
+ | RealtimeBroadcastInsertPayload < T >
70
+ | RealtimeBroadcastUpdatePayload < T >
71
+ | RealtimeBroadcastDeletePayload < T >
72
+
38
73
type RealtimePostgresChangesPayloadBase = {
39
74
schema : string
40
75
table : string
@@ -416,6 +451,42 @@ export default class RealtimeChannel {
416
451
payload : T
417
452
} ) => void
418
453
) : RealtimeChannel
454
+ on < T extends Record < string , unknown > > (
455
+ type : `${REALTIME_LISTEN_TYPES . BROADCAST } `,
456
+ filter : { event : REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . ALL } ,
457
+ callback : ( payload : {
458
+ type : `${REALTIME_LISTEN_TYPES . BROADCAST } `
459
+ event : REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . ALL
460
+ payload : RealtimeBroadcastPayload < T >
461
+ } ) => void
462
+ ) : RealtimeChannel
463
+ on < T extends { [ key : string ] : any } > (
464
+ type : `${REALTIME_LISTEN_TYPES . BROADCAST } `,
465
+ filter : { event : REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . INSERT } ,
466
+ callback : ( payload : {
467
+ type : `${REALTIME_LISTEN_TYPES . BROADCAST } `
468
+ event : REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . INSERT
469
+ payload : RealtimeBroadcastInsertPayload < T >
470
+ } ) => void
471
+ ) : RealtimeChannel
472
+ on < T extends { [ key : string ] : any } > (
473
+ type : `${REALTIME_LISTEN_TYPES . BROADCAST } `,
474
+ filter : { event : REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . UPDATE } ,
475
+ callback : ( payload : {
476
+ type : `${REALTIME_LISTEN_TYPES . BROADCAST } `
477
+ event : REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . UPDATE
478
+ payload : RealtimeBroadcastUpdatePayload < T >
479
+ } ) => void
480
+ ) : RealtimeChannel
481
+ on < T extends { [ key : string ] : any } > (
482
+ type : `${REALTIME_LISTEN_TYPES . BROADCAST } `,
483
+ filter : { event : REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . DELETE } ,
484
+ callback : ( payload : {
485
+ type : `${REALTIME_LISTEN_TYPES . BROADCAST } `
486
+ event : REALTIME_POSTGRES_CHANGES_LISTEN_EVENT . DELETE
487
+ payload : RealtimeBroadcastDeletePayload < T >
488
+ } ) => void
489
+ ) : RealtimeChannel
419
490
on < T extends { [ key : string ] : any } > (
420
491
type : `${REALTIME_LISTEN_TYPES . SYSTEM } `,
421
492
filter : { } ,
0 commit comments