@@ -11,19 +11,19 @@ type Headers = {
1111
1212type RealtimeResponse = {
1313 type: "error"|"event"|"connected"|"response";
14- data: RealtimeResponseAuthenticated|RealtimeResponseConnected|RealtimeResponseError|RealtimeResponseEvent;
14+ data: RealtimeResponseAuthenticated|RealtimeResponseConnected|RealtimeResponseError|RealtimeResponseEvent< unknown > ;
1515}
1616
1717type RealtimeRequest = {
1818 type: "authentication";
1919 data: RealtimeRequestAuthenticate;
2020}
2121
22- type RealtimeResponseEvent = {
22+ type RealtimeResponseEvent< T extends unknown > = {
2323 event: string;
2424 channels: string[];
2525 timestamp: number;
26- payload: unknown ;
26+ payload: T ;
2727}
2828
2929type RealtimeResponseError = {
@@ -55,7 +55,7 @@ type Realtime = {
5555 },
5656 createSocket: () => void;
5757 authenticate: (event: MessageEvent) => void;
58- onMessage: (channel: string, callback: (response: RealtimeResponseEvent) => void) => (event: MessageEvent) => void;
58+ onMessage: < T extends unknown > (channel: string, callback: (response: RealtimeResponseEvent< T > ) => void) => (event: MessageEvent) => void;
5959}
6060
6161class {{spec .title | caseUcfirst }}Exception extends Error {
@@ -185,13 +185,13 @@ class {{ spec.title | caseUcfirst }} {
185185 }
186186 }
187187 },
188- onMessage: (channel, callback) =>
188+ onMessage: < T extends unknown > (channel: string , callback: (response: RealtimeResponseEvent< T >) => void ) =>
189189 (event) => {
190190 try {
191191 const message: RealtimeResponse = JSON.parse(event.data);
192192 this.realtime.lastMessage = message;
193193 if (message.type === 'event') {
194- let data = <RealtimeResponseEvent >message.data;
194+ let data = <RealtimeResponseEvent < T > >message.data;
195195 if (data.channels && data.channels.includes(channel)) {
196196 callback(data);
197197 }
@@ -229,7 +229,7 @@ class {{ spec.title | caseUcfirst }} {
229229 * @param {(payload: RealtimeMessage) => void} callback Is called on every realtime update.
230230 * @returns {() => void} Unsubscribes from events.
231231 */
232- subscribe(channels: string | string[], callback: (payload: RealtimeResponseEvent) => void): () => void {
232+ subscribe< T extends unknown > (channels: string | string[], callback: (payload: RealtimeResponseEvent< T > ) => void): () => void {
233233 let channelArray = typeof channels === 'string' ? [channels] : channels;
234234 let savedChannels: {
235235 name: string;
@@ -241,7 +241,7 @@ class {{ spec.title | caseUcfirst }} {
241241 }
242242 savedChannels[index] = {
243243 name: channel,
244- index: (this.realtime.channels[channel].push(this.realtime.onMessage(channel, callback)) - 1)
244+ index: (this.realtime.channels[channel].push(this.realtime.onMessage< T > (channel, callback)) - 1)
245245 };
246246 clearTimeout(this.realtime.timeout);
247247 this.realtime.timeout = window?.setTimeout(() => {
0 commit comments