diff --git a/client/js/socket.ts b/client/js/socket.ts index f01b628d..d4752142 100644 --- a/client/js/socket.ts +++ b/client/js/socket.ts @@ -1,5 +1,5 @@ import io, {Socket} from "socket.io-client"; -import type {ServerToClientEvents, ClientToServerEvents} from "../../server/types/socket-events"; +import type {ServerToClientEvents, ClientToServerEvents} from "../../shared/types/socket-events"; const socket: Socket = io({ transports: JSON.parse(document.body.dataset.transports || "['polling', 'websocket']"), diff --git a/client/js/vue.ts b/client/js/vue.ts index 09fe0bc6..7f94cba0 100644 --- a/client/js/vue.ts +++ b/client/js/vue.ts @@ -9,7 +9,6 @@ import {router} from "./router"; import socket from "./socket"; import eventbus from "./eventbus"; -import "./socket-events"; import "./webpush"; import "./keybinds"; import {LoungeWindow} from "./types"; diff --git a/client/tsconfig.json b/client/tsconfig.json index 2c7cbdcd..d848b3a9 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -6,7 +6,6 @@ ] /* Specifies a list of glob patterns that match files to be included in compilation. If no 'files' or 'include' property is present in a tsconfig.json, the compiler defaults to including all files in the containing directory and subdirectories except those specified by 'exclude'. Requires TypeScript version 2.0 or later. */, "files": [ "../package.json", - "../server/types/socket-events.d.ts", "../server/helper.ts", "../server/log.ts", "../server/config.ts", diff --git a/server/client.ts b/server/client.ts index 9f7c08d9..fc8ac8c7 100644 --- a/server/client.ts +++ b/server/client.ts @@ -7,9 +7,10 @@ import colors from "chalk"; import log from "./log"; import Chan, {ChanConfig, Channel, ChanType} from "./models/chan"; -import Msg, {MessageType, UserInMessage} from "./models/msg"; +import Msg from "./models/msg"; import Config from "./config"; import {condensedTypes} from "../shared/irc"; +import {MessageType, UserInMessage} from "../shared/types/msg"; import inputs from "./plugins/inputs"; import PublicClient from "./plugins/packages/publicClient"; diff --git a/server/models/chan.ts b/server/models/chan.ts index 79d8a86c..77addedd 100644 --- a/server/models/chan.ts +++ b/server/models/chan.ts @@ -2,11 +2,12 @@ import _ from "lodash"; import log from "../log"; import Config from "../config"; import User from "./user"; -import Msg, {MessageType} from "./msg"; +import Msg from "./msg"; import storage from "../plugins/storage"; import Client from "../client"; import Network from "./network"; import Prefix from "./prefix"; +import {MessageType} from "../../shared/types/msg"; export enum ChanType { CHANNEL = "channel", diff --git a/server/models/msg.ts b/server/models/msg.ts index 6a1d027c..06420d5c 100644 --- a/server/models/msg.ts +++ b/server/models/msg.ts @@ -1,41 +1,5 @@ import _ from "lodash"; -import {LinkPreview} from "../plugins/irc-events/link"; -import User from "./user"; - -export type UserInMessage = Partial & { - mode: string; -}; - -export enum MessageType { - UNHANDLED = "unhandled", - ACTION = "action", - AWAY = "away", - BACK = "back", - ERROR = "error", - INVITE = "invite", - JOIN = "join", - KICK = "kick", - LOGIN = "login", - LOGOUT = "logout", - MESSAGE = "message", - MODE = "mode", - MODE_CHANNEL = "mode_channel", - MODE_USER = "mode_user", // RPL_UMODEIS - MONOSPACE_BLOCK = "monospace_block", - NICK = "nick", - NOTICE = "notice", - PART = "part", - QUIT = "quit", - CTCP = "ctcp", - CTCP_REQUEST = "ctcp_request", - CHGHOST = "chghost", - TOPIC = "topic", - TOPIC_SET_BY = "topic_set_by", - WHOIS = "whois", - RAW = "raw", - PLUGIN = "plugin", - WALLOPS = "wallops", -} +import {MessageType, LinkPreview, UserInMessage} from "../../shared/types/msg"; class Msg { from!: UserInMessage; diff --git a/server/models/network.ts b/server/models/network.ts index 0a4f31e9..1952a3f1 100644 --- a/server/models/network.ts +++ b/server/models/network.ts @@ -2,13 +2,14 @@ import _ from "lodash"; import {v4 as uuidv4} from "uuid"; import IrcFramework, {Client as IRCClient} from "irc-framework"; import Chan, {ChanConfig, Channel, ChanType} from "./chan"; -import Msg, {MessageType} from "./msg"; +import Msg from "./msg"; import Prefix from "./prefix"; import Helper, {Hostmask} from "../helper"; import Config, {WebIRC} from "../config"; import STSPolicies from "../plugins/sts"; import ClientCertificate, {ClientCertificateType} from "../plugins/clientCertificate"; import Client from "../client"; +import {MessageType} from "../../shared/types/msg"; /** * List of keys which should be sent to the client by default. diff --git a/server/plugins/inputs/action.ts b/server/plugins/inputs/action.ts index 2b7bf65d..a71f3312 100644 --- a/server/plugins/inputs/action.ts +++ b/server/plugins/inputs/action.ts @@ -1,6 +1,7 @@ import {PluginInputHandler} from "./index"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {ChanType} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["slap", "me"]; diff --git a/server/plugins/inputs/ban.ts b/server/plugins/inputs/ban.ts index b8a752b4..58036536 100644 --- a/server/plugins/inputs/ban.ts +++ b/server/plugins/inputs/ban.ts @@ -1,6 +1,7 @@ import {ChanType} from "../../models/chan"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {PluginInputHandler} from "./index"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["ban", "unban", "banlist", "kickban"]; diff --git a/server/plugins/inputs/connect.ts b/server/plugins/inputs/connect.ts index 2e1c788e..b43f2f00 100644 --- a/server/plugins/inputs/connect.ts +++ b/server/plugins/inputs/connect.ts @@ -1,5 +1,6 @@ -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {PluginInputHandler} from "./index"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["connect", "server"]; const allowDisconnected = true; diff --git a/server/plugins/inputs/ctcp.ts b/server/plugins/inputs/ctcp.ts index efb4b5e5..2f4be756 100644 --- a/server/plugins/inputs/ctcp.ts +++ b/server/plugins/inputs/ctcp.ts @@ -1,5 +1,6 @@ -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {PluginInputHandler} from "./index"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["ctcp"]; diff --git a/server/plugins/inputs/ignore.ts b/server/plugins/inputs/ignore.ts index a55e6030..fa9330e0 100644 --- a/server/plugins/inputs/ignore.ts +++ b/server/plugins/inputs/ignore.ts @@ -1,8 +1,9 @@ -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import Helper from "../../helper"; import {PluginInputHandler} from "./index"; import {IgnoreListItem} from "../../models/network"; import {ChanType, SpecialChanType} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["ignore", "unignore", "ignorelist"]; diff --git a/server/plugins/inputs/invite.ts b/server/plugins/inputs/invite.ts index ebe221a1..797a487f 100644 --- a/server/plugins/inputs/invite.ts +++ b/server/plugins/inputs/invite.ts @@ -1,6 +1,7 @@ import {PluginInputHandler} from "./index"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {ChanType} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["invite", "invitelist"]; diff --git a/server/plugins/inputs/kick.ts b/server/plugins/inputs/kick.ts index 7bfcfe06..6d09a957 100644 --- a/server/plugins/inputs/kick.ts +++ b/server/plugins/inputs/kick.ts @@ -1,6 +1,7 @@ import {PluginInputHandler} from "./index"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {ChanType} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["kick"]; diff --git a/server/plugins/inputs/mode.ts b/server/plugins/inputs/mode.ts index 4e427682..8a5ff9d4 100644 --- a/server/plugins/inputs/mode.ts +++ b/server/plugins/inputs/mode.ts @@ -1,7 +1,8 @@ import {PluginInputHandler} from "./index"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {ChanType} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["mode", "umode", "op", "deop", "hop", "dehop", "voice", "devoice"]; diff --git a/server/plugins/inputs/msg.ts b/server/plugins/inputs/msg.ts index aa384009..722b9f25 100644 --- a/server/plugins/inputs/msg.ts +++ b/server/plugins/inputs/msg.ts @@ -1,6 +1,7 @@ import {PluginInputHandler} from "./index"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import Chan, {ChanType} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["query", "msg", "say"]; diff --git a/server/plugins/inputs/mute.ts b/server/plugins/inputs/mute.ts index bf553549..ce1187d9 100644 --- a/server/plugins/inputs/mute.ts +++ b/server/plugins/inputs/mute.ts @@ -2,9 +2,10 @@ import Chan from "../../models/chan"; import Network from "../../models/network"; import {PluginInputHandler} from "./index"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import Client from "../../client"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["mute", "unmute"]; const allowDisconnected = true; diff --git a/server/plugins/inputs/nick.ts b/server/plugins/inputs/nick.ts index 645096ab..90b7bd42 100644 --- a/server/plugins/inputs/nick.ts +++ b/server/plugins/inputs/nick.ts @@ -1,6 +1,7 @@ import {PluginInputHandler} from "./index"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["nick"]; const allowDisconnected = true; diff --git a/server/plugins/inputs/part.ts b/server/plugins/inputs/part.ts index 76569889..858882d4 100644 --- a/server/plugins/inputs/part.ts +++ b/server/plugins/inputs/part.ts @@ -1,8 +1,9 @@ import {PluginInputHandler} from "./index"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import Config from "../../config"; import {ChanType, ChanState} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["close", "leave", "part"]; const allowDisconnected = true; diff --git a/server/plugins/inputs/rejoin.ts b/server/plugins/inputs/rejoin.ts index 866ce3d0..a64cd4a0 100644 --- a/server/plugins/inputs/rejoin.ts +++ b/server/plugins/inputs/rejoin.ts @@ -1,7 +1,8 @@ import {PluginInputHandler} from "./index"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {ChanType} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["cycle", "rejoin"]; diff --git a/server/plugins/inputs/topic.ts b/server/plugins/inputs/topic.ts index 843c64b1..242b170e 100644 --- a/server/plugins/inputs/topic.ts +++ b/server/plugins/inputs/topic.ts @@ -1,7 +1,8 @@ import {PluginInputHandler} from "./index"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {ChanType} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; const commands = ["topic"]; diff --git a/server/plugins/irc-events/away.ts b/server/plugins/irc-events/away.ts index 7256103f..4212d205 100644 --- a/server/plugins/irc-events/away.ts +++ b/server/plugins/irc-events/away.ts @@ -1,6 +1,7 @@ import {IrcEventHandler} from "../../client"; import {ChanType} from "../../models/chan"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/chghost.ts b/server/plugins/irc-events/chghost.ts index 04bea483..3447576e 100644 --- a/server/plugins/irc-events/chghost.ts +++ b/server/plugins/irc-events/chghost.ts @@ -1,6 +1,7 @@ import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/connection.ts b/server/plugins/irc-events/connection.ts index 300db36b..49bb4a10 100644 --- a/server/plugins/irc-events/connection.ts +++ b/server/plugins/irc-events/connection.ts @@ -3,10 +3,11 @@ import _ from "lodash"; import {IrcEventHandler} from "../../client"; import log from "../../log"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import Helper from "../../helper"; import Config from "../../config"; import {ChanType, ChanState} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/ctcp.ts b/server/plugins/irc-events/ctcp.ts index 758d09a7..672d447e 100644 --- a/server/plugins/irc-events/ctcp.ts +++ b/server/plugins/irc-events/ctcp.ts @@ -1,9 +1,10 @@ import _ from "lodash"; import {IrcEventHandler} from "../../client"; import Helper from "../../helper"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import User from "../../models/user"; import pkg from "../../../package.json"; +import {MessageType} from "../../../shared/types/msg"; const ctcpResponses = { CLIENTINFO: () => diff --git a/server/plugins/irc-events/error.ts b/server/plugins/irc-events/error.ts index b6890db0..4000f135 100644 --- a/server/plugins/irc-events/error.ts +++ b/server/plugins/irc-events/error.ts @@ -1,7 +1,8 @@ import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import Config from "../../config"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/help.ts b/server/plugins/irc-events/help.ts index 9bcaa3f6..f8442a79 100644 --- a/server/plugins/irc-events/help.ts +++ b/server/plugins/irc-events/help.ts @@ -1,5 +1,6 @@ -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {IrcEventHandler} from "../../client"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/info.ts b/server/plugins/irc-events/info.ts index 8e0f3359..7cb66d30 100644 --- a/server/plugins/irc-events/info.ts +++ b/server/plugins/irc-events/info.ts @@ -1,5 +1,6 @@ -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import {IrcEventHandler} from "../../client"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/invite.ts b/server/plugins/irc-events/invite.ts index f6dc6524..b9a73d76 100644 --- a/server/plugins/irc-events/invite.ts +++ b/server/plugins/irc-events/invite.ts @@ -1,6 +1,7 @@ import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/join.ts b/server/plugins/irc-events/join.ts index 0c758f12..2bc7e96a 100644 --- a/server/plugins/irc-events/join.ts +++ b/server/plugins/irc-events/join.ts @@ -1,7 +1,8 @@ -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import User from "../../models/user"; import type {IrcEventHandler} from "../../client"; import {ChanState} from "../../models/chan"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/kick.ts b/server/plugins/irc-events/kick.ts index 44579b63..d1b5110d 100644 --- a/server/plugins/irc-events/kick.ts +++ b/server/plugins/irc-events/kick.ts @@ -1,8 +1,9 @@ import {IrcEventHandler} from "../../client"; import {ChanState} from "../../models/chan"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import User from "../../models/user"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/link.ts b/server/plugins/irc-events/link.ts index 63a86dc0..ee0ba6bd 100644 --- a/server/plugins/irc-events/link.ts +++ b/server/plugins/irc-events/link.ts @@ -6,6 +6,7 @@ import mime from "mime-types"; import log from "../../log"; import Config from "../../config"; import {findLinksWithSchema} from "../../../shared/linkify"; +import {LinkPreview} from "../../../shared/types/msg"; import storage from "../storage"; import Client from "../../client"; import Chan from "../../models/chan"; @@ -20,23 +21,6 @@ const currentFetchPromises = new Map>(); const imageTypeRegex = /^image\/.+/; const mediaTypeRegex = /^(audio|video)\/.+/; -export type LinkPreview = { - type: string; - head: string; - body: string; - thumb: string; - size: number; - link: string; // Send original matched link to the client - shown?: boolean | null; - error?: string; - message?: string; - - media?: string; - mediaType?: string; - maxSize?: number; - thumbActualUrl?: string; -}; - export default function (client: Client, chan: Chan, msg: Msg, cleanText: string) { if (!Config.values.prefetch) { return; diff --git a/server/plugins/irc-events/message.ts b/server/plugins/irc-events/message.ts index 393f247d..41afd41e 100644 --- a/server/plugins/irc-events/message.ts +++ b/server/plugins/irc-events/message.ts @@ -1,10 +1,11 @@ -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; import LinkPrefetch from "./link"; import {cleanIrcMessage} from "../../../shared/irc"; import Helper from "../../helper"; import {IrcEventHandler} from "../../client"; import Chan, {ChanType} from "../../models/chan"; import User from "../../models/user"; +import {MessageType} from "../../../shared/types/msg"; const nickRegExp = /(?:\x03[0-9]{1,2}(?:,[0-9]{1,2})?)?([\w[\]\\`^{|}-]+)/g; diff --git a/server/plugins/irc-events/mode.ts b/server/plugins/irc-events/mode.ts index b1f65845..79126d87 100644 --- a/server/plugins/irc-events/mode.ts +++ b/server/plugins/irc-events/mode.ts @@ -1,7 +1,8 @@ import _ from "lodash"; import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/modelist.ts b/server/plugins/irc-events/modelist.ts index 2c429bf5..f91a093b 100644 --- a/server/plugins/irc-events/modelist.ts +++ b/server/plugins/irc-events/modelist.ts @@ -1,7 +1,8 @@ import {IrcEventHandler} from "../../client"; import {SpecialChanType, ChanType} from "../../models/chan"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/motd.ts b/server/plugins/irc-events/motd.ts index cffce33b..0076570a 100644 --- a/server/plugins/irc-events/motd.ts +++ b/server/plugins/irc-events/motd.ts @@ -1,6 +1,7 @@ import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/nick.ts b/server/plugins/irc-events/nick.ts index 51b3f81f..99421653 100644 --- a/server/plugins/irc-events/nick.ts +++ b/server/plugins/irc-events/nick.ts @@ -1,6 +1,7 @@ import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/part.ts b/server/plugins/irc-events/part.ts index 6323ad05..5f0e419d 100644 --- a/server/plugins/irc-events/part.ts +++ b/server/plugins/irc-events/part.ts @@ -1,6 +1,7 @@ import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/quit.ts b/server/plugins/irc-events/quit.ts index 7fd637d7..74393454 100644 --- a/server/plugins/irc-events/quit.ts +++ b/server/plugins/irc-events/quit.ts @@ -1,6 +1,7 @@ import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/sasl.ts b/server/plugins/irc-events/sasl.ts index b486cace..8211d1e3 100644 --- a/server/plugins/irc-events/sasl.ts +++ b/server/plugins/irc-events/sasl.ts @@ -1,6 +1,7 @@ import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/topic.ts b/server/plugins/irc-events/topic.ts index c5bc6d5b..ba9f9de5 100644 --- a/server/plugins/irc-events/topic.ts +++ b/server/plugins/irc-events/topic.ts @@ -1,6 +1,7 @@ import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/unhandled.ts b/server/plugins/irc-events/unhandled.ts index 6a4997f4..98dd9f01 100644 --- a/server/plugins/irc-events/unhandled.ts +++ b/server/plugins/irc-events/unhandled.ts @@ -1,6 +1,7 @@ import {IrcEventHandler} from "../../client"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/irc-events/whois.ts b/server/plugins/irc-events/whois.ts index 67fdf3ff..97cdaacb 100644 --- a/server/plugins/irc-events/whois.ts +++ b/server/plugins/irc-events/whois.ts @@ -1,7 +1,8 @@ import {IrcEventHandler} from "../../client"; import {ChanType} from "../../models/chan"; -import Msg, {MessageType} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType} from "../../../shared/types/msg"; export default function (irc, network) { const client = this; diff --git a/server/plugins/messageStorage/text.ts b/server/plugins/messageStorage/text.ts index 51214347..20ca8ac9 100644 --- a/server/plugins/messageStorage/text.ts +++ b/server/plugins/messageStorage/text.ts @@ -6,8 +6,9 @@ import filenamify from "filenamify"; import Config from "../../config"; import {MessageStorage} from "./types"; import Channel from "../../models/chan"; -import {Message, MessageType} from "../../models/msg"; +import {Message} from "../../models/msg"; import Network from "../../models/network"; +import {MessageType} from "../../../shared/types/msg"; class TextFileMessageStorage implements MessageStorage { isEnabled: boolean; diff --git a/server/plugins/messageStorage/types.d.ts b/server/plugins/messageStorage/types.d.ts index 7e17ba54..681d0353 100644 --- a/server/plugins/messageStorage/types.d.ts +++ b/server/plugins/messageStorage/types.d.ts @@ -4,7 +4,7 @@ import {Channel} from "../../models/channel"; import {Message} from "../../models/message"; import {Network} from "../../models/network"; import Client from "../../client"; -import type {MessageType} from "../../models/msg"; +import type {MessageType} from "../../../shared/types/msg"; export type DeletionRequest = { olderThanDays: number; diff --git a/server/plugins/packages/publicClient.ts b/server/plugins/packages/publicClient.ts index 109b1c4d..5774b006 100644 --- a/server/plugins/packages/publicClient.ts +++ b/server/plugins/packages/publicClient.ts @@ -1,7 +1,8 @@ import {PackageInfo} from "./index"; import Client from "../../client"; import Chan from "../../models/chan"; -import Msg, {MessageType, UserInMessage} from "../../models/msg"; +import Msg from "../../models/msg"; +import {MessageType, UserInMessage} from "../../../shared/types/msg"; export default class PublicClient { private client: Client; diff --git a/server/server.ts b/server/server.ts index 38987218..562d16a7 100644 --- a/server/server.ts +++ b/server/server.ts @@ -31,7 +31,7 @@ import type { ServerToClientEvents, InterServerEvents, SocketData, -} from "./types/socket-events"; +} from "../shared/types/socket-events"; type ServerOptions = { dev: boolean; diff --git a/server/storageCleaner.ts b/server/storageCleaner.ts index cad486cc..067452d7 100644 --- a/server/storageCleaner.ts +++ b/server/storageCleaner.ts @@ -1,8 +1,8 @@ import SqliteMessageStorage from "./plugins/messageStorage/sqlite"; -import {MessageType} from "./models/msg"; import Config from "./config"; import {DeletionRequest} from "./plugins/messageStorage/types"; import log from "./log"; +import {MessageType} from "../shared/types/msg"; const status_types = [ MessageType.AWAY, diff --git a/server/tsconfig.json b/server/tsconfig.json index 06045646..86ad13ec 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../tsconfig.base.json" /* Path to base configuration file to inherit from. Requires TypeScript version 2.1 or later. */, "include": [ - "**/*", + ".", "../shared/" ] /* Specifies a list of glob patterns that match files to be included in compilation. If no 'files' or 'include' property is present in a tsconfig.json, the compiler defaults to including all files in the containing directory and subdirectories except those specified by 'exclude'. Requires TypeScript version 2.0 or later. */, "files": [ diff --git a/server/types/index.d.ts b/server/types/index.d.ts index 6ca0976a..09595928 100644 --- a/server/types/index.d.ts +++ b/server/types/index.d.ts @@ -1,2 +1 @@ import "./modules"; -import "./socket-events"; diff --git a/shared/types/msg.ts b/shared/types/msg.ts new file mode 100644 index 00000000..07ebfa20 --- /dev/null +++ b/shared/types/msg.ts @@ -0,0 +1,98 @@ +export enum MessageType { + UNHANDLED = "unhandled", + ACTION = "action", + AWAY = "away", + BACK = "back", + ERROR = "error", + INVITE = "invite", + JOIN = "join", + KICK = "kick", + LOGIN = "login", + LOGOUT = "logout", + MESSAGE = "message", + MODE = "mode", + MODE_CHANNEL = "mode_channel", + MODE_USER = "mode_user", // RPL_UMODEIS + MONOSPACE_BLOCK = "monospace_block", + NICK = "nick", + NOTICE = "notice", + PART = "part", + QUIT = "quit", + CTCP = "ctcp", + CTCP_REQUEST = "ctcp_request", + CHGHOST = "chghost", + TOPIC = "topic", + TOPIC_SET_BY = "topic_set_by", + WHOIS = "whois", + RAW = "raw", + PLUGIN = "plugin", + WALLOPS = "wallops", +} + +export type SharedUser = { + modes: string[]; + // Users in the channel have only one mode assigned + mode: string; + away: string; + nick: string; + lastMessage: number; +}; + +export type UserInMessage = Partial & { + mode: string; +}; + +export type LinkPreview = { + type: string; + head: string; + body: string; + thumb: string; + size: number; + link: string; // Send original matched link to the client + shown?: boolean | null; + error?: string; + message?: string; + + media?: string; + mediaType?: string; + maxSize?: number; + thumbActualUrl?: string; +}; + +export type SharedMsg = { + from?: UserInMessage; + id?: number; + previews?: LinkPreview[]; + text?: string; + type?: MessageType; + self?: boolean; + time?: Date; + hostmask?: string; + target?: UserInMessage; + // TODO: new_nick is only on MessageType.NICK, + // we should probably make Msgs that extend this class and use those + // throughout. I'll leave any similar fields below. + new_nick?: string; + highlight?: boolean; + showInActive?: boolean; + new_ident?: string; + new_host?: string; + ctcpMessage?: string; + command?: string; + invitedYou?: boolean; + gecos?: string; + account?: boolean; + + // these are all just for error: + error?: string; + nick?: string; + channel?: string; + reason?: string; + + raw_modes?: any; + when?: Date; + whois?: any; + users?: UserInMessage[] | string[]; + statusmsgGroup?: string; + params?: string[]; +}; diff --git a/server/types/socket-events.d.ts b/shared/types/socket-events.d.ts similarity index 100% rename from server/types/socket-events.d.ts rename to shared/types/socket-events.d.ts