UNPKG

lightweight-socket

Version:

lightweight socket

91 lines (88 loc) 2.61 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/client-browser.ts var client_browser_exports = {}; __export(client_browser_exports, { BrowserClient: () => BrowserClient }); module.exports = __toCommonJS(client_browser_exports); // src/event.ts var Event = class { constructor(name, payload) { this.name = name; this.payload = payload; } toString() { return JSON.stringify({ name: this.name, payload: this.payload }); } }; var Emitter = class { constructor() { this.listeners = {}; } on(event, listener) { if (!this.listeners[event]) { this.listeners[event] = []; } this.listeners[event].push(listener); } once(event, listener) { const onceListener = (...args) => { this.off(event, onceListener); listener.apply(this, args); }; this.on(event, onceListener); } off(event, listener) { if (!this.listeners[event]) return; this.listeners[event] = this.listeners[event].filter((l) => l !== listener); } }; // src/client-browser.ts var BrowserClient = class extends Emitter { constructor(url) { super(); this.socket = new WebSocket(url); this.init(); this.on("connect", (id) => this.id = id); } emit(name, ...args) { const event = new Event(name, args); const message = event.toString(); this.socket.send(message); } close() { this.socket.close(); } receive(event) { const data = event.data; const parsedEvent = JSON.parse(data); if (this.listeners[parsedEvent.name]) { this.listeners[parsedEvent.name].forEach((listener) => listener(...parsedEvent.payload)); } } init() { this.socket.addEventListener("message", this.receive.bind(this)); } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { BrowserClient }); //# sourceMappingURL=client-browser.js.map