s/var/let/
This commit is contained in:
@@ -15,9 +15,9 @@ function isDigit(ch) {
|
||||
}
|
||||
|
||||
export function strip(text) {
|
||||
var out = "";
|
||||
for (var i = 0; i < text.length; i++) {
|
||||
var ch = text[i];
|
||||
let out = "";
|
||||
for (let i = 0; i < text.length; i++) {
|
||||
let ch = text[i];
|
||||
switch (ch) {
|
||||
case BOLD:
|
||||
case ITALIC:
|
||||
|
||||
107
lib/client.js
107
lib/client.js
@@ -21,7 +21,7 @@ const permanentCaps = [
|
||||
|
||||
const RECONNECT_DELAY_SEC = 10;
|
||||
|
||||
var lastLabel = 0;
|
||||
let lastLabel = 0;
|
||||
|
||||
export default class Client extends EventTarget {
|
||||
static Status = {
|
||||
@@ -65,7 +65,7 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
reconnect() {
|
||||
var autoReconnect = this.autoReconnect;
|
||||
let autoReconnect = this.autoReconnect;
|
||||
this.disconnect();
|
||||
this.autoReconnect = autoReconnect;
|
||||
|
||||
@@ -150,7 +150,7 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
handleMessage(event) {
|
||||
var msg = irc.parseMessage(event.data);
|
||||
let msg = irc.parseMessage(event.data);
|
||||
console.debug("Received:", msg);
|
||||
|
||||
// If the prefix is missing, assume it's coming from the server on the
|
||||
@@ -159,7 +159,7 @@ export default class Client extends EventTarget {
|
||||
msg.prefix = this.serverPrefix;
|
||||
}
|
||||
|
||||
var msgBatch = null;
|
||||
let msgBatch = null;
|
||||
if (msg.tags["batch"]) {
|
||||
msgBatch = this.batches.get(msg.tags["batch"]);
|
||||
if (msgBatch) {
|
||||
@@ -167,7 +167,7 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
}
|
||||
|
||||
var deleteBatch = null;
|
||||
let deleteBatch = null;
|
||||
switch (msg.command) {
|
||||
case irc.RPL_WELCOME:
|
||||
if (this.params.saslPlain && this.availableCaps["sasl"] === undefined) {
|
||||
@@ -184,8 +184,8 @@ export default class Client extends EventTarget {
|
||||
this.setStatus(Client.Status.REGISTERED);
|
||||
break;
|
||||
case irc.RPL_ISUPPORT:
|
||||
var tokens = msg.params.slice(1, -1);
|
||||
var changed = irc.parseISUPPORT(tokens, this.isupport);
|
||||
let tokens = msg.params.slice(1, -1);
|
||||
let changed = irc.parseISUPPORT(tokens, this.isupport);
|
||||
if (changed.indexOf("CASEMAPPING") >= 0) {
|
||||
this.setCaseMapping(this.isupport.get("CASEMAPPING"));
|
||||
}
|
||||
@@ -225,7 +225,7 @@ export default class Client extends EventTarget {
|
||||
case irc.RPL_WHOISIDLE:
|
||||
case irc.RPL_WHOISCHANNELS:
|
||||
case irc.RPL_ENDOFWHOIS:
|
||||
var nick = msg.params[1];
|
||||
let nick = msg.params[1];
|
||||
if (!this.whoisDB.has(nick)) {
|
||||
this.whoisDB.set(nick, {});
|
||||
}
|
||||
@@ -243,16 +243,16 @@ export default class Client extends EventTarget {
|
||||
this.send({ command: "PONG", params: [msg.params[0]] });
|
||||
break;
|
||||
case "NICK":
|
||||
var newNick = msg.params[0];
|
||||
let newNick = msg.params[0];
|
||||
if (msg.prefix.name == this.nick) {
|
||||
this.nick = newNick;
|
||||
}
|
||||
break;
|
||||
case "BATCH":
|
||||
var enter = msg.params[0].startsWith("+");
|
||||
var name = msg.params[0].slice(1);
|
||||
let enter = msg.params[0].startsWith("+");
|
||||
let name = msg.params[0].slice(1);
|
||||
if (enter) {
|
||||
var batch = {
|
||||
let batch = {
|
||||
name,
|
||||
type: msg.params[1],
|
||||
params: msg.params.slice(2),
|
||||
@@ -302,8 +302,8 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
who(mask) {
|
||||
var msg = { command: "WHO", params: [mask] };
|
||||
var l = [];
|
||||
let msg = { command: "WHO", params: [mask] };
|
||||
let l = [];
|
||||
return this.roundtrip(msg, (msg) => {
|
||||
switch (msg.command) {
|
||||
case irc.RPL_WHOREPLY:
|
||||
@@ -320,18 +320,19 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
whois(target) {
|
||||
var targetCM = this.cm(target);
|
||||
var msg = { command: "WHOIS", params: [target] };
|
||||
let targetCM = this.cm(target);
|
||||
let msg = { command: "WHOIS", params: [target] };
|
||||
return this.roundtrip(msg, (msg) => {
|
||||
let nick;
|
||||
switch (msg.command) {
|
||||
case irc.RPL_ENDOFWHOIS:
|
||||
var nick = msg.params[1];
|
||||
nick = msg.params[1];
|
||||
if (this.cm(nick) === targetCM) {
|
||||
return this.whoisDB.get(nick);
|
||||
}
|
||||
break;
|
||||
case irc.ERR_NOSUCHNICK:
|
||||
var nick = msg.params[1];
|
||||
nick = msg.params[1];
|
||||
if (this.cm(nick) === targetCM) {
|
||||
throw msg;
|
||||
}
|
||||
@@ -341,11 +342,11 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
addAvailableCaps(s) {
|
||||
var l = s.split(" ");
|
||||
let l = s.split(" ");
|
||||
l.forEach((s) => {
|
||||
var parts = s.split("=");
|
||||
var k = parts[0].toLowerCase();
|
||||
var v = "";
|
||||
let parts = s.split("=");
|
||||
let k = parts[0].toLowerCase();
|
||||
let v = "";
|
||||
if (parts.length > 1) {
|
||||
v = parts[1];
|
||||
}
|
||||
@@ -354,7 +355,7 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
supportsSASL(mech) {
|
||||
var saslCap = this.availableCaps["sasl"];
|
||||
let saslCap = this.availableCaps["sasl"];
|
||||
if (saslCap === undefined) {
|
||||
return false;
|
||||
}
|
||||
@@ -362,7 +363,7 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
requestCaps(extra) {
|
||||
var reqCaps = extra || [];
|
||||
let reqCaps = extra || [];
|
||||
|
||||
permanentCaps.forEach((cap) => {
|
||||
if (this.availableCaps[cap] !== undefined && !this.enabledCaps[cap]) {
|
||||
@@ -376,16 +377,16 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
handleCap(msg) {
|
||||
var subCmd = msg.params[1];
|
||||
var args = msg.params.slice(2);
|
||||
let subCmd = msg.params[1];
|
||||
let args = msg.params.slice(2);
|
||||
switch (subCmd) {
|
||||
case "LS":
|
||||
this.addAvailableCaps(args[args.length - 1]);
|
||||
if (args[0] != "*") {
|
||||
console.log("Available server caps:", this.availableCaps);
|
||||
|
||||
var reqCaps = [];
|
||||
var capEnd = true;
|
||||
let reqCaps = [];
|
||||
let capEnd = true;
|
||||
if (this.params.saslPlain && this.supportsSASL("PLAIN")) {
|
||||
// CAP END is deferred after authentication finishes
|
||||
reqCaps.push("sasl");
|
||||
@@ -438,7 +439,7 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
handleAuthenticate(msg) {
|
||||
var challengeStr = msg.params[0];
|
||||
let challengeStr = msg.params[0];
|
||||
|
||||
// For now only PLAIN is supported
|
||||
if (challengeStr != "+") {
|
||||
@@ -447,7 +448,7 @@ export default class Client extends EventTarget {
|
||||
return;
|
||||
}
|
||||
|
||||
var respStr = btoa("\0" + this.params.saslPlain.username + "\0" + this.params.saslPlain.password);
|
||||
let respStr = btoa("\0" + this.params.saslPlain.username + "\0" + this.params.saslPlain.password);
|
||||
this.send({ command: "AUTHENTICATE", params: [respStr] });
|
||||
}
|
||||
|
||||
@@ -478,7 +479,7 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
isChannel(name) {
|
||||
var chanTypes = this.isupport.get("CHANTYPES") || irc.STD_CHANTYPES;
|
||||
let chanTypes = this.isupport.get("CHANTYPES") || irc.STD_CHANTYPES;
|
||||
return chanTypes.indexOf(name[0]) >= 0;
|
||||
}
|
||||
|
||||
@@ -500,7 +501,7 @@ export default class Client extends EventTarget {
|
||||
/* Execute a command that expects a response. `done` is called with message
|
||||
* events until it returns a truthy value. */
|
||||
roundtrip(msg, done) {
|
||||
var label;
|
||||
let label;
|
||||
if (this.enabledCaps["labeled-response"]) {
|
||||
lastLabel++;
|
||||
label = String(lastLabel);
|
||||
@@ -508,15 +509,15 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
var handleMessage = (event) => {
|
||||
var msg = event.detail.message;
|
||||
let handleMessage = (event) => {
|
||||
let msg = event.detail.message;
|
||||
|
||||
var msgLabel = irc.getMessageLabel(msg);
|
||||
let msgLabel = irc.getMessageLabel(msg);
|
||||
if (msgLabel && msgLabel != label) {
|
||||
return;
|
||||
}
|
||||
|
||||
var result;
|
||||
let result;
|
||||
try {
|
||||
result = done(msg);
|
||||
} catch (err) {
|
||||
@@ -537,11 +538,11 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
fetchBatch(msg, batchType) {
|
||||
var batchName = null;
|
||||
var messages = [];
|
||||
let batchName = null;
|
||||
let messages = [];
|
||||
return this.roundtrip(msg, (msg) => {
|
||||
if (batchName) {
|
||||
var batch = msg.batch;
|
||||
let batch = msg.batch;
|
||||
while (batch) {
|
||||
if (batch.name === batchName) {
|
||||
messages.push(msg);
|
||||
@@ -553,8 +554,8 @@ export default class Client extends EventTarget {
|
||||
|
||||
switch (msg.command) {
|
||||
case "BATCH":
|
||||
var enter = msg.params[0].startsWith("+");
|
||||
var name = msg.params[0].slice(1);
|
||||
let enter = msg.params[0].startsWith("+");
|
||||
let name = msg.params[0].slice(1);
|
||||
if (enter && msg.params[1] === batchType) {
|
||||
batchName = name;
|
||||
break;
|
||||
@@ -576,7 +577,7 @@ export default class Client extends EventTarget {
|
||||
// Don't send multiple CHATHISTORY commands in parallel, we can't
|
||||
// properly handle batches and errors.
|
||||
this.pendingHistory = this.pendingHistory.catch(() => {}).then(() => {
|
||||
var msg = {
|
||||
let msg = {
|
||||
command: "CHATHISTORY",
|
||||
params,
|
||||
};
|
||||
@@ -587,7 +588,7 @@ export default class Client extends EventTarget {
|
||||
|
||||
chatHistoryPageSize() {
|
||||
if (this.isupport.has("CHATHISTORY")) {
|
||||
var pageSize = parseInt(this.isupport.get("CHATHISTORY"), 10);
|
||||
let pageSize = parseInt(this.isupport.get("CHATHISTORY"), 10);
|
||||
if (pageSize > 0) {
|
||||
return pageSize;
|
||||
}
|
||||
@@ -597,8 +598,8 @@ export default class Client extends EventTarget {
|
||||
|
||||
/* Fetch one page of history before the given date. */
|
||||
fetchHistoryBefore(target, before, limit) {
|
||||
var max = Math.min(limit, this.chatHistoryPageSize());
|
||||
var params = ["BEFORE", target, "timestamp=" + before, max];
|
||||
let max = Math.min(limit, this.chatHistoryPageSize());
|
||||
let params = ["BEFORE", target, "timestamp=" + before, max];
|
||||
return this.roundtripChatHistory(params).then((messages) => {
|
||||
return { more: messages.length >= max };
|
||||
});
|
||||
@@ -606,8 +607,8 @@ export default class Client extends EventTarget {
|
||||
|
||||
/* Fetch history in ascending order. */
|
||||
fetchHistoryBetween(target, after, before, limit) {
|
||||
var max = Math.min(limit, this.chatHistoryPageSize());
|
||||
var params = ["AFTER", target, "timestamp=" + after.time, max];
|
||||
let max = Math.min(limit, this.chatHistoryPageSize());
|
||||
let params = ["AFTER", target, "timestamp=" + after.time, max];
|
||||
return this.roundtripChatHistory(params).then((messages) => {
|
||||
limit -= messages.length;
|
||||
if (limit <= 0) {
|
||||
@@ -623,7 +624,7 @@ export default class Client extends EventTarget {
|
||||
}
|
||||
|
||||
fetchHistoryTargets(t1, t2) {
|
||||
var msg = {
|
||||
let msg = {
|
||||
command: "CHATHISTORY",
|
||||
params: ["TARGETS", "timestamp=" + t1, "timestamp=" + t2, 1000],
|
||||
};
|
||||
@@ -645,13 +646,13 @@ export default class Client extends EventTarget {
|
||||
return Promise.reject(new Error("Server doesn't support the BOUNCER extension"));
|
||||
}
|
||||
|
||||
var req = { command: "BOUNCER", params: ["LISTNETWORKS"] };
|
||||
let req = { command: "BOUNCER", params: ["LISTNETWORKS"] };
|
||||
return this.fetchBatch(req, "soju.im/bouncer-networks").then((batch) => {
|
||||
var networks = new Map();
|
||||
for (var msg of batch.messages) {
|
||||
let networks = new Map();
|
||||
for (let msg of batch.messages) {
|
||||
console.assert(msg.command === "BOUNCER" && msg.params[0] === "NETWORK");
|
||||
var id = msg.params[1];
|
||||
var params = irc.parseTags(msg.params[2]);
|
||||
let id = msg.params[1];
|
||||
let params = irc.parseTags(msg.params[2]);
|
||||
networks.set(id, params);
|
||||
}
|
||||
return networks;
|
||||
|
||||
116
lib/irc.js
116
lib/irc.js
@@ -71,14 +71,14 @@ function unescapeTag(s) {
|
||||
}
|
||||
|
||||
export function parseTags(s) {
|
||||
var tags = {};
|
||||
let tags = {};
|
||||
s.split(";").forEach((s) => {
|
||||
if (!s) {
|
||||
return;
|
||||
}
|
||||
var parts = s.split("=", 2);
|
||||
var k = parts[0];
|
||||
var v = null;
|
||||
let parts = s.split("=", 2);
|
||||
let k = parts[0];
|
||||
let v = null;
|
||||
if (parts.length == 2) {
|
||||
v = unescapeTag(parts[1]);
|
||||
if (v.endsWith("\\")) {
|
||||
@@ -91,26 +91,26 @@ export function parseTags(s) {
|
||||
}
|
||||
|
||||
export function formatTags(tags) {
|
||||
var l = [];
|
||||
for (var k in tags) {
|
||||
let l = [];
|
||||
for (let k in tags) {
|
||||
if (tags[k] === undefined || tags[k] === null) {
|
||||
l.push(k);
|
||||
continue;
|
||||
}
|
||||
var v = escapeTag(tags[k]);
|
||||
let v = escapeTag(tags[k]);
|
||||
l.push(k + "=" + v);
|
||||
}
|
||||
return l.join(";");
|
||||
}
|
||||
|
||||
function parsePrefix(s) {
|
||||
var prefix = {
|
||||
let prefix = {
|
||||
name: null,
|
||||
user: null,
|
||||
host: null,
|
||||
};
|
||||
|
||||
var i = s.indexOf("@");
|
||||
let i = s.indexOf("@");
|
||||
if (i < 0) {
|
||||
prefix.name = s;
|
||||
return prefix;
|
||||
@@ -118,7 +118,7 @@ function parsePrefix(s) {
|
||||
prefix.host = s.slice(i + 1);
|
||||
s = s.slice(0, i);
|
||||
|
||||
var i = s.indexOf("!");
|
||||
i = s.indexOf("!");
|
||||
if (i < 0) {
|
||||
prefix.name = s;
|
||||
return prefix;
|
||||
@@ -143,7 +143,7 @@ export function parseMessage(s) {
|
||||
s = s.slice(0, s.length - 2);
|
||||
}
|
||||
|
||||
var msg = {
|
||||
let msg = {
|
||||
tags: {},
|
||||
prefix: null,
|
||||
command: null,
|
||||
@@ -151,7 +151,7 @@ export function parseMessage(s) {
|
||||
};
|
||||
|
||||
if (s.startsWith("@")) {
|
||||
var i = s.indexOf(" ");
|
||||
let i = s.indexOf(" ");
|
||||
if (i < 0) {
|
||||
throw new Error("expected a space after tags");
|
||||
}
|
||||
@@ -160,7 +160,7 @@ export function parseMessage(s) {
|
||||
}
|
||||
|
||||
if (s.startsWith(":")) {
|
||||
var i = s.indexOf(" ");
|
||||
let i = s.indexOf(" ");
|
||||
if (i < 0) {
|
||||
throw new Error("expected a space after prefix");
|
||||
}
|
||||
@@ -168,7 +168,7 @@ export function parseMessage(s) {
|
||||
s = s.slice(i + 1);
|
||||
}
|
||||
|
||||
var i = s.indexOf(" ");
|
||||
let i = s.indexOf(" ");
|
||||
if (i < 0) {
|
||||
msg.command = s;
|
||||
return msg;
|
||||
@@ -196,7 +196,7 @@ export function parseMessage(s) {
|
||||
}
|
||||
|
||||
export function formatMessage(msg) {
|
||||
var s = "";
|
||||
let s = "";
|
||||
if (msg.tags && Object.keys(msg.tags).length > 0) {
|
||||
s += "@" + formatTags(msg.tags) + " ";
|
||||
}
|
||||
@@ -205,7 +205,7 @@ export function formatMessage(msg) {
|
||||
}
|
||||
s += msg.command;
|
||||
if (msg.params && msg.params.length > 0) {
|
||||
var last = msg.params[msg.params.length - 1];
|
||||
let last = msg.params[msg.params.length - 1];
|
||||
if (msg.params.length > 1) {
|
||||
s += " " + msg.params.slice(0, -1).join(" ");
|
||||
}
|
||||
@@ -217,7 +217,7 @@ export function formatMessage(msg) {
|
||||
|
||||
/** Split a prefix and a name out of a target. */
|
||||
export function parseTargetPrefix(s, allowedPrefixes = STD_MEMBERSHIPS) {
|
||||
var i;
|
||||
let i;
|
||||
for (i = 0; i < s.length; i++) {
|
||||
if (allowedPrefixes.indexOf(s[i]) < 0) {
|
||||
break;
|
||||
@@ -262,15 +262,15 @@ export function isHighlight(msg, nick, cm) {
|
||||
return false; // Our own messages aren't highlights
|
||||
}
|
||||
|
||||
var text = cm(msg.params[1]);
|
||||
let text = cm(msg.params[1]);
|
||||
while (true) {
|
||||
var i = text.indexOf(nick);
|
||||
let i = text.indexOf(nick);
|
||||
if (i < 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Detect word boundaries
|
||||
var left = "\x00", right = "\x00";
|
||||
let left = "\x00", right = "\x00";
|
||||
if (i > 0) {
|
||||
left = text[i - 1];
|
||||
}
|
||||
@@ -305,13 +305,13 @@ export function isError(cmd) {
|
||||
|
||||
export function formatDate(date) {
|
||||
// ISO 8601
|
||||
var YYYY = date.getUTCFullYear().toString().padStart(4, "0");
|
||||
var MM = (date.getUTCMonth() + 1).toString().padStart(2, "0");
|
||||
var DD = date.getUTCDate().toString().padStart(2, "0");
|
||||
var hh = date.getUTCHours().toString().padStart(2, "0");
|
||||
var mm = date.getUTCMinutes().toString().padStart(2, "0");
|
||||
var ss = date.getUTCSeconds().toString().padStart(2, "0");
|
||||
var sss = date.getUTCMilliseconds().toString().padStart(3, "0");
|
||||
let YYYY = date.getUTCFullYear().toString().padStart(4, "0");
|
||||
let MM = (date.getUTCMonth() + 1).toString().padStart(2, "0");
|
||||
let DD = date.getUTCDate().toString().padStart(2, "0");
|
||||
let hh = date.getUTCHours().toString().padStart(2, "0");
|
||||
let mm = date.getUTCMinutes().toString().padStart(2, "0");
|
||||
let ss = date.getUTCSeconds().toString().padStart(2, "0");
|
||||
let sss = date.getUTCMilliseconds().toString().padStart(3, "0");
|
||||
return `${YYYY}-${MM}-${DD}T${hh}:${mm}:${ss}.${sss}Z`;
|
||||
}
|
||||
|
||||
@@ -320,7 +320,7 @@ export function parseCTCP(msg) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var text = msg.params[1];
|
||||
let text = msg.params[1];
|
||||
if (!text.startsWith("\x01")) {
|
||||
return null;
|
||||
}
|
||||
@@ -329,8 +329,8 @@ export function parseCTCP(msg) {
|
||||
text = text.slice(0, -1);
|
||||
}
|
||||
|
||||
var ctcp;
|
||||
var i = text.indexOf(" ");
|
||||
let ctcp;
|
||||
let i = text.indexOf(" ");
|
||||
if (i >= 0) {
|
||||
ctcp = { command: text.slice(0, i), param: text.slice(i + 1) };
|
||||
} else {
|
||||
@@ -341,16 +341,16 @@ export function parseCTCP(msg) {
|
||||
}
|
||||
|
||||
export function parseISUPPORT(tokens, params) {
|
||||
var changed = [];
|
||||
let changed = [];
|
||||
tokens.forEach((tok) => {
|
||||
if (tok.startsWith("-")) {
|
||||
var k = tok.slice(1);
|
||||
let k = tok.slice(1);
|
||||
params.delete(k.toUpperCase());
|
||||
return;
|
||||
}
|
||||
|
||||
var i = tok.indexOf("=");
|
||||
var k = tok, v = "";
|
||||
let i = tok.indexOf("=");
|
||||
let k = tok, v = "";
|
||||
if (i >= 0) {
|
||||
k = tok.slice(0, i);
|
||||
v = tok.slice(i + 1);
|
||||
@@ -366,9 +366,9 @@ export function parseISUPPORT(tokens, params) {
|
||||
|
||||
export const CaseMapping = {
|
||||
ASCII(str) {
|
||||
var out = "";
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
var ch = str[i];
|
||||
let out = "";
|
||||
for (let i = 0; i < str.length; i++) {
|
||||
let ch = str[i];
|
||||
if ("A" <= ch && ch <= "Z") {
|
||||
ch = ch.toLowerCase();
|
||||
}
|
||||
@@ -378,9 +378,9 @@ export const CaseMapping = {
|
||||
},
|
||||
|
||||
RFC1459(str) {
|
||||
var out = "";
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
var ch = str[i];
|
||||
let out = "";
|
||||
for (let i = 0; i < str.length; i++) {
|
||||
let ch = str[i];
|
||||
if ("A" <= ch && ch <= "Z") {
|
||||
ch = ch.toLowerCase();
|
||||
} else if (ch == "{") {
|
||||
@@ -398,9 +398,9 @@ export const CaseMapping = {
|
||||
},
|
||||
|
||||
RFC1459Strict(str) {
|
||||
var out = "";
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
var ch = str[i];
|
||||
let out = "";
|
||||
for (let i = 0; i < str.length; i++) {
|
||||
let ch = str[i];
|
||||
if ("A" <= ch && ch <= "Z") {
|
||||
ch = ch.toLowerCase();
|
||||
} else if (ch == "{") {
|
||||
@@ -429,7 +429,7 @@ export const CaseMapping = {
|
||||
};
|
||||
|
||||
function createIterator(next) {
|
||||
var it = { next };
|
||||
let it = { next };
|
||||
// Not defining this can lead to surprises when feeding the iterator
|
||||
// to e.g. Array.from
|
||||
it[Symbol.iterator] = () => it;
|
||||
@@ -438,7 +438,7 @@ function createIterator(next) {
|
||||
|
||||
function mapIterator(it, f) {
|
||||
return createIterator(() => {
|
||||
var { value, done } = it.next();
|
||||
let { value, done } = it.next();
|
||||
if (done) {
|
||||
return { done: true };
|
||||
}
|
||||
@@ -464,7 +464,7 @@ export class CaseMapMap {
|
||||
this.map = new Map();
|
||||
|
||||
if (iterable) {
|
||||
for (var [key, value] of iterable) {
|
||||
for (let [key, value] of iterable) {
|
||||
this.set(key, value);
|
||||
}
|
||||
}
|
||||
@@ -480,7 +480,7 @@ export class CaseMapMap {
|
||||
}
|
||||
|
||||
get(key) {
|
||||
var kv = this.map.get(this.caseMap(key));
|
||||
let kv = this.map.get(this.caseMap(key));
|
||||
if (kv) {
|
||||
return kv.value;
|
||||
}
|
||||
@@ -496,21 +496,21 @@ export class CaseMapMap {
|
||||
}
|
||||
|
||||
entries() {
|
||||
var it = this.map.values();
|
||||
let it = this.map.values();
|
||||
return mapIterator(it, (kv) => {
|
||||
return [kv.key, kv.value];
|
||||
});
|
||||
}
|
||||
|
||||
keys() {
|
||||
var it = this.map.values();
|
||||
let it = this.map.values();
|
||||
return mapIterator(it, (kv) => {
|
||||
return kv.key;
|
||||
});
|
||||
}
|
||||
|
||||
values() {
|
||||
var it = this.map.values();
|
||||
let it = this.map.values();
|
||||
return mapIterator(it, (kv) => {
|
||||
return kv.value;
|
||||
});
|
||||
@@ -527,23 +527,23 @@ export function parseMembershipModes(str) {
|
||||
throw new Error("malformed ISUPPORT PREFIX value: expected opening parenthesis");
|
||||
}
|
||||
|
||||
var sep = str.indexOf(")");
|
||||
let sep = str.indexOf(")");
|
||||
if (sep < 0) {
|
||||
throw new Error("malformed ISUPPORT PREFIX value: expected closing parenthesis");
|
||||
}
|
||||
|
||||
var n = str.length - sep - 1;
|
||||
var memberships = [];
|
||||
for (var i = 0; i < n; i++) {
|
||||
var mode = str[i + 1];
|
||||
var prefix = str[sep + i + 1];
|
||||
let n = str.length - sep - 1;
|
||||
let memberships = [];
|
||||
for (let i = 0; i < n; i++) {
|
||||
let mode = str[i + 1];
|
||||
let prefix = str[sep + i + 1];
|
||||
memberships.push({ mode, prefix });
|
||||
}
|
||||
return memberships;
|
||||
}
|
||||
|
||||
export function findBatchByType(msg, type) {
|
||||
var batch = msg.batch;
|
||||
let batch = msg.batch;
|
||||
while (batch) {
|
||||
if (batch.type === type) {
|
||||
return batch;
|
||||
@@ -558,7 +558,7 @@ export function getMessageLabel(msg) {
|
||||
return msg.tags.label;
|
||||
}
|
||||
|
||||
var batch = msg.batch;
|
||||
let batch = msg.batch;
|
||||
while (batch) {
|
||||
if (batch.tags.label) {
|
||||
return batch.tags.label;
|
||||
|
||||
@@ -4,12 +4,12 @@ function linkifyChannel(text, transformChannel) {
|
||||
// Don't match punctuation at the end of the channel name
|
||||
const channelRegex = /(?:^|\s)(#[^\s]+[^\s.?!…():;,])/gid;
|
||||
|
||||
var children = [];
|
||||
var match;
|
||||
var last = 0;
|
||||
let children = [];
|
||||
let match;
|
||||
let last = 0;
|
||||
while ((match = channelRegex.exec(text)) !== null) {
|
||||
var channel = match[1];
|
||||
var [start, end] = match.indices[1];
|
||||
let channel = match[1];
|
||||
let [start, end] = match.indices[1];
|
||||
|
||||
children.push(text.substring(last, start));
|
||||
children.push(transformChannel(channel));
|
||||
@@ -34,20 +34,20 @@ export default function linkify(text, onChannelClick) {
|
||||
>${channel}</a>`;
|
||||
}
|
||||
|
||||
var links = anchorme.list(text);
|
||||
let links = anchorme.list(text);
|
||||
|
||||
var children = [];
|
||||
var last = 0;
|
||||
let children = [];
|
||||
let last = 0;
|
||||
links.forEach((match) => {
|
||||
const prefix = text.substring(last, match.start)
|
||||
children.push(...linkifyChannel(prefix, transformChannel));
|
||||
|
||||
var proto = match.protocol || "https://";
|
||||
let proto = match.protocol || "https://";
|
||||
if (match.isEmail) {
|
||||
proto = "mailto:";
|
||||
}
|
||||
|
||||
var url = match.string;
|
||||
let url = match.string;
|
||||
if (!url.startsWith(proto)) {
|
||||
url = proto + url;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user