UNPKG

pusher-zod

Version:

Pusher with type safety using Zod to parse the data

78 lines (72 loc) 2.41 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _chunkDDAAVRWGjs = require('./chunk-DDAAVRWG.js'); // src/client.ts var _pusherjs = require('pusher-js'); var _pusherjs2 = _interopRequireDefault(_pusherjs); function createPusherClient({ setup, channel_id_separator = ".", userEvents = {} }) { class TypeSafePusherClient { constructor(...args) { this.pusher = new (0, _pusherjs2.default)(...args); this.member = _chunkDDAAVRWGjs.__spreadProps.call(void 0, _chunkDDAAVRWGjs.__spreadValues.call(void 0, {}, this.pusher.user), { bind: (eventName, callback, context) => { const parsedCallback = (data) => { const parsedData = parseData(userEvents[eventName], data); if (parsedData !== void 0) callback(parsedData); }; return this.pusher.user.bind( String(eventName), parsedCallback, context ); } }); } joinChannel(channelName, id) { const channel = this.pusher.subscribe( `${String(channelName)}${channel_id_separator}${id}` ); channel.listen = (eventName, callback, context) => { const parsedCallback = (data) => { const parsedData = parseData(setup[channelName][eventName], data); if (parsedData !== void 0) callback(parsedData); }; channel.bind(String(eventName), parsedCallback, context); }; return channel; } leaveChannel(channelName, id) { this.pusher.unsubscribe( `${String(channelName)}${channel_id_separator}${id}` ); } subscribe(channelName) { return this.pusher.subscribe(channelName); } unsubscribe(channelName) { this.pusher.unsubscribe(channelName); } get user() { return this.pusher.user; } on(eventName, callback) { this.pusher.connection.bind(eventName, callback); } } function parseData(zodSchema, data) { try { return zodSchema.parse(data); } catch (error) { console.error(error); return void 0; } } return { TypeSafePusherClient }; } var client_default = createPusherClient; exports.createPusherClient = createPusherClient; exports.default = client_default; //# sourceMappingURL=client.js.map