@@ -35,6 +35,41 @@ export type RealtimeChannelOptions = {
3535 }
3636}
3737
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+
3873type RealtimePostgresChangesPayloadBase = {
3974 schema : string
4075 table : string
@@ -416,6 +451,42 @@ export default class RealtimeChannel {
416451 payload : T
417452 } ) => void
418453 ) : 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
419490 on < T extends { [ key : string ] : any } > (
420491 type : `${REALTIME_LISTEN_TYPES . SYSTEM } `,
421492 filter : { } ,
0 commit comments