UNPKG

gil.js

Version:

A powerful Node.js library for interacting with the Guilded API.

62 lines (61 loc) 1.92 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebSocketManager = void 0; const node_events_1 = __importDefault(require("node:events")); const ws_1 = __importDefault(require("ws")); const ws_2 = require("../typings/ws"); const package_json_1 = __importDefault(require("../../package.json")); class WebSocketManager extends node_events_1.default { constructor(options) { super(); this.options = options; /** The socket. */ this.socket = null; /** The ID of the last message. */ this.lastMessageId = null; } ; get version() { return this.options.version || 1; } ; get url() { return this.options.url || `wss://www.guilded.gg/websocket/v${this.version}`; } ; connect() { this.socket = new ws_1.default(this.url, { headers: { Authorization: `Bearer ${this.options.token}`, "User-Agent": `gil.js@${package_json_1.default.version} Node.js@${process.versions.node}`, "guilded-last-message-id": this.lastMessageId || "", }, }); this.socket.on("message", (raw) => { const data = JSON.parse(raw.toString()); this.onSocketMessage(data); }); } ; onSocketMessage(data) { if (data.s) this.lastMessageId = data.s; switch (data.op) { case ws_2.WebSocketOpCode.Welcome: const { user } = data.d; this.emit("ready", user); break; case ws_2.WebSocketOpCode.Event: this.emit("event", data.t, data.d); break; } ; } ; } exports.WebSocketManager = WebSocketManager; ; ;