tasq/node_modules/@supabase/realtime-js/dist/main/phoenix/channelAdapter.js

103 lines
3.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../lib/constants");
class ChannelAdapter {
constructor(socket, topic, params) {
const phoenixParams = phoenixChannelParams(params);
this.channel = socket.getSocket().channel(topic, phoenixParams);
this.socket = socket;
}
get state() {
return this.channel.state;
}
set state(state) {
this.channel.state = state;
}
get joinedOnce() {
return this.channel.joinedOnce;
}
get joinPush() {
return this.channel.joinPush;
}
get rejoinTimer() {
return this.channel.rejoinTimer;
}
on(event, callback) {
return this.channel.on(event, callback);
}
off(event, refNumber) {
this.channel.off(event, refNumber);
}
subscribe(timeout) {
return this.channel.join(timeout);
}
unsubscribe(timeout) {
return this.channel.leave(timeout);
}
teardown() {
this.channel.teardown();
}
onClose(callback) {
this.channel.onClose(callback);
}
onError(callback) {
return this.channel.onError(callback);
}
push(event, payload, timeout) {
let push;
try {
push = this.channel.push(event, payload, timeout);
}
catch (error) {
throw `tried to push '${event}' to '${this.channel.topic}' before joining. Use channel.subscribe() before pushing events`;
}
if (this.channel.pushBuffer.length > constants_1.MAX_PUSH_BUFFER_SIZE) {
const removedPush = this.channel.pushBuffer.shift();
removedPush.cancelTimeout();
this.socket.log('channel', `discarded push due to buffer overflow: ${removedPush.event}`, removedPush.payload());
}
return push;
}
updateJoinPayload(payload) {
const oldPayload = this.channel.joinPush.payload();
this.channel.joinPush.payload = () => (Object.assign(Object.assign({}, oldPayload), payload));
}
canPush() {
return this.socket.isConnected() && this.state === constants_1.CHANNEL_STATES.joined;
}
isJoined() {
return this.state === constants_1.CHANNEL_STATES.joined;
}
isJoining() {
return this.state === constants_1.CHANNEL_STATES.joining;
}
isClosed() {
return this.state === constants_1.CHANNEL_STATES.closed;
}
isLeaving() {
return this.state === constants_1.CHANNEL_STATES.leaving;
}
updateFilterBindings(filterBindings) {
this.channel.filterBindings = filterBindings;
}
updatePayloadTransform(callback) {
this.channel.onMessage = callback;
}
/**
* @internal
*/
getChannel() {
return this.channel;
}
}
exports.default = ChannelAdapter;
function phoenixChannelParams(options) {
return {
config: Object.assign({
broadcast: { ack: false, self: false },
presence: { key: '', enabled: false },
private: false,
}, options.config),
};
}
//# sourceMappingURL=channelAdapter.js.map