UNPKG

pusher-zod

Version:

Pusher with type safety using Zod to parse the data

69 lines (65 loc) 2.09 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }require('./chunk-DDAAVRWG.js'); // src/server.ts var _pusher = require('pusher'); var _pusher2 = _interopRequireDefault(_pusher); function createPusherServer({ setup, channel_id_separator = ".", userEvents = {} }) { class TypeSafePusherServer extends _pusher2.default { invoke(channelName, channel_id, eventName, data) { return super.trigger( `${channelName}${channel_id_separator}${channel_id}`, eventName, data ); } invokeBatch(batch) { return super.triggerBatch( batch.map((b) => ({ channel: `${String(b.channel)}${channel_id_separator}${b.channel_id}`, name: String(b.name), data: b.data, socket_id: b.socket_id, info: b.info })) ); } sendToUser(userId, event, data) { const parsedData = parseData(userEvents[event], data); if (parsedData === void 0) { throw new Error(`Invalid data for user event ${String(event)}`); } return super.sendToUser(userId, String(event), parsedData); } getChannels() { return Object.keys(setup); } getPrivateChannels() { return this.getChannels().filter(this.isPrivateChannel); } getPresenceChannels() { return this.getChannels().filter(this.isPresenceChannel); } isPrivateChannel(channel) { return typeof channel === "string" && channel.startsWith("private-"); } isPresenceChannel(channel) { return typeof channel === "string" && channel.startsWith("presence-"); } } function parseData(zodSchema, data) { try { return zodSchema.parse(data); } catch (error) { console.error(error); return void 0; } } return { TypeSafePusherServer }; } var server_default = createPusherServer; exports.createPusherServer = createPusherServer; exports.default = server_default; //# sourceMappingURL=server.js.map