UNPKG

@satorijs/protocol

Version:
188 lines (186 loc) 8.34 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); 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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { Channel: () => Channel, Methods: () => Methods, Opcode: () => Opcode, Resource: () => Resource, Status: () => Status, WebSocket: () => WebSocket, transformKey: () => transformKey }); module.exports = __toCommonJS(index_exports); var import_element = __toESM(require("@satorijs/element"), 1); var import_cosmokit = require("cosmokit"); function Field(name) { return { name }; } __name(Field, "Field"); function Method(name, fields, isForm = false) { return { name, fields: fields.map(Field), isForm }; } __name(Method, "Method"); var Methods = { "channel.get": Method("getChannel", ["channel_id", "guild_id"]), "channel.list": Method("getChannelList", ["guild_id", "next"]), "channel.create": Method("createChannel", ["guild_id", "data"]), "channel.update": Method("updateChannel", ["channel_id", "data"]), "channel.delete": Method("deleteChannel", ["channel_id"]), "channel.mute": Method("muteChannel", ["channel_id", "guild_id", "enable"]), "message.create": Method("createMessage", ["channel_id", "content", "referrer"]), "message.update": Method("editMessage", ["channel_id", "message_id", "content"]), "message.delete": Method("deleteMessage", ["channel_id", "message_id"]), "message.get": Method("getMessage", ["channel_id", "message_id"]), "message.list": Method("getMessageList", ["channel_id", "next", "direction", "limit", "order"]), "reaction.create": Method("createReaction", ["channel_id", "message_id", "emoji"]), "reaction.delete": Method("deleteReaction", ["channel_id", "message_id", "emoji", "user_id"]), "reaction.clear": Method("clearReaction", ["channel_id", "message_id", "emoji"]), "reaction.list": Method("getReactionList", ["channel_id", "message_id", "emoji", "next"]), "upload.create": Method("createUpload", [], true), "guild.get": Method("getGuild", ["guild_id"]), "guild.list": Method("getGuildList", ["next"]), "guild.member.get": Method("getGuildMember", ["guild_id", "user_id"]), "guild.member.list": Method("getGuildMemberList", ["guild_id", "next"]), "guild.member.kick": Method("kickGuildMember", ["guild_id", "user_id", "permanent"]), "guild.member.mute": Method("muteGuildMember", ["guild_id", "user_id", "duration", "reason"]), "guild.member.role.set": Method("setGuildMemberRole", ["guild_id", "user_id", "role_id"]), "guild.member.role.unset": Method("unsetGuildMemberRole", ["guild_id", "user_id", "role_id"]), "guild.member.role.list": Method("getGuildMemberRoleList", ["guild_id", "user_id", "next"]), "guild.role.list": Method("getGuildRoleList", ["guild_id", "next"]), "guild.role.create": Method("createGuildRole", ["guild_id", "data"]), "guild.role.update": Method("updateGuildRole", ["guild_id", "role_id", "data"]), "guild.role.delete": Method("deleteGuildRole", ["guild_id", "role_id"]), "login.get": Method("getLogin", []), "user.get": Method("getUser", ["user_id"]), "user.channel.create": Method("createDirectChannel", ["user_id", "guild_id"]), "friend.list": Method("getFriendList", ["next"]), "friend.delete": Method("deleteFriend", ["user_id"]), "friend.approve": Method("handleFriendRequest", ["message_id", "approve", "comment"]), "guild.approve": Method("handleGuildRequest", ["message_id", "approve", "comment"]), "guild.member.approve": Method("handleGuildMemberRequest", ["message_id", "approve", "comment"]) }; var Channel; ((Channel2) => { let Type; ((Type2) => { Type2[Type2["TEXT"] = 0] = "TEXT"; Type2[Type2["DIRECT"] = 1] = "DIRECT"; Type2[Type2["CATEGORY"] = 2] = "CATEGORY"; Type2[Type2["VOICE"] = 3] = "VOICE"; })(Type = Channel2.Type || (Channel2.Type = {})); })(Channel || (Channel = {})); function Resource(attrs = [], children = [], content) { return { attrs, children, content }; } __name(Resource, "Resource"); ((Resource2) => { const Definitions = { user: Resource2(["id", "name", "nick", "avatar", "isBot"]), member: Resource2(["name", "nick", "avatar"]), channel: Resource2(["id", "type", "name"]), guild: Resource2(["id", "name", "avatar"]), quote: Resource2(["id"], ["quote", "user", "member", "channel"], "content") }; function encode(type, data) { const resource = Definitions[type]; const element = (0, import_element.default)(type, (0, import_cosmokit.pick)(data, resource.attrs)); for (const key of resource.children) { if ((0, import_cosmokit.isNullable)(data[key])) continue; element.children.push(encode(key, data[key])); } if (resource.content && !(0, import_cosmokit.isNullable)(data[resource.content])) { element.children.push(...import_element.default.parse(data[resource.content])); } return element; } Resource2.encode = encode; __name(encode, "encode"); function decode(element) { const data = element.attrs; const resource = Definitions[element.type]; for (const key of resource.children) { const index = element.children.findIndex((el) => el.type === key); if (index === -1) continue; const [child] = element.children.splice(index, 1); data[key] = decode(child); } if (resource.content && element.children.length) { data[resource.content] = element.children.join(""); } return data; } Resource2.decode = decode; __name(decode, "decode"); })(Resource || (Resource = {})); function transformKey(source, callback) { if (!source || typeof source !== "object") return source; if (Array.isArray(source)) return source.map((value) => transformKey(value, callback)); return Object.fromEntries(Object.entries(source).map(([key, value]) => { if (key.startsWith("_") || key === "referrer") return [key, value]; return [callback(key), transformKey(value, callback)]; })); } __name(transformKey, "transformKey"); var Status = /* @__PURE__ */ ((Status2) => { Status2[Status2["OFFLINE"] = 0] = "OFFLINE"; Status2[Status2["ONLINE"] = 1] = "ONLINE"; Status2[Status2["CONNECT"] = 2] = "CONNECT"; Status2[Status2["DISCONNECT"] = 3] = "DISCONNECT"; Status2[Status2["RECONNECT"] = 4] = "RECONNECT"; return Status2; })(Status || {}); var Opcode = /* @__PURE__ */ ((Opcode2) => { Opcode2[Opcode2["EVENT"] = 0] = "EVENT"; Opcode2[Opcode2["PING"] = 1] = "PING"; Opcode2[Opcode2["PONG"] = 2] = "PONG"; Opcode2[Opcode2["IDENTIFY"] = 3] = "IDENTIFY"; Opcode2[Opcode2["READY"] = 4] = "READY"; Opcode2[Opcode2["META"] = 5] = "META"; return Opcode2; })(Opcode || {}); var WebSocket; ((WebSocket2) => { WebSocket2.CONNECTING = 0; WebSocket2.OPEN = 1; WebSocket2.CLOSING = 2; WebSocket2.CLOSED = 3; })(WebSocket || (WebSocket = {})); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Channel, Methods, Opcode, Resource, Status, WebSocket, transformKey });