js: Remove extra consecutive spaces.

Prettier would do this anyway, but it’s separated out for a more
reviewable diff.  Generated by ESLint.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2020-07-16 14:29:01 -07:00
committed by Tim Abbott
parent 883e2fd325
commit 8046b6477a
65 changed files with 129 additions and 128 deletions

View File

@@ -78,6 +78,7 @@
"no-label-var": "error", "no-label-var": "error",
"no-labels": "error", "no-labels": "error",
"no-loop-func": "error", "no-loop-func": "error",
"no-multi-spaces": "error",
"no-multi-str": "error", "no-multi-str": "error",
"no-native-reassign": "error", "no-native-reassign": "error",
"no-new-func": "error", "no-new-func": "error",

View File

@@ -4,7 +4,7 @@ module.exports = {
"@babel/preset-env", "@babel/preset-env",
{ {
corejs: 3, corejs: 3,
loose: true, // Loose mode for…of loops are 5× faster in Firefox loose: true, // Loose mode for…of loops are 5× faster in Firefox
useBuiltIns: "usage", useBuiltIns: "usage",
}, },
], ],

View File

@@ -164,7 +164,7 @@ casper.then(function () {
// Make sure multiple PM recipients display properly. // Make sure multiple PM recipients display properly.
var recipients = ["cordelia@zulip.com", "othello@zulip.com"]; var recipients = ["cordelia@zulip.com", "othello@zulip.com"];
casper.then(function () { casper.then(function () {
common.keypress(27); // escape to dismiss compose box common.keypress(27); // escape to dismiss compose box
}); });
casper.waitWhileVisible(".message_comp"); casper.waitWhileVisible(".message_comp");
common.then_send_message("private", { common.then_send_message("private", {
@@ -175,7 +175,7 @@ common.then_send_message("private", {
casper.then(function () { casper.then(function () {
common.keypress(27); // escape to dismiss compose box common.keypress(27); // escape to dismiss compose box
}); });
casper.then(function () { casper.then(function () {
common.un_narrow(); common.un_narrow();

View File

@@ -21,7 +21,7 @@ run_test("rgb_luminance", () => {
run_test("luminance_to_lightness", () => { run_test("luminance_to_lightness", () => {
let luminance = 0; let luminance = 0;
let expected_value = 116 * 4 / 29 - 16; let expected_value = 116 * 4 / 29 - 16;
let actual_value = colorspace.luminance_to_lightness(luminance); let actual_value = colorspace.luminance_to_lightness(luminance);
assert.equal(actual_value, expected_value); assert.equal(actual_value, expected_value);

View File

@@ -373,7 +373,7 @@ run_test("markdown_rtl", () => {
const textarea = $("#compose-textarea"); const textarea = $("#compose-textarea");
const event = { const event = {
keyCode: 65, // A keyCode: 65, // A
}; };
rtl.get_direction = (text) => { rtl.get_direction = (text) => {
@@ -397,7 +397,7 @@ run_test("markdown_ltr", () => {
const textarea = $("#compose-textarea"); const textarea = $("#compose-textarea");
const event = { const event = {
keyCode: 65, // A keyCode: 65, // A
}; };
assert.equal(textarea.hasClass("rtl"), true); assert.equal(textarea.hasClass("rtl"), true);
@@ -1100,7 +1100,7 @@ run_test("needs_subscribe_warning", () => {
}); });
run_test("warn_if_mentioning_unsubscribed_user", () => { run_test("warn_if_mentioning_unsubscribed_user", () => {
let mentioned = { let mentioned = {
email: "foo@bar.com", email: "foo@bar.com",
}; };
@@ -1287,7 +1287,7 @@ run_test("on_events", () => {
invite_user_to_stream_called = true; invite_user_to_stream_called = true;
assert.deepEqual(user_ids, [mentioned.user_id]); assert.deepEqual(user_ids, [mentioned.user_id]);
assert.equal(sub, subscription); assert.equal(sub, subscription);
success(); // This will check success callback path. success(); // This will check success callback path.
}; };
const helper = setup_parents_and_mock_remove( const helper = setup_parents_and_mock_remove(

View File

@@ -302,7 +302,7 @@ run_test("content_typeahead_selected", () => {
let caret_called1 = false; let caret_called1 = false;
let caret_called2 = false; let caret_called2 = false;
fake_this.$element.caret = function (...args) { fake_this.$element.caret = function (...args) {
if (args.length === 0) { // .caret() used in split_at_cursor if (args.length === 0) { // .caret() used in split_at_cursor
caret_called1 = true; caret_called1 = true;
return fake_this.query.length; return fake_this.query.length;
} }
@@ -415,7 +415,7 @@ run_test("content_typeahead_selected", () => {
expected_value = "@_**King Hamlet** "; expected_value = "@_**King Hamlet** ";
assert.equal(actual_value, expected_value); assert.equal(actual_value, expected_value);
fake_this.query = "@_**kin"; fake_this.query = "@_**kin";
fake_this.token = "kin"; fake_this.token = "kin";
actual_value = ct.content_typeahead_selected.call(fake_this, hamlet); actual_value = ct.content_typeahead_selected.call(fake_this, hamlet);
expected_value = "@_**King Hamlet** "; expected_value = "@_**King Hamlet** ";
@@ -606,7 +606,7 @@ run_test("initialize", () => {
// The sorter should return the query as the first element if there // The sorter should return the query as the first element if there
// isn't a topic with such name. // isn't a topic with such name.
// This only happens if typeahead is providing other suggestions. // This only happens if typeahead is providing other suggestions.
options.query = "e"; // Letter present in "furniture" and "ice" options.query = "e"; // Letter present in "furniture" and "ice"
actual_value = options.sorter(["furniture", "ice"]); actual_value = options.sorter(["furniture", "ice"]);
expected_value = ["e", "furniture", "ice"]; expected_value = ["e", "furniture", "ice"];
assert.deepEqual(actual_value, expected_value); assert.deepEqual(actual_value, expected_value);
@@ -663,11 +663,11 @@ run_test("initialize", () => {
} }
let query; let query;
query = "el"; // Matches both "othELlo" and "cordELia" query = "el"; // Matches both "othELlo" and "cordELia"
assert.equal(matcher(query, othello), true); assert.equal(matcher(query, othello), true);
assert.equal(matcher(query, cordelia), true); assert.equal(matcher(query, cordelia), true);
query = "bender"; // Doesn't exist query = "bender"; // Doesn't exist
assert.equal(matcher(query, othello), false); assert.equal(matcher(query, othello), false);
assert.equal(matcher(query, cordelia), false); assert.equal(matcher(query, cordelia), false);
@@ -724,7 +724,7 @@ run_test("initialize", () => {
assert.deepEqual(actual_value, expected_value); assert.deepEqual(actual_value, expected_value);
// A literal match at the beginning of an element puts it at the top. // A literal match at the beginning of an element puts it at the top.
query = "co"; // Matches everything ("x@zulip.COm") query = "co"; // Matches everything ("x@zulip.COm")
actual_value = sorter(query, [othello, deactivated_user, cordelia]); actual_value = sorter(query, [othello, deactivated_user, cordelia]);
expected_value = [cordelia, deactivated_user, othello]; expected_value = [cordelia, deactivated_user, othello];
assert.deepEqual(actual_value, expected_value); assert.deepEqual(actual_value, expected_value);
@@ -946,13 +946,13 @@ run_test("initialize", () => {
let pm_recipient_blur_called = false; let pm_recipient_blur_called = false;
const old_pm_recipient_blur = $("#private_message_recipient").blur; const old_pm_recipient_blur = $("#private_message_recipient").blur;
$("#private_message_recipient").blur = function (handler) { $("#private_message_recipient").blur = function (handler) {
if (handler) { // The blur handler is being set. if (handler) { // The blur handler is being set.
this.val("othello@zulip.com, "); this.val("othello@zulip.com, ");
handler.call(this); handler.call(this);
const actual_value = this.val(); const actual_value = this.val();
const expected_value = "othello@zulip.com"; const expected_value = "othello@zulip.com";
assert.equal(actual_value, expected_value); assert.equal(actual_value, expected_value);
} else { // The element is simply losing the focus. } else { // The element is simply losing the focus.
old_pm_recipient_blur(); old_pm_recipient_blur();
} }
pm_recipient_blur_called = true; pm_recipient_blur_called = true;
@@ -1076,10 +1076,10 @@ run_test("initialize", () => {
// in_handler tries to avoid. // in_handler tries to avoid.
$("#stream_message_recipient_stream").one = function (event, handler) { $("#stream_message_recipient_stream").one = function (event, handler) {
handler({preventDefault: noop}); handler({preventDefault: noop});
f(); // This time in_handler will already be true. f(); // This time in_handler will already be true.
stream_one_called = true; stream_one_called = true;
}; };
f(); // Here in_handler is false. f(); // Here in_handler is false.
focus_handler_called = true; focus_handler_called = true;
}; };

View File

@@ -361,7 +361,7 @@ with_overrides((override) => {
event = event_fixtures.realm__update_notifications_stream_id; event = event_fixtures.realm__update_notifications_stream_id;
dispatch(event); dispatch(event);
assert_same(page_params.realm_notifications_stream_id, 42); assert_same(page_params.realm_notifications_stream_id, 42);
page_params.realm_notifications_stream_id = -1; // make sure to reset for future tests page_params.realm_notifications_stream_id = -1; // make sure to reset for future tests
event = event_fixtures.realm__update_signup_notifications_stream_id; event = event_fixtures.realm__update_signup_notifications_stream_id;
dispatch(event); dispatch(event);
@@ -687,7 +687,7 @@ with_overrides((override) => {
assert_same(toggled, ["less_dense_mode", "more_dense_mode"]); assert_same(toggled, ["less_dense_mode", "more_dense_mode"]);
$("body").fadeOut = (secs) => { assert_same(secs, 300); }; $("body").fadeOut = (secs) => { assert_same(secs, 300); };
$("body").fadeIn = (secs) => { assert_same(secs, 300); }; $("body").fadeIn = (secs) => { assert_same(secs, 300); };
global.with_stub((stub) => { global.with_stub((stub) => {
event = event_fixtures.update_display_settings__color_scheme_dark; event = event_fixtures.update_display_settings__color_scheme_dark;

View File

@@ -231,7 +231,7 @@ run_test("remove_old_drafts", () => {
run_test("format_drafts", () => { run_test("format_drafts", () => {
drafts.remove_old_drafts = noop; drafts.remove_old_drafts = noop;
draft_1.updatedAt = new Date(1549958107000).getTime(); // 2/12/2019 07:55:07 AM (UTC+0) draft_1.updatedAt = new Date(1549958107000).getTime(); // 2/12/2019 07:55:07 AM (UTC+0)
draft_2.updatedAt = new Date(1549958107000).setDate(-1); draft_2.updatedAt = new Date(1549958107000).setDate(-1);
const draft_3 = { const draft_3 = {
stream: "stream 2", stream: "stream 2",

View File

@@ -34,7 +34,7 @@ run_test("basic_functions", () => {
const widget = dropdown_list_widget(opts); const widget = dropdown_list_widget(opts);
assert.equal(widget.value(), "one"); assert.equal(widget.value(), "one");
assert.equal(updated_value, undefined); // We haven't 'updated' the widget yet. assert.equal(updated_value, undefined); // We haven't 'updated' the widget yet.
assert(reset_button.visible()); assert(reset_button.visible());
widget.update("two"); widget.update("two");

View File

@@ -499,7 +499,7 @@ run_test("custom sort", () => {
list_render.create(container, list, { list_render.create(container, list, {
name: "custom-sort-list", name: "custom-sort-list",
modifier: (n) => "(" + n.x + ", " + n.y + ")", modifier: (n) => "(" + n.x + ", " + n.y + ")",
sort_fields: { sort_fields: {
product: sort_by_product, product: sort_by_product,
x_value: sort_by_x, x_value: sort_by_x,
@@ -740,7 +740,7 @@ run_test("opts.get_item", () => {
run_test("render item", () => { run_test("render item", () => {
const container = make_container(); const container = make_container();
const scroll_container = make_scroll_container(); const scroll_container = make_scroll_container();
const INITIAL_RENDER_COUNT = 80; // Keep this in sync with the actual code. const INITIAL_RENDER_COUNT = 80; // Keep this in sync with the actual code.
container.html = () => {}; container.html = () => {};
let called = false; let called = false;

View File

@@ -127,7 +127,7 @@ run_test("update_messages", () => {
helper.verify(); helper.verify();
assert.deepEqual(rendered_mgs, [ assert.deepEqual(rendered_mgs, [
{ {
alerted: false, alerted: false,
collapsed: false, collapsed: false,

View File

@@ -49,7 +49,7 @@ const cindy = {
full_name: "Cindy", full_name: "Cindy",
}; };
const denise = { const denise = {
email: "denise@example.com", email: "denise@example.com",
user_id: 105, user_id: 105,
full_name: "Denise ", full_name: "Denise ",

View File

@@ -61,7 +61,7 @@ run_test("poll_data_holder my question", () => {
question: "best plan?", question: "best plan?",
}); });
let vote_event = { let vote_event = {
type: "vote", type: "vote",
key: "99,1", key: "99,1",
vote: 1, vote: 1,
@@ -146,7 +146,7 @@ run_test("activate another person poll", () => {
const widget_elem = $("<div>").addClass("widget-content"); const widget_elem = $("<div>").addClass("widget-content");
let out_data; // Used to check the event data sent to the server let out_data; // Used to check the event data sent to the server
const callback = (data) => { const callback = (data) => {
out_data = data; out_data = data;
}; };
@@ -242,7 +242,7 @@ run_test("activate another person poll", () => {
poll_option_input.val("cool choice"); poll_option_input.val("cool choice");
out_data = undefined; out_data = undefined;
option_button_callback(e); option_button_callback(e);
assert.deepEqual(out_data, {type: "new_option", idx: 1, option: "cool choice"}); assert.deepEqual(out_data, {type: "new_option", idx: 1, option: "cool choice"});
poll_option_input.val(""); poll_option_input.val("");
out_data = undefined; out_data = undefined;
@@ -405,7 +405,7 @@ run_test("activate own poll", () => {
out_data = undefined; out_data = undefined;
show_submit = true; show_submit = true;
question_button_callback(e); question_button_callback(e);
assert.deepEqual(out_data, {type: "question", question: "Is it new?"}); assert.deepEqual(out_data, {type: "question", question: "Is it new?"});
poll_option_input.val(""); poll_option_input.val("");
out_data = undefined; out_data = undefined;

View File

@@ -10,7 +10,7 @@ zrequire("user_status");
zrequire("feature_flags"); zrequire("feature_flags");
zrequire("message_edit"); zrequire("message_edit");
const noop = function () {}; const noop = function () {};
$.fn.popover = noop; // this will get wrapped by our code $.fn.popover = noop; // this will get wrapped by our code
zrequire("popovers"); zrequire("popovers");

View File

@@ -236,7 +236,7 @@ run_test("sending", () => {
}); });
}); });
emoji_name = "unknown-emoji"; // Test sending an emoji unknown to frontend. emoji_name = "unknown-emoji"; // Test sending an emoji unknown to frontend.
blueslip.expect("warn", "Bad emoji name: " + emoji_name); blueslip.expect("warn", "Bad emoji name: " + emoji_name);
reactions.toggle_emoji_reaction(message_id, emoji_name); reactions.toggle_emoji_reaction(message_id, emoji_name);
reactions.add_reaction = orig_add_reaction; reactions.add_reaction = orig_add_reaction;
@@ -592,7 +592,7 @@ run_test("error_handling", () => {
blueslip.expect("error", "reactions: Bad message id: 55"); blueslip.expect("error", "reactions: Bad message id: 55");
const bogus_event = { const bogus_event = {
message_id: 55, message_id: 55,
reaction_type: "realm_emoji", reaction_type: "realm_emoji",
emoji_name: "realm_emoji", emoji_name: "realm_emoji",

View File

@@ -80,13 +80,13 @@ const stream4 = 4;
const stream5 = 5; // Deleted stream const stream5 = 5; // Deleted stream
// Topics in the stream, all unread except topic1 & stream1. // Topics in the stream, all unread except topic1 & stream1.
const topic1 = "topic-1"; // No Other sender & read. const topic1 = "topic-1"; // No Other sender & read.
const topic2 = "topic-2"; // Other sender const topic2 = "topic-2"; // Other sender
const topic3 = "topic-3"; // User not present const topic3 = "topic-3"; // User not present
const topic4 = "topic-4"; // User not present const topic4 = "topic-4"; // User not present
const topic5 = "topic-5"; // other sender const topic5 = "topic-5"; // other sender
const topic6 = "topic-6"; // other sender const topic6 = "topic-6"; // other sender
const topic7 = "topic-7"; // muted topic const topic7 = "topic-7"; // muted topic
const topic8 = "topic-8"; const topic8 = "topic-8";
const topic9 = "topic-9"; const topic9 = "topic-9";
const topic10 = "topic-10"; const topic10 = "topic-10";

View File

@@ -876,7 +876,7 @@ run_test("topic_suggestions", () => {
assert.equal(describe("te"), "Search for te"); assert.equal(describe("te"), "Search for te");
assert.equal(describe("stream:office topic:team"), "Stream office &gt; team"); assert.equal(describe("stream:office topic:team"), "Stream office &gt; team");
suggestions = get_suggestions("topic:staplers", "stream:office"); suggestions = get_suggestions("topic:staplers", "stream:office");
expected = [ expected = [
"stream:office", "stream:office",
]; ];

View File

@@ -165,7 +165,7 @@ function createSaveButtons(subsection) {
save_button_controls.set_find_results( save_button_controls.set_find_results(
".discard-button", stub_discard_button, ".discard-button", stub_discard_button,
); );
const props = {}; const props = {};
props.hidden = false; props.hidden = false;
save_button_controls.fadeIn = () => { save_button_controls.fadeIn = () => {
props.hidden = false; props.hidden = false;

View File

@@ -150,7 +150,7 @@ run_test("update_property", () => {
}); });
const args = stub.get_args("sub", "val"); const args = stub.get_args("sub", "val");
assert.equal(args.sub.stream_id, 1); assert.equal(args.sub.stream_id, 1);
assert.deepEqual(args.val, { assert.deepEqual(args.val, {
invite_only: true, invite_only: true,
history_public_to_subscribers: true, history_public_to_subscribers: true,
}); });

View File

@@ -116,9 +116,9 @@ run_test("create_sidebar_row", () => {
assert(topic_list_cleared); assert(topic_list_cleared);
const expected_elems = [ const expected_elems = [
devel_sidebar, //pinned devel_sidebar, //pinned
split, //separator split, //separator
social_sidebar, //not pinned social_sidebar, //not pinned
]; ];
assert.deepEqual(appended_elems, expected_elems); assert.deepEqual(appended_elems, expected_elems);
@@ -229,7 +229,7 @@ function add_row(sub) {
const html = "<" + sub.name + " sidebar row html>"; const html = "<" + sub.name + " sidebar row html>";
const obj = $(html); const obj = $(html);
obj.length = 1; // bypass blueslip error obj.length = 1; // bypass blueslip error
return obj; return obj;
}, },

View File

@@ -174,7 +174,7 @@ run_test("expanding_sidebar", () => {
popovers.hide_all = () => { popovers.hide_all = () => {
events.push("popovers.hide_all"); events.push("popovers.hide_all");
}; };
stream_popover.show_streamlist_sidebar = () => { stream_popover.show_streamlist_sidebar = () => {
events.push("stream_popover.show_streamlist_sidebar"); events.push("stream_popover.show_streamlist_sidebar");
}; };

View File

@@ -77,7 +77,7 @@ run_test("render_now_returns_year_with_year_boundary", () => {
run_test("render_date_renders_time_html", () => { run_test("render_date_renders_time_html", () => {
const today = new XDate(1555091573000); // Friday 4/12/2019 5:52:53 PM (UTC+0) const today = new XDate(1555091573000); // Friday 4/12/2019 5:52:53 PM (UTC+0)
const message_time = today.clone(); const message_time = today.clone();
const expected_html = i18n.t("Today"); const expected_html = i18n.t("Today");
const attrs = {}; const attrs = {};

View File

@@ -171,7 +171,7 @@ run_test("upload_files", () => {
hide_upload_status_called = true; hide_upload_status_called = true;
assert(config.mode, "compose"); assert(config.mode, "compose");
}; };
const config = {mode: "compose"}; const config = {mode: "compose"};
$("#compose-send-button").attr("disabled", false); $("#compose-send-button").attr("disabled", false);
upload.upload_files(uppy, config, []); upload.upload_files(uppy, config, []);
assert.equal($("#compose-send-button").attr("disabled"), false); assert.equal($("#compose-send-button").attr("disabled"), false);

View File

@@ -59,7 +59,7 @@ async function realm_creation_tests(page) {
// Check if realm is created and user is logged in by checking if // Check if realm is created and user is logged in by checking if
// element of id `lightbox_overlay` exists. // element of id `lightbox_overlay` exists.
await page.waitForSelector("#lightbox_overlay"); // if element doesn't exist,timeout error raises await page.waitForSelector("#lightbox_overlay"); // if element doesn't exist,timeout error raises
} }
common.run_test(realm_creation_tests); common.run_test(realm_creation_tests);

View File

@@ -50,7 +50,7 @@ function apply_color(input_string, changes) {
* directions to add appropriate color to the lines that they annotate. * directions to add appropriate color to the lines that they annotate.
*/ */
function parse_questionmark_line(questionmark_line) { function parse_questionmark_line(questionmark_line) {
let current_sequence = ""; // Either "^", "-", "+", or "" let current_sequence = ""; // Either "^", "-", "+", or ""
let beginning_index = 0; let beginning_index = 0;
let index = 0; let index = 0;

View File

@@ -507,7 +507,7 @@ exports.make_zjquery = function (opts) {
return elems.get(selector); return elems.get(selector);
}; };
zjquery.create = function (name) { zjquery.create = function (name) {
assert(!elems.has(name), assert(!elems.has(name),
"You already created an object with this name!!"); "You already created an object with this name!!");
const elem = new_elem(name); const elem = new_elem(name);

View File

@@ -6,8 +6,8 @@ exports.create_ajax_request = function (url, form_name, stripe_token = null, num
const form_error = "#" + form_name + "-error"; const form_error = "#" + form_name + "-error";
const form_loading = "#" + form_name + "-loading"; const form_loading = "#" + form_name + "-loading";
const zulip_limited_section = "#zulip-limited-section"; const zulip_limited_section = "#zulip-limited-section";
const free_trial_alert_message = "#free-trial-alert-message"; const free_trial_alert_message = "#free-trial-alert-message";
loading.make_indicator($(form_loading_indicator), loading.make_indicator($(form_loading_indicator),
{text: "Processing ...", abs_positioned: true}); {text: "Processing ...", abs_positioned: true});

View File

@@ -7,7 +7,7 @@ const render_buddy_list_tooltip_content = require("../templates/buddy_list_toolt
function convert_enter_to_click(e) { function convert_enter_to_click(e) {
const key = e.which; const key = e.which;
if (key === 13) { // enter if (key === 13) { // enter
$(e.currentTarget).click(); $(e.currentTarget).click();
} }
} }

View File

@@ -806,7 +806,7 @@ exports.render_and_show_preview = function (preview_spinner, preview_content_box
if (content.length === 0) { if (content.length === 0) {
show_preview(i18n.t("Nothing to preview")); show_preview(i18n.t("Nothing to preview"));
} else { } else {
if (markdown.contains_backend_only_syntax(content)) { if (markdown.contains_backend_only_syntax(content)) {
const spinner = preview_spinner.expectOne(); const spinner = preview_spinner.expectOne();
loading.make_indicator(spinner); loading.make_indicator(spinner);
} else { } else {
@@ -1131,7 +1131,7 @@ exports.initialize = function () {
}, },
}); });
} else { } else {
video_call_link = page_params.jitsi_server_url + "/" + video_call_id; video_call_link = page_params.jitsi_server_url + "/" + video_call_id;
insert_video_call_url(video_call_link, target_textarea); insert_video_call_url(video_call_link, target_textarea);
} }
}); });

View File

@@ -2,7 +2,7 @@ const util = require("./util");
let focused_recipient; let focused_recipient;
let normal_display = false; let normal_display = false;
exports.should_fade_message = function (message) { exports.should_fade_message = function (message) {
return !util.same_recipient(focused_recipient, message); return !util.same_recipient(focused_recipient, message);
}; };

View File

@@ -36,8 +36,8 @@ function get_or_set(fieldname, keep_leading_whitespace) {
} }
// TODO: Break out setters and getter into their own functions. // TODO: Break out setters and getter into their own functions.
exports.stream_name = get_or_set("stream_message_recipient_stream"); exports.stream_name = get_or_set("stream_message_recipient_stream");
exports.topic = get_or_set("stream_message_recipient_topic"); exports.topic = get_or_set("stream_message_recipient_topic");
// We can't trim leading whitespace in `compose_textarea` because // We can't trim leading whitespace in `compose_textarea` because
// of the indented syntax for multi-line code blocks. // of the indented syntax for multi-line code blocks.
exports.message_content = get_or_set("compose-textarea", true); exports.message_content = get_or_set("compose-textarea", true);

View File

@@ -174,7 +174,7 @@ function handle_keydown(e) {
} }
const on_stream = target_sel === "#stream_message_recipient_stream"; const on_stream = target_sel === "#stream_message_recipient_stream";
const on_topic = target_sel === "#stream_message_recipient_topic"; const on_topic = target_sel === "#stream_message_recipient_topic";
const on_pm = target_sel === "#private_message_recipient"; const on_pm = target_sel === "#private_message_recipient";
const on_compose = target_sel === "#compose-textarea"; const on_compose = target_sel === "#compose-textarea";
@@ -709,7 +709,7 @@ exports.get_candidates = function (query) {
if (this.options.completions.topic) { if (this.options.completions.topic) {
// Stream regex modified from marked.js // Stream regex modified from marked.js
// Matches '#**stream name** >' at the end of a split. // Matches '#**stream name** >' at the end of a split.
const stream_regex = /#\*\*([^*>]+)\*\*\s?>$/; const stream_regex = /#\*\*([^*>]+)\*\*\s?>$/;
const should_jump_inside_typeahead = stream_regex.test(split[0]); const should_jump_inside_typeahead = stream_regex.test(split[0]);
if (should_jump_inside_typeahead) { if (should_jump_inside_typeahead) {
this.completing = "topic_jump"; this.completing = "topic_jump";
@@ -892,7 +892,7 @@ exports.content_typeahead_selected = function (item, event) {
const on_timestamp_selection = (val) => { const on_timestamp_selection = (val) => {
const datestr = val; const datestr = val;
beginning = beginning.substring(0, beginning.lastIndexOf("<time")) + `<time:${datestr}> `; beginning = beginning.substring(0, beginning.lastIndexOf("<time")) + `<time:${datestr}> `;
if (rest.startsWith(">")) { if (rest.startsWith(">")) {
rest = rest.slice(1); rest = rest.slice(1);
} }

View File

@@ -204,7 +204,7 @@ exports.restore_draft = function (draft_id) {
const DRAFT_LIFETIME = 30; const DRAFT_LIFETIME = 30;
exports.remove_old_drafts = function () { exports.remove_old_drafts = function () {
const old_date = new Date().setDate(new Date().getDate() - DRAFT_LIFETIME); const old_date = new Date().setDate(new Date().getDate() - DRAFT_LIFETIME);
const drafts = draft_model.get(); const drafts = draft_model.get();
for (const [id, draft] of Object.entries(drafts)) { for (const [id, draft] of Object.entries(drafts)) {
if (draft.updatedAt < old_date) { if (draft.updatedAt < old_date) {

View File

@@ -213,7 +213,7 @@ function filter_emojis() {
const match = search_terms.every((search_term) => alias.includes(search_term)); const match = search_terms.every((search_term) => alias.includes(search_term));
if (match) { if (match) {
search_results.push({...emoji_dict, emoji_name: alias}); search_results.push({...emoji_dict, emoji_name: alias});
break; // We only need the first matching alias per emoji. break; // We only need the first matching alias per emoji.
} }
} }
} }
@@ -353,7 +353,7 @@ function get_next_emoji_coordinates(move_by) {
if (move_by === -6) { if (move_by === -6) {
max_len = get_max_index(next_section); max_len = get_max_index(next_section);
const prev_multiple = round_off_to_previous_multiple(max_len, 6); const prev_multiple = round_off_to_previous_multiple(max_len, 6);
next_index = prev_multiple + current_index; next_index = prev_multiple + current_index;
next_index = next_index >= max_len next_index = next_index >= max_len
? prev_multiple + current_index - 6 ? prev_multiple + current_index - 6
: next_index; : next_index;
@@ -505,9 +505,9 @@ function process_keypress(e) {
const old_query = emoji_filter.val(); const old_query = emoji_filter.val();
let new_query = ""; let new_query = "";
if (pressed_key === 8) { // Handles backspace. if (pressed_key === 8) { // Handles backspace.
new_query = old_query.slice(0, -1); new_query = old_query.slice(0, -1);
} else { // Handles any printable character. } else { // Handles any printable character.
const key_str = String.fromCharCode(e.which); const key_str = String.fromCharCode(e.which);
new_query = old_query + key_str; new_query = old_query + key_str;
} }

View File

@@ -5,19 +5,19 @@
// auto-completing code blocks missing a trailing close. // auto-completing code blocks missing a trailing close.
// See backend fenced_code.py:71 for associated regexp // See backend fenced_code.py:71 for associated regexp
const fencestr = "^(~{3,}|`{3,})" + // Opening Fence const fencestr = "^(~{3,}|`{3,})" + // Opening Fence
"[ ]*" + // Spaces "[ ]*" + // Spaces
"(" + "(" +
"\\{?\\.?" + "\\{?\\.?" +
"([a-zA-Z0-9_+-./#]*)" + // Language "([a-zA-Z0-9_+-./#]*)" + // Language
"\\}?" + "\\}?" +
")" + ")" +
"[ ]*" + // Spaces "[ ]*" + // Spaces
"(" + "(" +
"\\{?\\.?" + "\\{?\\.?" +
"([^~`]*)" + // Header (see fenced_code.py) "([^~`]*)" + // Header (see fenced_code.py)
"\\}?" + "\\}?" +
")" + ")" +
"$"; "$";
const fence_re = new RegExp(fencestr); const fence_re = new RegExp(fencestr);

View File

@@ -260,7 +260,7 @@ function decodeOperand(encoded, operator) {
// Parse a string into a list of operators (see below). // Parse a string into a list of operators (see below).
Filter.parse = function (str) { Filter.parse = function (str) {
const operators = []; const operators = [];
const search_term = []; const search_term = [];
let negated; let negated;
let operator; let operator;
@@ -494,7 +494,7 @@ Filter.prototype = {
if (!this._sub) { if (!this._sub) {
return "#"; return "#";
} }
return "/#narrow/stream/" + stream_data.name_to_slug(this.operands("stream")[0]) + "/topic/" + this.operands("topic")[0]; return "/#narrow/stream/" + stream_data.name_to_slug(this.operands("stream")[0]) + "/topic/" + this.operands("topic")[0];
} }
// eliminate "complex filters" // eliminate "complex filters"
@@ -509,22 +509,22 @@ Filter.prototype = {
if (!this._sub) { if (!this._sub) {
return "#"; return "#";
} }
return "/#narrow/stream/" + stream_data.name_to_slug(this.operands("stream")[0]); return "/#narrow/stream/" + stream_data.name_to_slug(this.operands("stream")[0]);
case "is-private": case "is-private":
return "/#narrow/is/private"; return "/#narrow/is/private";
case "is-starred": case "is-starred":
return "/#narrow/is/starred"; return "/#narrow/is/starred";
case "is-mentioned": case "is-mentioned":
return "/#narrow/is/mentioned"; return "/#narrow/is/mentioned";
case "streams-public": case "streams-public":
return "/#narrow/streams/public"; return "/#narrow/streams/public";
case "pm-with": case "pm-with":
// join is used to transform the array to a comma separated string // join is used to transform the array to a comma separated string
return "/#narrow/pm-with/" + people.emails_to_slug(this.operands("pm-with").join()); return "/#narrow/pm-with/" + people.emails_to_slug(this.operands("pm-with").join());
// TODO: It is ambiguous how we want to handle the 'sender' case, // TODO: It is ambiguous how we want to handle the 'sender' case,
// we may remove it in the future based on design decisions // we may remove it in the future based on design decisions
case "sender": case "sender":
return "/#narrow/sender/" + people.emails_to_slug(this.operands("sender")[0]); return "/#narrow/sender/" + people.emails_to_slug(this.operands("sender")[0]);
} }
} }

View File

@@ -190,7 +190,7 @@ exports.parse_narrow = function (hash) {
operator = operator.slice(1); operator = operator.slice(1);
} }
const operand = exports.decode_operand(operator, raw_operand); const operand = exports.decode_operand(operator, raw_operand);
operators.push({negated: negated, operator: operator, operand: operand}); operators.push({negated: negated, operator: operator, operand: operand});
} }
return operators; return operators;

View File

@@ -18,7 +18,7 @@ function get_full_url(hash) {
} }
// Build a full URL to not have same origin problems // Build a full URL to not have same origin problems
const url = location.protocol + "//" + location.host + pathname + hash; const url = location.protocol + "//" + location.host + pathname + hash;
return url; return url;
} }
@@ -88,7 +88,7 @@ function do_hashchange_normal(from_reload) {
return false; return false;
} }
const narrow_opts = { const narrow_opts = {
change_hash: false, // already set change_hash: false, // already set
trigger: "hash change", trigger: "hash change",
}; };
if (from_reload) { if (from_reload) {

View File

@@ -26,7 +26,7 @@ const menu_dropdown_hotkeys = [
const keydown_shift_mappings = { const keydown_shift_mappings = {
// these can be triggered by shift + key only // these can be triggered by shift + key only
9: {name: "shift_tab", message_view_only: false}, // tab 9: {name: "shift_tab", message_view_only: false}, // tab
32: {name: "shift_spacebar", message_view_only: true}, // space bar 32: {name: "shift_spacebar", message_view_only: true}, // space bar
37: {name: "left_arrow", message_view_only: false}, // left arrow 37: {name: "left_arrow", message_view_only: false}, // left arrow
39: {name: "right_arrow", message_view_only: false}, // right arrow 39: {name: "right_arrow", message_view_only: false}, // right arrow
38: {name: "up_arrow", message_view_only: false}, // up arrow 38: {name: "up_arrow", message_view_only: false}, // up arrow

View File

@@ -13,7 +13,7 @@ i18next.init({
prefix: "__", prefix: "__",
suffix: "__", suffix: "__",
}, },
returnEmptyString: false, // Empty string is not a valid translation. returnEmptyString: false, // Empty string is not a valid translation.
}); });
window.i18n = i18next; window.i18n = i18next;

View File

@@ -42,7 +42,7 @@ exports.send_read = (function () {
start = _.throttle(server_request, 1000); start = _.throttle(server_request, 1000);
on_success = function on_success(data) { on_success = function on_success(data) {
if (data === undefined || data.messages === undefined) { if (data === undefined || data.messages === undefined) {
return; return;
} }

View File

@@ -121,7 +121,7 @@ exports.MessageList.prototype = {
return this.data.can_mark_messages_read(); return this.data.can_mark_messages_read();
}, },
clear: function MessageList_clear(opts) { clear: function MessageList_clear(opts) {
opts = {clear_selected_id: true, ...opts}; opts = {clear_selected_id: true, ...opts};
this.data.clear(); this.data.clear();

View File

@@ -357,7 +357,7 @@ MessageListData.prototype = {
} }
const start_idx = this._lower_bound(start); const start_idx = this._lower_bound(start);
const end_idx = this._lower_bound(end); const end_idx = this._lower_bound(end);
return this._items.slice(start_idx, end_idx + 1); return this._items.slice(start_idx, end_idx + 1);
}, },

View File

@@ -259,7 +259,7 @@ MessageListView.prototype = {
const message_reactions = reactions.get_message_reactions(message_container.msg); const message_reactions = reactions.get_message_reactions(message_container.msg);
message_container.msg.message_reactions = message_reactions; message_container.msg.message_reactions = message_reactions;
message_container.include_recipient = false; message_container.include_recipient = false;
message_container.include_footer = false; message_container.include_footer = false;
if (same_recipient(prev, message_container) && self.collapse_messages && if (same_recipient(prev, message_container) && self.collapse_messages &&
prev.msg.historical === message_container.msg.historical) { prev.msg.historical === message_container.msg.historical) {

View File

@@ -99,7 +99,7 @@ exports.set_message_booleans = function (message) {
message.historical = convert_flag("historical"); message.historical = convert_flag("historical");
message.starred = convert_flag("starred"); message.starred = convert_flag("starred");
message.mentioned = convert_flag("mentioned") || convert_flag("wildcard_mentioned"); message.mentioned = convert_flag("mentioned") || convert_flag("wildcard_mentioned");
message.mentioned_me_directly = convert_flag("mentioned"); message.mentioned_me_directly = convert_flag("mentioned");
message.collapsed = convert_flag("collapsed"); message.collapsed = convert_flag("collapsed");
message.alerted = convert_flag("has_alert_word"); message.alerted = convert_flag("has_alert_word");
@@ -133,7 +133,7 @@ exports.update_booleans = function (message, flags) {
} }
message.mentioned = convert_flag("mentioned") || convert_flag("wildcard_mentioned"); message.mentioned = convert_flag("mentioned") || convert_flag("wildcard_mentioned");
message.mentioned_me_directly = convert_flag("mentioned"); message.mentioned_me_directly = convert_flag("mentioned");
message.alerted = convert_flag("has_alert_word"); message.alerted = convert_flag("has_alert_word");
}; };

View File

@@ -396,7 +396,7 @@ exports.keep_pointer_in_view = function () {
// return true only if we make an actual adjustment, so // return true only if we make an actual adjustment, so
// that we know to short circuit the other direction // that we know to short circuit the other direction
if (in_view(next_row)) { if (in_view(next_row)) {
return false; // try other side return false; // try other side
} }
while (!in_view(next_row)) { while (!in_view(next_row)) {
candidate = get_next_row(next_row); candidate = get_next_row(next_row);

View File

@@ -205,7 +205,7 @@ exports.activate = function (raw_operators, opts) {
// Save how far from the pointer the top of the message list was. // Save how far from the pointer the top of the message list was.
exports.save_pre_narrow_offset_for_reload(); exports.save_pre_narrow_offset_for_reload();
let msg_data = new MessageListData({ let msg_data = new MessageListData({
filter: narrow_state.filter(), filter: narrow_state.filter(),
muting_enabled: muting_enabled, muting_enabled: muting_enabled,
}); });

View File

@@ -45,7 +45,7 @@ exports.search_string = function () {
// Collect operators which appear only once into an object, // Collect operators which appear only once into an object,
// and discard those which appear more than once. // and discard those which appear more than once.
function collect_single(operators) { function collect_single(operators) {
const seen = new Map(); const seen = new Map();
const result = new Map(); const result = new Map();
for (const elem of operators) { for (const elem of operators) {

View File

@@ -1,5 +1,5 @@
const util = require("./util"); const util = require("./util");
require("unorm"); // String.prototype.normalize polyfill for IE11 require("unorm"); // String.prototype.normalize polyfill for IE11
const FoldDict = require("./fold_dict").FoldDict; const FoldDict = require("./fold_dict").FoldDict;
const typeahead = require("../shared/js/typeahead"); const typeahead = require("../shared/js/typeahead");
const settings_data = require("./settings_data"); const settings_data = require("./settings_data");

View File

@@ -256,7 +256,7 @@ function show_user_info_popover(element, user, message) {
return; return;
} }
const is_sender_popover = message.sender_id === user.user_id; const is_sender_popover = message.sender_id === user.user_id;
render_user_info_popover(user, elt, is_sender_popover, "respond_personal_button", render_user_info_popover(user, elt, is_sender_popover, "respond_personal_button",
"message-info-popover", "right"); "message-info-popover", "right");

View File

@@ -91,9 +91,9 @@ function set_results(response) {
responses.forEach((response) => { responses.forEach((response) => {
if (response.fixture_name !== undefined) { if (response.fixture_name !== undefined) {
data += "Fixture: " + response.fixture_name; data += "Fixture: " + response.fixture_name;
data += "\nStatus Code: " + response.status_code; data += "\nStatus Code: " + response.status_code;
} else { } else {
data += "Status Code: " + response.status_code; data += "Status Code: " + response.status_code;
} }
data += "\nResponse: " + response.message + "\n\n"; data += "\nResponse: " + response.message + "\n\n";
}); });

View File

@@ -271,8 +271,8 @@ exports.initiate = function (options) {
let idle_control; let idle_control;
const random_variance = util.random_int(0, 1000 * 60 * 5); const random_variance = util.random_int(0, 1000 * 60 * 5);
const unconditional_timeout = 1000 * 60 * 30 + random_variance; const unconditional_timeout = 1000 * 60 * 30 + random_variance;
const composing_idle_timeout = 1000 * 60 * 7 + random_variance; const composing_idle_timeout = 1000 * 60 * 7 + random_variance;
const basic_idle_timeout = 1000 * 60 * 1 + random_variance; const basic_idle_timeout = 1000 * 60 * 1 + random_variance;
let compose_started_handler; let compose_started_handler;
function reload_from_idle() { function reload_from_idle() {

View File

@@ -385,7 +385,7 @@ exports.sync_realm_settings = function (property) {
} else if (property === "invite_required" || property === "invite_by_admins_only") { } else if (property === "invite_required" || property === "invite_by_admins_only") {
property = "user_invite_restriction"; property = "user_invite_restriction";
} }
const element = $("#id_realm_" + property); const element = $("#id_realm_" + property);
if (element.length) { if (element.length) {
discard_property_element_changes(element); discard_property_element_changes(element);
} }
@@ -967,7 +967,7 @@ exports.build_page = function () {
form_data.append("night", JSON.stringify(night)); form_data.append("night", JSON.stringify(night));
} }
const spinner = $(`${widget} .upload-spinner-background`).expectOne(); const spinner = $(`${widget} .upload-spinner-background`).expectOne();
const upload_text = $(`${widget} .settings-page-upload-text`).expectOne(); const upload_text = $(`${widget} .settings-page-upload-text`).expectOne();
const delete_button = $(`${widget} .settings-page-delete-button`).expectOne(); const delete_button = $(`${widget} .settings-page-delete-button`).expectOne();
const error_field = $(`${widget} .image_file_input_error`).expectOne(); const error_field = $(`${widget} .image_file_input_error`).expectOne();
realm_icon_logo_upload_start(spinner, upload_text, delete_button); realm_icon_logo_upload_start(spinner, upload_text, delete_button);

View File

@@ -340,8 +340,8 @@ exports.do_populate_profile_fields = function (profile_fields_data) {
// We should only call this internally or from tests. // We should only call this internally or from tests.
const profile_fields_table = $("#admin_profile_fields_table").expectOne(); const profile_fields_table = $("#admin_profile_fields_table").expectOne();
profile_fields_table.find("tr.profile-field-row").remove(); // Clear all rows. profile_fields_table.find("tr.profile-field-row").remove(); // Clear all rows.
profile_fields_table.find("tr.profile-field-form").remove(); // Clear all rows. profile_fields_table.find("tr.profile-field-form").remove(); // Clear all rows.
order = []; order = [];
for (const profile_field of profile_fields_data) { for (const profile_field of profile_fields_data) {

View File

@@ -433,7 +433,7 @@ function get_human_profile_data(fields_user_pills) {
} }
}); });
// Append user type field values also // Append user type field values also
for (const [field_id, field_pills] of fields_user_pills) { for (const [field_id, field_pills] of fields_user_pills) {
if (field_pills) { if (field_pills) {
const user_ids = user_pill.get_user_ids(field_pills); const user_ids = user_pill.get_user_ids(field_pills);
new_profile_data.push({ new_profile_data.push({

View File

@@ -311,7 +311,7 @@ exports.create_handlers_for_users = function (container) {
// 'Check all' and 'Uncheck all' visible users // 'Check all' and 'Uncheck all' visible users
container.on("click", ".subs_set_all_users", (e) => { container.on("click", ".subs_set_all_users", (e) => {
$("#user-checkboxes .checkbox").each((idx, li) => { $("#user-checkboxes .checkbox").each((idx, li) => {
if (li.style.display !== "none") { if (li.style.display !== "none") {
$(li.firstElementChild).prop("checked", true); $(li.firstElementChild).prop("checked", true);
} }
}); });

View File

@@ -458,7 +458,7 @@ exports.update_stream_privacy = function (sub, values) {
sub.history_public_to_subscribers = values.history_public_to_subscribers; sub.history_public_to_subscribers = values.history_public_to_subscribers;
}; };
exports.update_message_retention_setting = function (sub, message_retention_days) { exports.update_message_retention_setting = function (sub, message_retention_days) {
sub.message_retention_days = message_retention_days; sub.message_retention_days = message_retention_days;
}; };
@@ -845,7 +845,7 @@ exports.sort_for_stream_settings = function (stream_ids, order) {
return -1; return -1;
} }
function by_stream_name(id_a, id_b) { function by_stream_name(id_a, id_b) {
const stream_a_name = name(id_a); const stream_a_name = name(id_a);
const stream_b_name = name(id_b); const stream_b_name = name(id_b);
return String.prototype.localeCompare.call(stream_a_name, stream_b_name); return String.prototype.localeCompare.call(stream_a_name, stream_b_name);

View File

@@ -69,7 +69,7 @@ exports.get_retention_policy_text_for_subscription_type = function (sub) {
// If we are deleting messages, even if it's the organization // If we are deleting messages, even if it's the organization
// default, it's worth commenting on the policy. // default, it's worth commenting on the policy.
if (message_retention_days === null) { if (message_retention_days === null) {
message_retention_days = page_params.realm_message_retention_days; message_retention_days = page_params.realm_message_retention_days;
} }

View File

@@ -353,7 +353,7 @@ exports.refresh_pinned_or_unpinned_stream = function (sub) {
} }
}; };
exports.get_sidebar_stream_topic_info = function (filter) { exports.get_sidebar_stream_topic_info = function (filter) {
const result = { const result = {
stream_id: undefined, stream_id: undefined,
topic_selected: false, topic_selected: false,

View File

@@ -60,7 +60,7 @@ exports.render_now = function (time, today) {
// Current date is passed as an argument for unit testing // Current date is passed as an argument for unit testing
exports.last_seen_status_from_date = function (last_active_date, current_date) { exports.last_seen_status_from_date = function (last_active_date, current_date) {
if (typeof current_date === "undefined") { if (typeof current_date === "undefined") {
current_date = new XDate(); current_date = new XDate();
} }

View File

@@ -197,7 +197,7 @@ exports.get_next_topic = function (curr_stream, curr_topic) {
if (!stream_data.is_stream_muted_by_name(stream_name)) { if (!stream_data.is_stream_muted_by_name(stream_name)) {
return true; return true;
} }
if (stream_name === curr_stream) { if (stream_name === curr_stream) {
// We can use n within a muted stream if we are // We can use n within a muted stream if we are
// currently narrowed to it. // currently narrowed to it.
return true; return true;

View File

@@ -74,7 +74,7 @@ exports.reply_message = function (opts) {
content = mention + " " + content; content = mention + " " + content;
reply.type = "stream"; reply.type = "stream";
reply.to = stream; reply.to = stream;
reply.content = content; reply.content = content;
reply.topic = message.topic; reply.topic = message.topic;

View File

@@ -233,7 +233,7 @@ exports.unread_topic_counter = (function () {
self.get_counts = function () { self.get_counts = function () {
const res = {}; const res = {};
res.stream_unread_messages = 0; res.stream_unread_messages = 0;
res.stream_count = new Map(); // hash by stream_id -> count res.stream_count = new Map(); // hash by stream_id -> count
for (const [stream_id, per_stream_bucketer] of bucketer) { for (const [stream_id, per_stream_bucketer] of bucketer) {
// We track unread counts for streams that may be currently // We track unread counts for streams that may be currently

View File

@@ -51,8 +51,8 @@ async function run() {
await page.waitForSelector(messageSelector); await page.waitForSelector(messageSelector);
// remove unread marker and don't select message // remove unread marker and don't select message
const marker = `#zfilt${options.messageId} .unread_marker`; const marker = `#zfilt${options.messageId} .unread_marker`;
await page.evaluate((sel) => $(sel).remove(), marker); // eslint-disable-line no-undef await page.evaluate((sel) => $(sel).remove(), marker); // eslint-disable-line no-undef
await page.evaluate(() => navigate.up()); // eslint-disable-line no-undef await page.evaluate(() => navigate.up()); // eslint-disable-line no-undef
const messageBox = await page.$(messageSelector); const messageBox = await page.$(messageSelector);
const messageGroup = (await messageBox.$x(".."))[0]; const messageGroup = (await messageBox.$x(".."))[0];
// Compute screenshot area, with some padding around the message group // Compute screenshot area, with some padding around the message group

View File

@@ -30,7 +30,7 @@ export default (env?: string): webpack.Configuration[] => {
{ {
loader: "css-loader", loader: "css-loader",
options: { options: {
url: false, // webfonts-loader generates public relative URLs url: false, // webfonts-loader generates public relative URLs
}, },
}, },
{ {