@lordbex/thelounge 4.4.3-blowfish
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.thelounge_home +1 -0
- package/LICENSE +22 -0
- package/README.md +95 -0
- package/client/index.html.tpl +69 -0
- package/dist/defaults/config.js +465 -0
- package/dist/package.json +174 -0
- package/dist/server/client.js +678 -0
- package/dist/server/clientManager.js +220 -0
- package/dist/server/command-line/index.js +85 -0
- package/dist/server/command-line/install.js +123 -0
- package/dist/server/command-line/outdated.js +30 -0
- package/dist/server/command-line/start.js +34 -0
- package/dist/server/command-line/storage.js +103 -0
- package/dist/server/command-line/uninstall.js +40 -0
- package/dist/server/command-line/upgrade.js +64 -0
- package/dist/server/command-line/users/add.js +67 -0
- package/dist/server/command-line/users/edit.js +39 -0
- package/dist/server/command-line/users/index.js +17 -0
- package/dist/server/command-line/users/list.js +53 -0
- package/dist/server/command-line/users/remove.js +37 -0
- package/dist/server/command-line/users/reset.js +64 -0
- package/dist/server/command-line/utils.js +177 -0
- package/dist/server/config.js +138 -0
- package/dist/server/helper.js +161 -0
- package/dist/server/identification.js +139 -0
- package/dist/server/index.js +3 -0
- package/dist/server/log.js +35 -0
- package/dist/server/models/chan.js +275 -0
- package/dist/server/models/msg.js +92 -0
- package/dist/server/models/network.js +546 -0
- package/dist/server/models/prefix.js +31 -0
- package/dist/server/models/user.js +42 -0
- package/dist/server/plugins/auth/ldap.js +188 -0
- package/dist/server/plugins/auth/local.js +41 -0
- package/dist/server/plugins/auth.js +70 -0
- package/dist/server/plugins/changelog.js +103 -0
- package/dist/server/plugins/clientCertificate.js +115 -0
- package/dist/server/plugins/dev-server.js +33 -0
- package/dist/server/plugins/inputs/action.js +54 -0
- package/dist/server/plugins/inputs/away.js +20 -0
- package/dist/server/plugins/inputs/ban.js +45 -0
- package/dist/server/plugins/inputs/blow.js +44 -0
- package/dist/server/plugins/inputs/connect.js +41 -0
- package/dist/server/plugins/inputs/ctcp.js +29 -0
- package/dist/server/plugins/inputs/disconnect.js +15 -0
- package/dist/server/plugins/inputs/ignore.js +74 -0
- package/dist/server/plugins/inputs/ignorelist.js +50 -0
- package/dist/server/plugins/inputs/index.js +105 -0
- package/dist/server/plugins/inputs/invite.js +31 -0
- package/dist/server/plugins/inputs/kick.js +26 -0
- package/dist/server/plugins/inputs/kill.js +13 -0
- package/dist/server/plugins/inputs/list.js +12 -0
- package/dist/server/plugins/inputs/mode.js +55 -0
- package/dist/server/plugins/inputs/msg.js +106 -0
- package/dist/server/plugins/inputs/mute.js +56 -0
- package/dist/server/plugins/inputs/nick.js +55 -0
- package/dist/server/plugins/inputs/notice.js +42 -0
- package/dist/server/plugins/inputs/part.js +46 -0
- package/dist/server/plugins/inputs/quit.js +27 -0
- package/dist/server/plugins/inputs/raw.js +13 -0
- package/dist/server/plugins/inputs/rejoin.js +25 -0
- package/dist/server/plugins/inputs/topic.js +24 -0
- package/dist/server/plugins/inputs/whois.js +19 -0
- package/dist/server/plugins/irc-events/away.js +59 -0
- package/dist/server/plugins/irc-events/cap.js +62 -0
- package/dist/server/plugins/irc-events/chghost.js +29 -0
- package/dist/server/plugins/irc-events/connection.js +152 -0
- package/dist/server/plugins/irc-events/ctcp.js +72 -0
- package/dist/server/plugins/irc-events/error.js +80 -0
- package/dist/server/plugins/irc-events/help.js +21 -0
- package/dist/server/plugins/irc-events/info.js +21 -0
- package/dist/server/plugins/irc-events/invite.js +27 -0
- package/dist/server/plugins/irc-events/join.js +53 -0
- package/dist/server/plugins/irc-events/kick.js +39 -0
- package/dist/server/plugins/irc-events/link.js +442 -0
- package/dist/server/plugins/irc-events/list.js +47 -0
- package/dist/server/plugins/irc-events/message.js +187 -0
- package/dist/server/plugins/irc-events/mode.js +124 -0
- package/dist/server/plugins/irc-events/modelist.js +67 -0
- package/dist/server/plugins/irc-events/motd.js +29 -0
- package/dist/server/plugins/irc-events/names.js +21 -0
- package/dist/server/plugins/irc-events/nick.js +45 -0
- package/dist/server/plugins/irc-events/part.js +35 -0
- package/dist/server/plugins/irc-events/quit.js +32 -0
- package/dist/server/plugins/irc-events/sasl.js +26 -0
- package/dist/server/plugins/irc-events/topic.js +42 -0
- package/dist/server/plugins/irc-events/unhandled.js +31 -0
- package/dist/server/plugins/irc-events/welcome.js +22 -0
- package/dist/server/plugins/irc-events/whois.js +57 -0
- package/dist/server/plugins/messageStorage/sqlite.js +454 -0
- package/dist/server/plugins/messageStorage/text.js +124 -0
- package/dist/server/plugins/packages/index.js +200 -0
- package/dist/server/plugins/packages/publicClient.js +66 -0
- package/dist/server/plugins/packages/themes.js +61 -0
- package/dist/server/plugins/storage.js +88 -0
- package/dist/server/plugins/sts.js +85 -0
- package/dist/server/plugins/uploader.js +267 -0
- package/dist/server/plugins/webpush.js +99 -0
- package/dist/server/server.js +857 -0
- package/dist/server/storageCleaner.js +131 -0
- package/dist/server/utils/fish.js +432 -0
- package/dist/shared/irc.js +19 -0
- package/dist/shared/linkify.js +81 -0
- package/dist/shared/types/chan.js +22 -0
- package/dist/shared/types/changelog.js +2 -0
- package/dist/shared/types/config.js +2 -0
- package/dist/shared/types/mention.js +2 -0
- package/dist/shared/types/msg.js +34 -0
- package/dist/shared/types/network.js +2 -0
- package/dist/shared/types/storage.js +2 -0
- package/dist/shared/types/user.js +2 -0
- package/dist/webpack.config.js +224 -0
- package/index.js +38 -0
- package/package.json +174 -0
- package/public/audio/pop.wav +0 -0
- package/public/css/style.css +12 -0
- package/public/css/style.css.map +1 -0
- package/public/favicon.ico +0 -0
- package/public/fonts/fa-solid-900.woff +0 -0
- package/public/fonts/fa-solid-900.woff2 +0 -0
- package/public/img/favicon-alerted.ico +0 -0
- package/public/img/icon-alerted-black-transparent-bg-72x72px.png +0 -0
- package/public/img/icon-alerted-grey-bg-192x192px.png +0 -0
- package/public/img/icon-black-transparent-bg.svg +1 -0
- package/public/img/logo-grey-bg-120x120px.png +0 -0
- package/public/img/logo-grey-bg-152x152px.png +0 -0
- package/public/img/logo-grey-bg-167x167px.png +0 -0
- package/public/img/logo-grey-bg-180x180px.png +0 -0
- package/public/img/logo-grey-bg-192x192px.png +0 -0
- package/public/img/logo-grey-bg-512x512px.png +0 -0
- package/public/img/logo-grey-bg.svg +1 -0
- package/public/img/logo-horizontal-transparent-bg-inverted.svg +1 -0
- package/public/img/logo-horizontal-transparent-bg.svg +1 -0
- package/public/img/logo-transparent-bg-inverted.svg +1 -0
- package/public/img/logo-transparent-bg.svg +1 -0
- package/public/img/logo-vertical-transparent-bg-inverted.svg +1 -0
- package/public/img/logo-vertical-transparent-bg.svg +1 -0
- package/public/js/bundle.js +2 -0
- package/public/js/bundle.js.map +1 -0
- package/public/js/bundle.vendor.js +3 -0
- package/public/js/bundle.vendor.js.LICENSE.txt +18 -0
- package/public/js/bundle.vendor.js.map +1 -0
- package/public/js/loading-error-handlers.js +1 -0
- package/public/robots.txt +2 -0
- package/public/service-worker.js +1 -0
- package/public/thelounge.webmanifest +53 -0
- package/public/themes/default.css +35 -0
- package/public/themes/morning.css +183 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
7
|
+
const helper_1 = __importDefault(require("../../helper"));
|
|
8
|
+
const msg_1 = __importDefault(require("../../models/msg"));
|
|
9
|
+
const user_1 = __importDefault(require("../../models/user"));
|
|
10
|
+
const package_json_1 = __importDefault(require("../../../package.json"));
|
|
11
|
+
const msg_2 = require("../../../shared/types/msg");
|
|
12
|
+
const ctcpResponses = {
|
|
13
|
+
CLIENTINFO: () => Object.getOwnPropertyNames(ctcpResponses)
|
|
14
|
+
.filter((key) => key !== "CLIENTINFO" && typeof ctcpResponses[key] === "function")
|
|
15
|
+
.join(" "),
|
|
16
|
+
PING: ({ message }) => message.substring(5),
|
|
17
|
+
SOURCE: () => package_json_1.default.repository.url,
|
|
18
|
+
VERSION: () => package_json_1.default.name + " -- " + package_json_1.default.homepage,
|
|
19
|
+
};
|
|
20
|
+
exports.default = (function (irc, network) {
|
|
21
|
+
const client = this;
|
|
22
|
+
const lobby = network.getLobby();
|
|
23
|
+
irc.on("ctcp response", function (data) {
|
|
24
|
+
const shouldIgnore = network.ignoreList.some(function (entry) {
|
|
25
|
+
return helper_1.default.compareHostmask(entry, data);
|
|
26
|
+
});
|
|
27
|
+
if (shouldIgnore) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
let chan = network.getChannel(data.nick);
|
|
31
|
+
if (typeof chan === "undefined") {
|
|
32
|
+
chan = lobby;
|
|
33
|
+
}
|
|
34
|
+
const msg = new msg_1.default({
|
|
35
|
+
type: msg_2.MessageType.CTCP,
|
|
36
|
+
time: data.time,
|
|
37
|
+
from: chan.getUser(data.nick),
|
|
38
|
+
ctcpMessage: data.message,
|
|
39
|
+
});
|
|
40
|
+
chan.pushMessage(client, msg, true);
|
|
41
|
+
});
|
|
42
|
+
// Limit requests to a rate of one per second max
|
|
43
|
+
irc.on("ctcp request", lodash_1.default.throttle((data) => {
|
|
44
|
+
// Ignore echoed ctcp requests that aren't targeted at us
|
|
45
|
+
// See https://github.com/kiwiirc/irc-framework/issues/225
|
|
46
|
+
if (data.nick === irc.user.nick &&
|
|
47
|
+
data.nick !== data.target &&
|
|
48
|
+
network.irc.network.cap.isEnabled("echo-message")) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const shouldIgnore = network.ignoreList.some(function (entry) {
|
|
52
|
+
return helper_1.default.compareHostmask(entry, data);
|
|
53
|
+
});
|
|
54
|
+
if (shouldIgnore) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const target = data.from_server ? data.hostname : data.nick;
|
|
58
|
+
const response = ctcpResponses[data.type];
|
|
59
|
+
if (response) {
|
|
60
|
+
irc.ctcpResponse(target, data.type, response(data));
|
|
61
|
+
}
|
|
62
|
+
// Let user know someone is making a CTCP request against their nick
|
|
63
|
+
const msg = new msg_1.default({
|
|
64
|
+
type: msg_2.MessageType.CTCP_REQUEST,
|
|
65
|
+
time: data.time,
|
|
66
|
+
from: new user_1.default({ nick: target }),
|
|
67
|
+
hostmask: data.ident + "@" + data.hostname,
|
|
68
|
+
ctcpMessage: data.message,
|
|
69
|
+
});
|
|
70
|
+
lobby.pushMessage(client, msg, true);
|
|
71
|
+
}, 1000, { trailing: false }));
|
|
72
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const msg_1 = __importDefault(require("../../models/msg"));
|
|
7
|
+
const config_1 = __importDefault(require("../../config"));
|
|
8
|
+
const msg_2 = require("../../../shared/types/msg");
|
|
9
|
+
exports.default = (function (irc, network) {
|
|
10
|
+
const client = this;
|
|
11
|
+
irc.on("irc error", function (data) {
|
|
12
|
+
const msg = new msg_1.default({
|
|
13
|
+
type: msg_2.MessageType.ERROR,
|
|
14
|
+
error: data.error,
|
|
15
|
+
showInActive: true,
|
|
16
|
+
nick: data.nick,
|
|
17
|
+
channel: data.channel,
|
|
18
|
+
reason: data.reason,
|
|
19
|
+
command: data.command,
|
|
20
|
+
});
|
|
21
|
+
let target = network.getLobby();
|
|
22
|
+
// If this error is channel specific and a channel
|
|
23
|
+
// with this name exists, put this error in that channel
|
|
24
|
+
if (data.channel) {
|
|
25
|
+
const channel = network.getChannel(data.channel);
|
|
26
|
+
if (typeof channel !== "undefined") {
|
|
27
|
+
target = channel;
|
|
28
|
+
msg.showInActive = false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
target.pushMessage(client, msg, true);
|
|
32
|
+
});
|
|
33
|
+
irc.on("nick in use", function (data) {
|
|
34
|
+
let message = data.nick + ": " + (data.reason || "Nickname is already in use.");
|
|
35
|
+
if (irc.connection.registered === false && !config_1.default.values.public) {
|
|
36
|
+
message += " An attempt to use it will be made when this nick quits.";
|
|
37
|
+
// Clients usually get nick in use on connect when reconnecting to a network
|
|
38
|
+
// after a network failure (like ping timeout), and as a result of that,
|
|
39
|
+
// TL will append a random number to the nick.
|
|
40
|
+
// keepNick will try to set the original nick name back if it sees a QUIT for that nick.
|
|
41
|
+
network.keepNick = irc.user.nick;
|
|
42
|
+
}
|
|
43
|
+
const lobby = network.getLobby();
|
|
44
|
+
const msg = new msg_1.default({
|
|
45
|
+
type: msg_2.MessageType.ERROR,
|
|
46
|
+
text: message,
|
|
47
|
+
showInActive: true,
|
|
48
|
+
});
|
|
49
|
+
lobby.pushMessage(client, msg, true);
|
|
50
|
+
if (irc.connection.registered === false) {
|
|
51
|
+
const nickLen = parseInt(network.irc.network.options.NICKLEN, 10) || 16;
|
|
52
|
+
const random = (data.nick || irc.user.nick) + Math.floor(Math.random() * 10);
|
|
53
|
+
// Safeguard nick changes up to allowed length
|
|
54
|
+
// Some servers may send "nick in use" error even for randomly generated nicks
|
|
55
|
+
if (random.length <= nickLen) {
|
|
56
|
+
irc.changeNick(random);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
client.emit("nick", {
|
|
60
|
+
network: network.uuid,
|
|
61
|
+
nick: irc.user.nick,
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
irc.on("nick invalid", function (data) {
|
|
65
|
+
const lobby = network.getLobby();
|
|
66
|
+
const msg = new msg_1.default({
|
|
67
|
+
type: msg_2.MessageType.ERROR,
|
|
68
|
+
text: data.nick + ": " + (data.reason || "Nickname is invalid."),
|
|
69
|
+
showInActive: true,
|
|
70
|
+
});
|
|
71
|
+
lobby.pushMessage(client, msg, true);
|
|
72
|
+
if (irc.connection.registered === false) {
|
|
73
|
+
irc.changeNick(config_1.default.getDefaultNick());
|
|
74
|
+
}
|
|
75
|
+
client.emit("nick", {
|
|
76
|
+
network: network.uuid,
|
|
77
|
+
nick: irc.user.nick,
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const msg_1 = __importDefault(require("../../models/msg"));
|
|
7
|
+
const msg_2 = require("../../../shared/types/msg");
|
|
8
|
+
exports.default = (function (irc, network) {
|
|
9
|
+
const client = this;
|
|
10
|
+
irc.on("help", function (data) {
|
|
11
|
+
const lobby = network.getLobby();
|
|
12
|
+
if (data.help) {
|
|
13
|
+
const msg = new msg_1.default({
|
|
14
|
+
type: msg_2.MessageType.MONOSPACE_BLOCK,
|
|
15
|
+
command: "help",
|
|
16
|
+
text: data.help,
|
|
17
|
+
});
|
|
18
|
+
lobby.pushMessage(client, msg, true);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const msg_1 = __importDefault(require("../../models/msg"));
|
|
7
|
+
const msg_2 = require("../../../shared/types/msg");
|
|
8
|
+
exports.default = (function (irc, network) {
|
|
9
|
+
const client = this;
|
|
10
|
+
irc.on("info", function (data) {
|
|
11
|
+
const lobby = network.getLobby();
|
|
12
|
+
if (data.info) {
|
|
13
|
+
const msg = new msg_1.default({
|
|
14
|
+
type: msg_2.MessageType.MONOSPACE_BLOCK,
|
|
15
|
+
command: "info",
|
|
16
|
+
text: data.info,
|
|
17
|
+
});
|
|
18
|
+
lobby.pushMessage(client, msg, true);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const msg_1 = __importDefault(require("../../models/msg"));
|
|
7
|
+
const msg_2 = require("../../../shared/types/msg");
|
|
8
|
+
exports.default = (function (irc, network) {
|
|
9
|
+
const client = this;
|
|
10
|
+
irc.on("invite", function (data) {
|
|
11
|
+
let chan = network.getChannel(data.channel);
|
|
12
|
+
if (typeof chan === "undefined") {
|
|
13
|
+
chan = network.getLobby();
|
|
14
|
+
}
|
|
15
|
+
const invitedYou = data.invited === irc.user.nick;
|
|
16
|
+
const msg = new msg_1.default({
|
|
17
|
+
type: msg_2.MessageType.INVITE,
|
|
18
|
+
time: data.time,
|
|
19
|
+
from: chan.getUser(data.nick),
|
|
20
|
+
target: chan.getUser(data.invited),
|
|
21
|
+
channel: data.channel,
|
|
22
|
+
highlight: invitedYou,
|
|
23
|
+
invitedYou: invitedYou,
|
|
24
|
+
});
|
|
25
|
+
chan.pushMessage(client, msg);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const msg_1 = __importDefault(require("../../models/msg"));
|
|
7
|
+
const user_1 = __importDefault(require("../../models/user"));
|
|
8
|
+
const msg_2 = require("../../../shared/types/msg");
|
|
9
|
+
const chan_1 = require("../../../shared/types/chan");
|
|
10
|
+
exports.default = (function (irc, network) {
|
|
11
|
+
const client = this;
|
|
12
|
+
irc.on("join", function (data) {
|
|
13
|
+
let chan = network.getChannel(data.channel);
|
|
14
|
+
if (typeof chan === "undefined") {
|
|
15
|
+
chan = client.createChannel({
|
|
16
|
+
name: data.channel,
|
|
17
|
+
state: chan_1.ChanState.JOINED,
|
|
18
|
+
});
|
|
19
|
+
client.emit("join", {
|
|
20
|
+
network: network.uuid,
|
|
21
|
+
chan: chan.getFilteredClone(true),
|
|
22
|
+
shouldOpen: false,
|
|
23
|
+
index: network.addChannel(chan),
|
|
24
|
+
});
|
|
25
|
+
client.save();
|
|
26
|
+
chan.loadMessages(client, network);
|
|
27
|
+
// Request channels' modes
|
|
28
|
+
network.irc.raw("MODE", chan.name);
|
|
29
|
+
}
|
|
30
|
+
else if (data.nick === irc.user.nick) {
|
|
31
|
+
chan.state = chan_1.ChanState.JOINED;
|
|
32
|
+
client.emit("channel:state", {
|
|
33
|
+
chan: chan.id,
|
|
34
|
+
state: chan.state,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const user = new user_1.default({ nick: data.nick });
|
|
38
|
+
const msg = new msg_1.default({
|
|
39
|
+
time: data.time,
|
|
40
|
+
from: user,
|
|
41
|
+
hostmask: data.ident + "@" + data.hostname,
|
|
42
|
+
gecos: data.gecos,
|
|
43
|
+
account: data.account,
|
|
44
|
+
type: msg_2.MessageType.JOIN,
|
|
45
|
+
self: data.nick === irc.user.nick,
|
|
46
|
+
});
|
|
47
|
+
chan.pushMessage(client, msg);
|
|
48
|
+
chan.setUser(new user_1.default({ nick: data.nick }));
|
|
49
|
+
client.emit("users", {
|
|
50
|
+
chan: chan.id,
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const msg_1 = __importDefault(require("../../models/msg"));
|
|
7
|
+
const msg_2 = require("../../../shared/types/msg");
|
|
8
|
+
const chan_1 = require("../../../shared/types/chan");
|
|
9
|
+
exports.default = (function (irc, network) {
|
|
10
|
+
const client = this;
|
|
11
|
+
irc.on("kick", function (data) {
|
|
12
|
+
const chan = network.getChannel(data.channel);
|
|
13
|
+
if (typeof chan === "undefined") {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const user = chan.getUser(data.kicked);
|
|
17
|
+
const msg = new msg_1.default({
|
|
18
|
+
type: msg_2.MessageType.KICK,
|
|
19
|
+
time: data.time,
|
|
20
|
+
from: chan.getUser(data.nick),
|
|
21
|
+
target: user,
|
|
22
|
+
text: data.message || "",
|
|
23
|
+
highlight: data.kicked === irc.user.nick,
|
|
24
|
+
self: data.nick === irc.user.nick,
|
|
25
|
+
});
|
|
26
|
+
chan.pushMessage(client, msg);
|
|
27
|
+
if (data.kicked === irc.user.nick) {
|
|
28
|
+
chan.users = new Map();
|
|
29
|
+
chan.state = chan_1.ChanState.PARTED;
|
|
30
|
+
client.emit("channel:state", {
|
|
31
|
+
chan: chan.id,
|
|
32
|
+
state: chan.state,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
chan.removeUser(user);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|