eslint: Fix unicorn/prefer-spread.

This was initially disabled for IE/Babel-related reasons that no
longer apply.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2023-03-01 16:58:25 -08:00 committed by Tim Abbott
parent 941a9bab38
commit 2a70c11c5f
77 changed files with 218 additions and 216 deletions

View File

@ -116,7 +116,6 @@
"unicorn/numeric-separators-style": "off", "unicorn/numeric-separators-style": "off",
"unicorn/prefer-module": "off", "unicorn/prefer-module": "off",
"unicorn/prefer-node-protocol": "off", "unicorn/prefer-node-protocol": "off",
"unicorn/prefer-spread": "off",
"unicorn/prefer-ternary": "off", "unicorn/prefer-ternary": "off",
"unicorn/prefer-top-level-await": "off", "unicorn/prefer-top-level-await": "off",
"unicorn/prevent-abbreviations": "off", "unicorn/prevent-abbreviations": "off",

View File

@ -65,7 +65,7 @@ export class PollData {
const options = []; const options = [];
for (const [key, obj] of this.key_to_option) { for (const [key, obj] of this.key_to_option) {
const voters = Array.from(obj.votes.keys()); const voters = [...obj.votes.keys()];
const current_user_vote = voters.includes(this.me); const current_user_vote = voters.includes(this.me);
options.push({ options.push({

View File

@ -147,7 +147,7 @@ export function triage<T>(
} }
} }
return { return {
matches: exactMatch.concat(beginswithCaseSensitive.concat(beginswithCaseInsensitive)), matches: [...exactMatch, ...beginswithCaseSensitive, ...beginswithCaseInsensitive],
rest: noMatch, rest: noMatch,
}; };
} }

View File

@ -23,7 +23,7 @@ const services = new Map();
const services_fields = ["base_url", "interface", "config_data", "service_name", "token"]; const services_fields = ["base_url", "interface", "config_data", "service_name", "token"];
export function all_user_ids() { export function all_user_ids() {
return Array.from(bots.keys()); return [...bots.keys()];
} }
export function add(bot) { export function add(bot) {

View File

@ -292,7 +292,7 @@ function filter_user_ids(user_filter_text, user_ids) {
const user_id_dict = people.filter_people_by_search_terms(persons, search_terms); const user_id_dict = people.filter_people_by_search_terms(persons, search_terms);
return Array.from(user_id_dict.keys()); return [...user_id_dict.keys()];
} }
function get_filtered_user_id_list(user_filter_text) { function get_filtered_user_id_list(user_filter_text) {

View File

@ -35,7 +35,7 @@ const stream_colors = [
export const colors = _.shuffle(stream_colors); export const colors = _.shuffle(stream_colors);
export function reset(): void { export function reset(): void {
unused_colors = colors.slice(); unused_colors = [...colors];
} }
reset(); reset();

View File

@ -141,7 +141,7 @@ export function warn_if_mentioning_unsubscribed_user(mentioned) {
`#compose_banners .${compose_banner.CLASSNAMES.recipient_not_subscribed}`, `#compose_banners .${compose_banner.CLASSNAMES.recipient_not_subscribed}`,
); );
const existing_invites = Array.from($existing_invites_area, (user_row) => const existing_invites = [...$existing_invites_area].map((user_row) =>
Number.parseInt($(user_row).data("user-id"), 10), Number.parseInt($(user_row).data("user-id"), 10),
); );

View File

@ -466,7 +466,7 @@ export function get_person_suggestions(query, opts) {
persons = muted_users.filter_muted_users(persons); persons = muted_users.filter_muted_users(persons);
if (opts.want_broadcast) { if (opts.want_broadcast) {
persons = persons.concat(broadcast_mentions()); persons = [...persons, ...broadcast_mentions()];
} }
return persons.filter((item) => query_matches_person(query, item)); return persons.filter((item) => query_matches_person(query, item));

View File

@ -641,7 +641,7 @@ export function launch() {
$("#draft_overlay").css("opacity"); $("#draft_overlay").css("opacity");
open_overlay(); open_overlay();
set_initial_element(formatted_narrow_drafts.concat(formatted_other_drafts)); set_initial_element([...formatted_narrow_drafts, ...formatted_other_drafts]);
setup_event_handlers(); setup_event_handlers();
} }

View File

@ -122,7 +122,7 @@ export function rebuild_catalog() {
const catalog = new Map(); const catalog = new Map();
catalog.set( catalog.set(
"Custom", "Custom",
Array.from(realm_emojis.keys(), (realm_emoji_name) => [...realm_emojis.keys()].map((realm_emoji_name) =>
emoji.emojis_by_name.get(realm_emoji_name), emoji.emojis_by_name.get(realm_emoji_name),
), ),
); );

View File

@ -947,7 +947,7 @@ export class Filter {
return util.strcmp(a, b); return util.strcmp(a, b);
}; };
return term_types.slice().sort(compare); return [...term_types].sort(compare);
} }
static operator_to_prefix(operator, negated) { static operator_to_prefix(operator, negated) {
@ -1060,7 +1060,7 @@ export class Filter {
} }
return "unknown operator"; return "unknown operator";
}); });
return parts.concat(more_parts).join(", "); return [...parts, ...more_parts].join(", ");
} }
static describe(operators) { static describe(operators) {

View File

@ -160,7 +160,7 @@ export function group_edit_url(group) {
export function search_public_streams_notice_url(operators) { export function search_public_streams_notice_url(operators) {
const public_operator = {operator: "streams", operand: "public"}; const public_operator = {operator: "streams", operand: "public"};
return operators_to_hash([public_operator].concat(operators)); return operators_to_hash([public_operator, ...operators]);
} }
export function parse_narrow(hash) { export function parse_narrow(hash) {

View File

@ -252,7 +252,7 @@ export function close_hotspot_icon(elem) {
function close_read_hotspots(new_hotspots) { function close_read_hotspots(new_hotspots) {
const unwanted_hotspots = _.difference( const unwanted_hotspots = _.difference(
Array.from(HOTSPOT_LOCATIONS.keys()), [...HOTSPOT_LOCATIONS.keys()],
new_hotspots.map((hotspot) => hotspot.name), new_hotspots.map((hotspot) => hotspot.name),
); );

View File

@ -23,7 +23,7 @@ export function process_loaded_messages(messages) {
} }
export function get_huddles() { export function get_huddles() {
let huddles = Array.from(huddle_timestamps.keys()); let huddles = [...huddle_timestamps.keys()];
huddles = _.sortBy(huddles, (huddle) => huddle_timestamps.get(huddle)); huddles = _.sortBy(huddles, (huddle) => huddle_timestamps.get(huddle));
return huddles.reverse(); return huddles.reverse();
} }

View File

@ -71,7 +71,7 @@ export class LazySet {
} }
map<T>(f: (v: number, k: number) => T): T[] { map<T>(f: (v: number, k: number) => T): T[] {
return Array.from(this.keys(), f); return [...this.keys()].map((v, k) => f(v, k));
} }
has(v: number): boolean { has(v: number): boolean {

View File

@ -33,7 +33,7 @@ function python_to_js_linkifier(pattern, url) {
// JS regexes only support i (case insensitivity) and m (multiline) // JS regexes only support i (case insensitivity) and m (multiline)
// flags, so keep those and ignore the rest // flags, so keep those and ignore the rest
if (match) { if (match) {
const py_flags = match[1].split(""); const py_flags = match[1];
for (const flag of py_flags) { for (const flag of py_flags) {
if ("im".includes(flag)) { if ("im".includes(flag)) {

View File

@ -486,7 +486,7 @@ function handleTex(tex, fullmatch) {
export function parse({raw_content, helper_config}) { export function parse({raw_content, helper_config}) {
function get_linkifier_regexes() { function get_linkifier_regexes() {
return Array.from(helper_config.get_linkifier_map().keys()); return [...helper_config.get_linkifier_map().keys()];
} }
function disable_markdown_regex(rules, name) { function disable_markdown_regex(rules, name) {

View File

@ -217,7 +217,7 @@ export function update_messages(events) {
if (msg.edit_history === undefined) { if (msg.edit_history === undefined) {
msg.edit_history = []; msg.edit_history = [];
} }
msg.edit_history = [edit_history_entry].concat(msg.edit_history); msg.edit_history = [edit_history_entry, ...msg.edit_history];
} }
any_message_content_edited = true; any_message_content_edited = true;
@ -312,7 +312,7 @@ export function update_messages(events) {
if (msg.edit_history === undefined) { if (msg.edit_history === undefined) {
msg.edit_history = []; msg.edit_history = [];
} }
msg.edit_history = [edit_history_entry].concat(msg.edit_history); msg.edit_history = [edit_history_entry, ...msg.edit_history];
} }
msg.last_edit_timestamp = event.edit_timestamp; msg.last_edit_timestamp = event.edit_timestamp;

View File

@ -197,7 +197,7 @@ export function load_messages(opts, attempt = 1) {
} else { } else {
let operators = opts.msg_list.data.filter.public_operators(); let operators = opts.msg_list.data.filter.public_operators();
if (page_params.narrow !== undefined) { if (page_params.narrow !== undefined) {
operators = operators.concat(page_params.narrow); operators = [...operators, ...page_params.narrow];
} }
data.narrow = JSON.stringify(operators); data.narrow = JSON.stringify(operators);
} }

View File

@ -53,7 +53,7 @@ export const send_read = (function () {
start = _.throttle(server_request, 1000); start = _.throttle(server_request, 1000);
function add(messages) { function add(messages) {
queue = queue.concat(messages); queue = [...queue, ...messages];
start(); start();
} }

View File

@ -337,10 +337,10 @@ export class MessageListData {
const viewable_messages = this.unmuted_messages(messages); const viewable_messages = this.unmuted_messages(messages);
this._all_items = messages.concat(this._all_items); this._all_items = [...messages, ...this._all_items];
this._all_items.sort((a, b) => a.id - b.id); this._all_items.sort((a, b) => a.id - b.id);
this._items = viewable_messages.concat(this._items); this._items = [...viewable_messages, ...this._items];
this._items.sort((a, b) => a.id - b.id); this._items.sort((a, b) => a.id - b.id);
this._add_to_hash(messages); this._add_to_hash(messages);
@ -351,8 +351,8 @@ export class MessageListData {
// Caller should have already filtered // Caller should have already filtered
const viewable_messages = this.unmuted_messages(messages); const viewable_messages = this.unmuted_messages(messages);
this._all_items = this._all_items.concat(messages); this._all_items = [...this._all_items, ...messages];
this._items = this._items.concat(viewable_messages); this._items = [...this._items, ...viewable_messages];
this._add_to_hash(messages); this._add_to_hash(messages);
return viewable_messages; return viewable_messages;
@ -362,8 +362,8 @@ export class MessageListData {
// Caller should have already filtered // Caller should have already filtered
const viewable_messages = this.unmuted_messages(messages); const viewable_messages = this.unmuted_messages(messages);
this._all_items = messages.concat(this._all_items); this._all_items = [...messages, ...this._all_items];
this._items = viewable_messages.concat(this._items); this._items = [...viewable_messages, ...this._items];
this._add_to_hash(messages); this._add_to_hash(messages);
return viewable_messages; return viewable_messages;

View File

@ -541,9 +541,10 @@ export class MessageListView {
) { ) {
first_msg_container.include_sender = false; first_msg_container.include_sender = false;
} }
first_group.message_containers = first_group.message_containers.concat( first_group.message_containers = [
second_group.message_containers, ...first_group.message_containers,
); ...second_group.message_containers,
];
return true; return true;
} }
@ -626,7 +627,7 @@ export class MessageListView {
message_actions.rerender_groups.push(second_group); message_actions.rerender_groups.push(second_group);
} }
message_actions.prepend_groups = new_message_groups; message_actions.prepend_groups = new_message_groups;
this._message_groups = new_message_groups.concat(this._message_groups); this._message_groups = [...new_message_groups, ...this._message_groups];
} else { } else {
if (was_joined) { if (was_joined) {
// rerender the last message // rerender the last message
@ -642,7 +643,7 @@ export class MessageListView {
} }
} }
message_actions.append_groups = new_message_groups; message_actions.append_groups = new_message_groups;
this._message_groups = this._message_groups.concat(new_message_groups); this._message_groups = [...this._message_groups, ...new_message_groups];
} }
return message_actions; return message_actions;
@ -787,7 +788,7 @@ export class MessageListView {
const new_message_groups = this.build_message_groups(message_containers, this.table_name); const new_message_groups = this.build_message_groups(message_containers, this.table_name);
const message_actions = this.merge_message_groups(new_message_groups, where); const message_actions = this.merge_message_groups(new_message_groups, where);
let new_dom_elements = []; const new_dom_elements = [];
let $rendered_groups; let $rendered_groups;
let $dom_messages; let $dom_messages;
let $last_message_row; let $last_message_row;
@ -808,7 +809,7 @@ export class MessageListView {
}); });
$dom_messages = $rendered_groups.find(".message_row"); $dom_messages = $rendered_groups.find(".message_row");
new_dom_elements = new_dom_elements.concat($rendered_groups); new_dom_elements.push($rendered_groups);
this._post_process($dom_messages); this._post_process($dom_messages);
@ -857,7 +858,7 @@ export class MessageListView {
$last_group_row.append($dom_messages); $last_group_row.append($dom_messages);
condense.condense_and_collapse($dom_messages); condense.condense_and_collapse($dom_messages);
new_dom_elements = new_dom_elements.concat($dom_messages); new_dom_elements.push($dom_messages);
} }
// Add new message groups to the end // Add new message groups to the end
@ -872,7 +873,7 @@ export class MessageListView {
}); });
$dom_messages = $rendered_groups.find(".message_row"); $dom_messages = $rendered_groups.find(".message_row");
new_dom_elements = new_dom_elements.concat($rendered_groups); new_dom_elements.push($rendered_groups);
this._post_process($dom_messages); this._post_process($dom_messages);

View File

@ -18,7 +18,7 @@ export function clear_for_testing(): void {
} }
export function user_ids(): number[] { export function user_ids(): number[] {
return Array.from(user_set); return [...user_set];
} }
export function add_user_id(user_id: number): void { export function add_user_id(user_id: number): void {

View File

@ -39,7 +39,7 @@ export function is_subscriber_subset(stream_id1, stream_id2) {
const sub1_set = get_user_set(stream_id1); const sub1_set = get_user_set(stream_id1);
const sub2_set = get_user_set(stream_id2); const sub2_set = get_user_set(stream_id2);
return Array.from(sub1_set.keys()).every((key) => sub2_set.has(key)); return [...sub1_set.keys()].every((key) => sub2_set.has(key));
} }
export function potential_subscribers(stream_id) { export function potential_subscribers(stream_id) {
@ -86,7 +86,7 @@ export function get_subscribers(stream_id) {
// want an array of user_ids who are subscribed to a stream. // want an array of user_ids who are subscribed to a stream.
const subscribers = get_user_set(stream_id); const subscribers = get_user_set(stream_id);
return Array.from(subscribers.keys()); return [...subscribers.keys()];
} }
export function set_subscribers(stream_id, user_ids) { export function set_subscribers(stream_id, user_ids) {

View File

@ -864,7 +864,7 @@ export function filter_all_users(pred) {
export function get_realm_users() { export function get_realm_users() {
// includes humans and bots from your realm // includes humans and bots from your realm
return Array.from(active_user_dict.values()); return [...active_user_dict.values()];
} }
export function get_active_human_ids() { export function get_active_human_ids() {
@ -915,11 +915,11 @@ export function get_active_human_count() {
export function get_active_user_ids() { export function get_active_user_ids() {
// This includes active users and active bots. // This includes active users and active bots.
return Array.from(active_user_dict.keys()); return [...active_user_dict.keys()];
} }
export function get_non_active_realm_users() { export function get_non_active_realm_users() {
return Array.from(non_active_user_dict.values()); return [...non_active_user_dict.values()];
} }
export function is_cross_realm_email(email) { export function is_cross_realm_email(email) {

View File

@ -44,7 +44,7 @@ export function set_up($input, pills, opts) {
} }
if (include_user_groups) { if (include_user_groups) {
source = source.concat(user_group_pill.typeahead_source(pills)); source = [...source, ...user_group_pill.typeahead_source(pills)];
} }
if (include_users) { if (include_users) {
@ -52,9 +52,9 @@ export function set_up($input, pills, opts) {
// If user_source is specified in opts, it // If user_source is specified in opts, it
// is given priority. Otherwise we use // is given priority. Otherwise we use
// default user_pill.typeahead_source. // default user_pill.typeahead_source.
source = source.concat(opts.user_source()); source = [...source, ...opts.user_source()];
} else { } else {
source = source.concat(user_pill.typeahead_source(pills)); source = [...source, ...user_pill.typeahead_source(pills)];
} }
} }
return source; return source;

View File

@ -490,7 +490,7 @@ function show_user_group_info_popover(element, group, message) {
const args = { const args = {
group_name: group.name, group_name: group.name,
group_description: group.description, group_description: group.description,
members: sort_group_members(fetch_group_members(Array.from(group.members))), members: sort_group_members(fetch_group_members([...group.members])),
}; };
$elt.popover({ $elt.popover({
placement: calculate_info_popover_placement(popover_size, $elt), placement: calculate_info_popover_placement(popover_size, $elt),

View File

@ -43,7 +43,7 @@ async function decrypt_manual() {
? window.electron_bridge.decrypt_clipboard(1) ? window.electron_bridge.decrypt_clipboard(1)
: await decrypt_manual(); : await decrypt_manual();
const keyHex = Array.from(key, (b) => b.toString(16).padStart(2, "0")).join(""); const keyHex = [...key].map((b) => b.toString(16).padStart(2, "0")).join("");
window.open( window.open(
(window.location.search ? window.location.search + "&" : "?") + (window.location.search ? window.location.search + "&" : "?") +
"desktop_flow_otp=" + "desktop_flow_otp=" +

View File

@ -41,7 +41,7 @@ export function get_status(user_id) {
} }
export function get_user_ids() { export function get_user_ids() {
return Array.from(presence_info.keys()); return [...presence_info.keys()];
} }
export function status_from_raw(raw) { export function status_from_raw(raw) {

View File

@ -403,7 +403,7 @@ export function get_emojis_used_by_user_for_message_id(message_id) {
export function get_message_reactions(message) { export function get_message_reactions(message) {
set_clean_reactions(message); set_clean_reactions(message);
return Array.from(message.clean_reactions.values()); return [...message.clean_reactions.values()];
} }
export function set_clean_reactions(message) { export function set_clean_reactions(message) {

View File

@ -54,7 +54,7 @@ export function get_pygments_typeahead_list_for_composebox() {
const playground_pygment_langs = [...map_language_to_playground_info.keys()]; const playground_pygment_langs = [...map_language_to_playground_info.keys()];
const generated_pygment_langs = Object.keys(generated_pygments_data.langs); const generated_pygment_langs = Object.keys(generated_pygments_data.langs);
return playground_pygment_langs.concat(generated_pygment_langs); return [...playground_pygment_langs, ...generated_pygment_langs];
} }
// This gets the candidate list for showing autocomplete in settings when // This gets the candidate list for showing autocomplete in settings when
@ -78,7 +78,7 @@ export function get_pygments_typeahead_list_for_settings(query) {
} }
for (const [key, values] of map_pygments_pretty_name_to_aliases) { for (const [key, values] of map_pygments_pretty_name_to_aliases) {
language_labels.set(key, key + " (" + Array.from(values).join(", ") + ")"); language_labels.set(key, key + " (" + values.join(", ") + ")");
} }
return language_labels; return language_labels;

View File

@ -31,7 +31,7 @@ export class IdTracker {
max_id() { max_id() {
if (this._cached_max_id === undefined) { if (this._cached_max_id === undefined) {
this._cached_max_id = _.max(Array.from(this.ids)); this._cached_max_id = _.max([...this.ids]);
} }
return this._cached_max_id || -1; return this._cached_max_id || -1;
} }
@ -208,7 +208,7 @@ export function get_topic_recent_senders(stream_id, topic) {
return list2.max_id() - list1.max_id(); return list2.max_id() - list1.max_id();
} }
const sorted_senders = Array.from(sender_dict.entries()).sort(by_max_message_id); const sorted_senders = [...sender_dict.entries()].sort(by_max_message_id);
const recent_senders = []; const recent_senders = [];
for (const item of sorted_senders) { for (const item of sorted_senders) {
recent_senders.push(item[0]); recent_senders.push(item[0]);

View File

@ -43,9 +43,7 @@ export function process_message(msg) {
function get_sorted_topics() { function get_sorted_topics() {
// Sort all recent topics by last message time. // Sort all recent topics by last message time.
return new Map( return new Map([...topics.entries()].sort((a, b) => b[1].last_msg_id - a[1].last_msg_id));
Array.from(topics.entries()).sort((a, b) => b[1].last_msg_id - a[1].last_msg_id),
);
} }
export function get() { export function get() {

View File

@ -103,7 +103,7 @@ export function clear_for_tests() {
} }
export function save_filters() { export function save_filters() {
ls.set(ls_key, Array.from(filters)); ls.set(ls_key, [...filters]);
} }
export function set_default_focus() { export function set_default_focus() {
@ -784,7 +784,7 @@ export function complete_rerender() {
} }
// Show topics list // Show topics list
const mapped_topic_values = Array.from(get().values()).map((value) => value); const mapped_topic_values = [...get().values()];
if (topics_widget) { if (topics_widget) {
topics_widget.replace_list_data(mapped_topic_values); topics_widget.replace_list_data(mapped_topic_values);

View File

@ -48,17 +48,18 @@ const digits =
* character of the range, and the last character of the range. * character of the range, and the last character of the range.
* All ranges are concatenated together and stored here. * All ranges are concatenated together and stored here.
*/ */
const rl_ranges = convert_from_raw( const rl_ranges = [
...convert_from_raw(
digits, digits,
2, 2,
'fIfIf}f}g0g0g3g3g6g6g8g"g,g,g/g/g;g;g~hKh?h[h^j1jhjijqjrjCjYj!j~krlplBm2mcmdmimJmOmOmYmYm#m#m*nknooP|j|j', 'fIfIf}f}g0g0g3g3g6g6g8g"g,g,g/g/g;g;g~hKh?h[h^j1jhjijqjrjCjYj!j~krlplBm2mcmdmimJmOmOmYmYm#m#m*nknooP|j|j',
).concat( ),
convert_from_raw( ...convert_from_raw(
digits, digits,
3, 3,
'7S)7S)7S+7S>7S@7YZ7Y#7!n7!U7!(7!*7!+7#07$O7}U81%81(84g84k84k84n84r84w84+84/84<84>86Y86"87Q87Y8gv8g"8k=e)]e,fe,ne-De-Le|je|mf0f', '7S)7S)7S+7S>7S@7YZ7Y#7!n7!U7!(7!*7!+7#07$O7}U81%81(84g84k84k84n84r84w84+84/84<84>86Y86"87Q87Y8gv8g"8k=e)]e,fe,ne-De-Le|je|mf0f',
), ),
); ];
/** /**
* Ranges of strong left-to-right characters. * Ranges of strong left-to-right characters.
* *
@ -66,18 +67,19 @@ const rl_ranges = convert_from_raw(
* character of the range, and the last character of the range. * character of the range, and the last character of the range.
* All ranges are concatenated together and stored here. * All ranges are concatenated together and stored here.
*/ */
const lr_ranges = convert_from_raw( const lr_ranges = [
...convert_from_raw(
digits, digits,
2, 2,
'0$0}151u1<1<1|1|2222282u2w2!2#7Q7T7Z7:7;80848e8e9Q9T9W9$9&9+9.9.9:b1b3cOcWfBfDfEp7pZp"p"p$p(p;p>p@p]q0q9qcqEqGr7r9rcrhrorqrJrMrZr#r*r,r:r=sHsJsMsPsSsVsWs!s#s%t3t6t8tatktnt=t?t]t}t}u1u4u6upusuEuGuUuWvnvpvqvsvsvxvEvGvNvPvZv#w1w3w"w$w:w<xmxvxzxBy5y9ydyhyhymysyvyFyIy"y+y,y.zDzFzTzWz;z>AgAiA>A^B0B2BlBoCxCzCFCJCJCLDIDKDLDTDWDYD%D/E>E@E[E}E}F1FbFiF~G2GsGuGuGwGwGCG{HbHbHhHhHkHoHAHAH-H?H[J0J5J5JcJcJfJgJjJHJKJNJRJ(J-J^J`J{J~K4K6KkKmR>R]SDSOTXTZ!T!V!@!^#h#l#N#R#?#]$l$o$`$}$}%6%d%f%g%s%y%A%A%C%T%%%+%`(k(n(U(W)[)`)}*1*9*b*g*k*n*p*r*u+|,w,S,V,W,Y-p-r-r-z-z-B-B-D-E-N-S-$-%-(.n.D/b/g/"/$/$/+/+/-/;/=:q:A:L:O:?:_:`:}:};2;V;X;X;!;#;%;%;*<z<I<J<M>f>j>j>x>x>F>I>K>P>R>T>W@+[y[C[I{s{u{u{y{I{M{Y{#{:{>|0|3|3|i|i}p}r}D}D}T}+~Z~/~<~<~[~[', '0$0}151u1<1<1|1|2222282u2w2!2#7Q7T7Z7:7;80848e8e9Q9T9W9$9&9+9.9.9:b1b3cOcWfBfDfEp7pZp"p"p$p(p;p>p@p]q0q9qcqEqGr7r9rcrhrorqrJrMrZr#r*r,r:r=sHsJsMsPsSsVsWs!s#s%t3t6t8tatktnt=t?t]t}t}u1u4u6upusuEuGuUuWvnvpvqvsvsvxvEvGvNvPvZv#w1w3w"w$w:w<xmxvxzxBy5y9ydyhyhymysyvyFyIy"y+y,y.zDzFzTzWz;z>AgAiA>A^B0B2BlBoCxCzCFCJCJCLDIDKDLDTDWDYD%D/E>E@E[E}E}F1FbFiF~G2GsGuGuGwGwGCG{HbHbHhHhHkHoHAHAH-H?H[J0J5J5JcJcJfJgJjJHJKJNJRJ(J-J^J`J{J~K4K6KkKmR>R]SDSOTXTZ!T!V!@!^#h#l#N#R#?#]$l$o$`$}$}%6%d%f%g%s%y%A%A%C%T%%%+%`(k(n(U(W)[)`)}*1*9*b*g*k*n*p*r*u+|,w,S,V,W,Y-p-r-r-z-z-B-B-D-E-N-S-$-%-(.n.D/b/g/"/$/$/+/+/-/;/=:q:A:L:O:?:_:`:}:};2;V;X;X;!;#;%;%;*<z<I<J<M>f>j>j>x>x>F>I>K>P>R>T>W@+[y[C[I{s{u{u{y{I{M{Y{#{:{>|0|3|3|i|i}p}r}D}D}T}+~Z~/~<~<~[~[',
).concat( ),
convert_from_raw( ...convert_from_raw(
digits, digits,
3, 3,
'0~_10310510510910d10k10k10m10m10o10o10q10t10v10F10I10L10R10V10!10"10>11s11w11z15}16%17117118f18f18T18=18~19j19>1a$1fU1fU1js1m71s]1s^1tq1tr1t!1t#1t;1t;1t_1uj1uo1w]1w~1x21x61xc1xk1yS1yU1zX1A)1Bz1B!1B!1CY1C+1Fa1Fz1FM1FP1FV1FX1F^1G11G61G71G91Gd1Gg1Gk1Go1Hk1Hp1Hr1Ht1Iq1Is1KD1K:1LE1LH1L~1Mg1MH1ML1N41Nk1Nv1NA1Pi1Pn1Qt1Qw1Q!1Q#2wv2x44|[4}L52452853a53s53V53Y54L54O54"55656f56h57J57L57N57P57S57U57>57[57[57{58758a58&58,59T59W59[5aa5aZ5a*5b25be5bX5b"5ci5ck5cl5cq5cr5ct5c(5c*5dI5dP5dQ5dT5dU5dX5d*5d,5d=5d?5ez5eB5e`5e|5e|5f15f25f55f95fc5fc5fe5fT5fW5f$5f&5is5iu5iv5ix5iA5iC7S(7"67"b7""7""7"[7"[7"{7"~7$Q7$Q7$^7%i7%p7%O7%!7&~7(77(77(f7(f7(w7+c7+e7+/7,Z7,"7,:7,=7,?7->7-@7:v7:Y7;|7<37}T8k>8k>8k@8lH8lX8l)8l}8mm8mq8m.8m=8m>8m[8nX8n"8o68oc8oc8ol8o@8o]8p38p68pV8p&8p;8p?8q_8q}8q~8r18r18r48r98rb8s<8s>8s@8s~8tj8tm8t=8t?8t[8t^8ut8uB8uD8uJ8wT8w#8w$8w)8w)8w+8x_8y18y18y38y68y98y98yc8A$8A*8A/8A<8A<8A?8Bf8Bi8Ca8Cj8Ck8Cm8Cm8Cp8CT8C)8DC8DE8DE8DG8DH8DO8DO8DQ8EY8E#8E$8E*8E*8E:8S+8S=8S=8S_8T;8U88U98Uh8Uh8Uk8Uk8Una|[a||a}Ta}"ba*ba/dFgdFjdFjdFoe72e76e7ee7ve7we7Ee7)e7.e8"e9GebHecDemiemkem:em<enGenIeo8eoaeo%eo(eo;epAeu`evPevSewdewkewmewzewBewWew#ew#ew>eLXeL&eL&eL^eL_eM2eM2eM5eM5eMbe)[f0Yf0"f1,f1[f27f28f2of2of2Ef2Ef2<f2`f39f49f4cf8LfjffjrfjFfjHfjPfjXfk]fl3fl|fmDfmQfmTfnkfnrfnCfnHfn]fn~foufpzfpPfpPfpYfp&fp)fp*fp[fp[fq4fq7fqnfqTfq.frrfrtfIZfI#nl1nl4u|xu|AC$$C$(KG5KG8SiBSiEZ_)Z_,)"9)"c;DF;DI^f-', '0~_10310510510910d10k10k10m10m10o10o10q10t10v10F10I10L10R10V10!10"10>11s11w11z15}16%17117118f18f18T18=18~19j19>1a$1fU1fU1js1m71s]1s^1tq1tr1t!1t#1t;1t;1t_1uj1uo1w]1w~1x21x61xc1xk1yS1yU1zX1A)1Bz1B!1B!1CY1C+1Fa1Fz1FM1FP1FV1FX1F^1G11G61G71G91Gd1Gg1Gk1Go1Hk1Hp1Hr1Ht1Iq1Is1KD1K:1LE1LH1L~1Mg1MH1ML1N41Nk1Nv1NA1Pi1Pn1Qt1Qw1Q!1Q#2wv2x44|[4}L52452853a53s53V53Y54L54O54"55656f56h57J57L57N57P57S57U57>57[57[57{58758a58&58,59T59W59[5aa5aZ5a*5b25be5bX5b"5ci5ck5cl5cq5cr5ct5c(5c*5dI5dP5dQ5dT5dU5dX5d*5d,5d=5d?5ez5eB5e`5e|5e|5f15f25f55f95fc5fc5fe5fT5fW5f$5f&5is5iu5iv5ix5iA5iC7S(7"67"b7""7""7"[7"[7"{7"~7$Q7$Q7$^7%i7%p7%O7%!7&~7(77(77(f7(f7(w7+c7+e7+/7,Z7,"7,:7,=7,?7->7-@7:v7:Y7;|7<37}T8k>8k>8k@8lH8lX8l)8l}8mm8mq8m.8m=8m>8m[8nX8n"8o68oc8oc8ol8o@8o]8p38p68pV8p&8p;8p?8q_8q}8q~8r18r18r48r98rb8s<8s>8s@8s~8tj8tm8t=8t?8t[8t^8ut8uB8uD8uJ8wT8w#8w$8w)8w)8w+8x_8y18y18y38y68y98y98yc8A$8A*8A/8A<8A<8A?8Bf8Bi8Ca8Cj8Ck8Cm8Cm8Cp8CT8C)8DC8DE8DE8DG8DH8DO8DO8DQ8EY8E#8E$8E*8E*8E:8S+8S=8S=8S_8T;8U88U98Uh8Uh8Uk8Uk8Una|[a||a}Ta}"ba*ba/dFgdFjdFjdFoe72e76e7ee7ve7we7Ee7)e7.e8"e9GebHecDemiemkem:em<enGenIeo8eoaeo%eo(eo;epAeu`evPevSewdewkewmewzewBewWew#ew#ew>eLXeL&eL&eL^eL_eM2eM2eM5eM5eMbe)[f0Yf0"f1,f1[f27f28f2of2of2Ef2Ef2<f2`f39f49f4cf8LfjffjrfjFfjHfjPfjXfk]fl3fl|fmDfmQfmTfnkfnrfnCfnHfn]fn~foufpzfpPfpPfpYfp&fp)fp*fp[fp[fq4fq7fqnfqTfq.frrfrtfIZfI#nl1nl4u|xu|AC$$C$(KG5KG8SiBSiEZ_)Z_,)"9)"c;DF;DI^f-',
), ),
convert_from_raw(digits, 4, "0^f:10]d10]g18YJ18YM1gA;1g?A1odh1odk1v?N1v?Q1DV?1DV]1DV]"), ...convert_from_raw(digits, 4, "0^f:10]d10]g18YJ18YM1gA;1g?A1odh1odk1v?N1v?Q1DV?1DV]1DV]"),
); ];
/** /**
* Gets a character and returns a simplified version of its bidirectional class. * Gets a character and returns a simplified version of its bidirectional class.

View File

@ -159,7 +159,7 @@ function get_group_suggestions(last, operators) {
// We don't suggest a person if their email is already present in the // We don't suggest a person if their email is already present in the
// operand (not including the last part). // operand (not including the last part).
const parts = all_but_last_part.split(",").concat(people.my_current_email()); const parts = [...all_but_last_part.split(","), people.my_current_email()];
const person_matcher = people.build_person_matcher(last_part); const person_matcher = people.build_person_matcher(last_part);
let persons = people.filter_all_persons((person) => { let persons = people.filter_all_persons((person) => {
@ -421,7 +421,7 @@ function get_topic_suggestions(last, operators) {
return topics.map((topic) => { return topics.map((topic) => {
const topic_term = {operator: "topic", operand: topic, negated}; const topic_term = {operator: "topic", operand: topic, negated};
const operators = suggest_operators.concat([topic_term]); const operators = [...suggest_operators, topic_term];
return format_as_suggestion(operators); return format_as_suggestion(operators);
}); });
} }

View File

@ -48,12 +48,12 @@ function get_events_success(events) {
} }
if (waiting_on_homeview_load) { if (waiting_on_homeview_load) {
events_stored_while_loading = events_stored_while_loading.concat(events); events_stored_while_loading = [...events_stored_while_loading, ...events];
return; return;
} }
if (events_stored_while_loading.length > 0) { if (events_stored_while_loading.length > 0) {
events = events_stored_while_loading.concat(events); events = [...events_stored_while_loading, ...events];
events_stored_while_loading = []; events_stored_while_loading = [];
} }

View File

@ -133,7 +133,7 @@ export function dispatch_normal_event(event) {
case "hotspots": case "hotspots":
hotspots.load_new(event.hotspots); hotspots.load_new(event.hotspots);
page_params.hotspots = page_params.hotspots page_params.hotspots = page_params.hotspots
? page_params.hotspots.concat(event.hotspots) ? [...page_params.hotspots, ...event.hotspots]
: event.hotspots; : event.hotspots;
break; break;

View File

@ -688,22 +688,25 @@ const other_email_settings = [
"enable_marketing_emails", "enable_marketing_emails",
]; ];
const email_notification_settings = other_email_settings.concat( const email_notification_settings = [
email_message_notification_settings, ...other_email_settings,
); ...email_message_notification_settings,
];
const other_notification_settings = desktop_notification_settings.concat( const other_notification_settings = [
["desktop_icon_count_display"], ...desktop_notification_settings,
mobile_notification_settings, "desktop_icon_count_display",
email_notification_settings, ...mobile_notification_settings,
["email_notifications_batching_period_seconds"], ...email_notification_settings,
["notification_sound"], "email_notifications_batching_period_seconds",
); "notification_sound",
];
export const all_notification_settings = other_notification_settings.concat( export const all_notification_settings = [
pm_mention_notification_settings, ...other_notification_settings,
stream_notification_settings, ...pm_mention_notification_settings,
); ...stream_notification_settings,
];
type Settings = UserSettings | RealmDefaultSettings; type Settings = UserSettings | RealmDefaultSettings;
type PageParamsItem = keyof Settings; type PageParamsItem = keyof Settings;

View File

@ -207,7 +207,7 @@ export function extract_property_name($elem, for_realm_default_settings) {
} }
export function get_subsection_property_elements(subsection) { export function get_subsection_property_elements(subsection) {
return Array.from($(subsection).find(".prop-element")); return [...$(subsection).find(".prop-element")];
} }
const simple_dropdown_properties = [ const simple_dropdown_properties = [
@ -1059,7 +1059,7 @@ function check_maximum_valid_value($custom_input_elem, property_name) {
} }
function enable_or_disable_save_button($subsection_elem) { function enable_or_disable_save_button($subsection_elem) {
const time_limit_settings = Array.from($subsection_elem.find(".time-limit-setting")); const time_limit_settings = [...$subsection_elem.find(".time-limit-setting")];
let disable_save_btn = false; let disable_save_btn = false;
for (const setting_elem of time_limit_settings) { for (const setting_elem of time_limit_settings) {
const $dropdown_elem = $(setting_elem).find("select"); const $dropdown_elem = $(setting_elem).find("select");

View File

@ -166,7 +166,7 @@ function build_page() {
$search_pygments_box.typeahead({ $search_pygments_box.typeahead({
source(query) { source(query) {
language_labels = realm_playground.get_pygments_typeahead_list_for_settings(query); language_labels = realm_playground.get_pygments_typeahead_list_for_settings(query);
return Array.from(language_labels.keys()); return [...language_labels.keys()];
}, },
items: 5, items: 5,
fixed: true, fixed: true,

View File

@ -108,7 +108,7 @@ export function populate_user_groups() {
function is_user_group_changed() { function is_user_group_changed() {
const draft_group = get_pill_user_ids(); const draft_group = get_pill_user_ids();
const group_data = user_groups.get_user_group_from_id(data.id); const group_data = user_groups.get_user_group_from_id(data.id);
const original_group = Array.from(group_data.members); const original_group = [...group_data.members];
const same_groups = _.isEqual(_.sortBy(draft_group), _.sortBy(original_group)); const same_groups = _.isEqual(_.sortBy(draft_group), _.sortBy(original_group));
const description = $(`#user-groups #${CSS.escape(data.id)} .description`) const description = $(`#user-groups #${CSS.escape(data.id)} .description`)
.text() .text()
@ -172,7 +172,7 @@ export function populate_user_groups() {
function save_members() { function save_members() {
const draft_group = get_pill_user_ids(); const draft_group = get_pill_user_ids();
const group_data = user_groups.get_user_group_from_id(data.id); const group_data = user_groups.get_user_group_from_id(data.id);
const original_group = Array.from(group_data.members); const original_group = [...group_data.members];
const same_groups = _.isEqual(_.sortBy(draft_group), _.sortBy(original_group)); const same_groups = _.isEqual(_.sortBy(draft_group), _.sortBy(original_group));
if (!draft_group.length || same_groups) { if (!draft_group.length || same_groups) {
return; return;

View File

@ -37,7 +37,7 @@ export function get_count() {
} }
export function get_starred_msg_ids() { export function get_starred_msg_ids() {
return Array.from(starred_ids); return [...starred_ids];
} }
export function get_count_in_topic(stream_id, topic) { export function get_count_in_topic(stream_id, topic) {
@ -45,7 +45,7 @@ export function get_count_in_topic(stream_id, topic) {
return 0; return 0;
} }
const messages = Array.from(starred_ids).filter((id) => { const messages = [...starred_ids].filter((id) => {
const message = message_store.get(id); const message = message_store.get(id);
if (message === undefined) { if (message === undefined) {

View File

@ -487,7 +487,7 @@ function compute_summary_chart_data(time_series_data, num_steps, labels_) {
} }
data.set(key, sum); data.set(key, sum);
} }
const labels = labels_.slice(); const labels = [...labels_];
const values = []; const values = [];
for (const label of labels) { for (const label of labels) {
if (data.has(label)) { if (data.has(label)) {

View File

@ -10,7 +10,7 @@ export function initialize_with_current_user() {
} }
export function sorted_user_ids() { export function sorted_user_ids() {
const users = people.get_users_from_ids(Array.from(user_id_set)); const users = people.get_users_from_ids([...user_id_set]);
people.sort_but_pin_current_user_on_top(users); people.sort_but_pin_current_user_on_top(users);
return users.map((user) => user.user_id); return users.map((user) => user.user_id);
} }
@ -25,7 +25,7 @@ export function get_all_user_ids() {
export function get_principals() { export function get_principals() {
// Return list of user ids which were selected by user. // Return list of user ids which were selected by user.
return Array.from(user_id_set); return [...user_id_set];
} }
export function get_potential_subscribers() { export function get_potential_subscribers() {

View File

@ -355,14 +355,14 @@ export function delete_sub(stream_id) {
} }
export function get_non_default_stream_names() { export function get_non_default_stream_names() {
let subs = Array.from(stream_info.values()); let subs = [...stream_info.values()];
subs = subs.filter((sub) => !is_default_stream_id(sub.stream_id) && !sub.invite_only); subs = subs.filter((sub) => !is_default_stream_id(sub.stream_id) && !sub.invite_only);
const names = subs.map((sub) => sub.name); const names = subs.map((sub) => sub.name);
return names; return names;
} }
export function get_unsorted_subs() { export function get_unsorted_subs() {
return Array.from(stream_info.values()); return [...stream_info.values()];
} }
export function num_subscribed_subs() { export function num_subscribed_subs() {
@ -370,11 +370,11 @@ export function num_subscribed_subs() {
} }
export function subscribed_subs() { export function subscribed_subs() {
return Array.from(stream_info.true_values()); return [...stream_info.true_values()];
} }
export function unsubscribed_subs() { export function unsubscribed_subs() {
return Array.from(stream_info.false_values()); return [...stream_info.false_values()];
} }
export function subscribed_streams() { export function subscribed_streams() {
@ -687,7 +687,7 @@ export function set_realm_default_streams(realm_default_streams) {
} }
export function get_default_stream_ids() { export function get_default_stream_ids() {
return Array.from(default_stream_ids); return [...default_stream_ids];
} }
export function is_default_stream_id(stream_id) { export function is_default_stream_id(stream_id) {
@ -821,7 +821,7 @@ export function get_streams_for_admin() {
return util.strcmp(a.name, b.name); return util.strcmp(a.name, b.name);
} }
const subs = Array.from(stream_info.values()); const subs = [...stream_info.values()];
subs.sort(by_name); subs.sort(by_name);

View File

@ -157,7 +157,7 @@ function subscribe_new_users({pill_user_ids}) {
} }
let ignored_deactivated_users; let ignored_deactivated_users;
if (deactivated_users.size > 0) { if (deactivated_users.size > 0) {
ignored_deactivated_users = Array.from(deactivated_users); ignored_deactivated_users = [...deactivated_users];
ignored_deactivated_users = ignored_deactivated_users.map((user_id) => ignored_deactivated_users = ignored_deactivated_users.map((user_id) =>
people.get_by_user_id(user_id), people.get_by_user_id(user_id),
); );
@ -172,7 +172,7 @@ function subscribe_new_users({pill_user_ids}) {
return; return;
} }
const user_ids = Array.from(user_id_set); const user_ids = [...user_id_set];
function invite_success(data) { function invite_success(data) {
pill_widget.clear(); pill_widget.clear();

View File

@ -42,7 +42,7 @@ function get_user_ids_from_subs(items) {
for (const item of items) { for (const item of items) {
// only some of our items have streams (for copy-from-stream) // only some of our items have streams (for copy-from-stream)
if (item.stream_id !== undefined) { if (item.stream_id !== undefined) {
user_ids = user_ids.concat(peer_data.get_subscribers(item.stream_id)); user_ids = [...user_ids, ...peer_data.get_subscribers(item.stream_id)];
} }
} }
return user_ids; return user_ids;
@ -51,7 +51,7 @@ function get_user_ids_from_subs(items) {
export function get_user_ids(pill_widget) { export function get_user_ids(pill_widget) {
const items = pill_widget.items(); const items = pill_widget.items();
let user_ids = get_user_ids_from_subs(items); let user_ids = get_user_ids_from_subs(items);
user_ids = Array.from(new Set(user_ids)); user_ids = [...new Set(user_ids)];
user_ids = user_ids.filter(Boolean); user_ids = user_ids.filter(Boolean);
user_ids.sort((a, b) => a - b); user_ids.sort((a, b) => a - b);

View File

@ -105,7 +105,7 @@ export function get_streams_for_settings_page() {
} }
subscribed_rows.sort(by_name); subscribed_rows.sort(by_name);
unsubscribed_rows.sort(by_name); unsubscribed_rows.sort(by_name);
const all_subs = unsubscribed_rows.concat(subscribed_rows); const all_subs = [...unsubscribed_rows, ...subscribed_rows];
return get_subs_for_settings(all_subs); return get_subs_for_settings(all_subs);
} }

View File

@ -88,12 +88,13 @@ export function sort_groups(streams, search_term) {
previous_muted_active = muted_active_streams; previous_muted_active = muted_active_streams;
previous_dormant = dormant_streams; previous_dormant = dormant_streams;
all_streams = pinned_streams.concat( all_streams = [
muted_pinned_streams, ...pinned_streams,
normal_streams, ...muted_pinned_streams,
muted_active_streams, ...normal_streams,
dormant_streams, ...muted_active_streams,
); ...dormant_streams,
];
} }
return { return {

View File

@ -199,7 +199,7 @@ export class PerStreamHistory {
} }
get_recent_topic_names() { get_recent_topic_names() {
const my_recents = Array.from(this.topics.values()); const my_recents = [...this.topics.values()];
/* Add any older topics with unreads that may not be present /* Add any older topics with unreads that may not be present
* in our local cache. */ * in our local cache. */
@ -208,7 +208,7 @@ export class PerStreamHistory {
topic_dict: this.topics, topic_dict: this.topics,
}); });
const recents = my_recents.concat(missing_topics); const recents = [...my_recents, ...missing_topics];
recents.sort((a, b) => b.message_id - a.message_id); recents.sort((a, b) => b.message_id - a.message_id);

View File

@ -22,7 +22,7 @@ export class TaskData {
} }
get_widget_data() { get_widget_data() {
const all_tasks = Array.from(this.task_map.values()); const all_tasks = [...this.task_map.values()];
all_tasks.sort((a, b) => util.strcmp(a.task, b.task)); all_tasks.sort((a, b) => util.strcmp(a.task, b.task));
const pending_tasks = []; const pending_tasks = [];

View File

@ -52,7 +52,7 @@ export function close() {
export function zoom_out() { export function zoom_out() {
zoomed = false; zoomed = false;
const stream_ids = Array.from(active_widgets.keys()); const stream_ids = [...active_widgets.keys()];
if (stream_ids.length !== 1) { if (stream_ids.length !== 1) {
blueslip.error("Unexpected number of topic lists to zoom out."); blueslip.error("Unexpected number of topic lists to zoom out.");
@ -198,7 +198,7 @@ export function clear_topic_search(e) {
// Since this changes the contents of the search input, we // Since this changes the contents of the search input, we
// need to rerender the topic list. // need to rerender the topic list.
const stream_ids = Array.from(active_widgets.keys()); const stream_ids = [...active_widgets.keys()];
const stream_id = stream_ids[0]; const stream_id = stream_ids[0];
const widget = active_widgets.get(stream_id); const widget = active_widgets.get(stream_id);
@ -209,7 +209,7 @@ export function clear_topic_search(e) {
} }
export function active_stream_id() { export function active_stream_id() {
const stream_ids = Array.from(active_widgets.keys()); const stream_ids = [...active_widgets.keys()];
if (stream_ids.length !== 1) { if (stream_ids.length !== 1) {
return undefined; return undefined;
@ -219,7 +219,7 @@ export function active_stream_id() {
} }
export function get_stream_li() { export function get_stream_li() {
const widgets = Array.from(active_widgets.values()); const widgets = [...active_widgets.values()];
if (widgets.length !== 1) { if (widgets.length !== 1) {
return undefined; return undefined;

View File

@ -146,7 +146,7 @@ export function render_emoji(item) {
export function sorter(query, objs, get_item) { export function sorter(query, objs, get_item) {
const results = typeahead.triage(query, objs, get_item); const results = typeahead.triage(query, objs, get_item);
return results.matches.concat(results.rest); return [...results.matches, ...results.rest];
} }
export function compare_by_pms(user_a, user_b) { export function compare_by_pms(user_a, user_b) {
@ -353,7 +353,7 @@ export function sort_languages(matches, query) {
// Languages that have the query somewhere in their name // Languages that have the query somewhere in their name
results.rest = results.rest.sort(compare_language); results.rest = results.rest.sort(compare_language);
return retain_unique_language_aliases(results.matches.concat(results.rest)); return retain_unique_language_aliases([...results.matches, ...results.rest]);
} }
export function sort_recipients({ export function sort_recipients({
@ -394,7 +394,7 @@ export function sort_recipients({
for (const getter of getters) { for (const getter of getters) {
if (items.length < max_num_items) { if (items.length < max_num_items) {
items = items.concat(getter()); items = [...items, ...getter()];
} }
} }
@ -418,7 +418,7 @@ export function sort_slash_commands(matches, query) {
results.matches = results.matches.sort(slash_command_comparator); results.matches = results.matches.sort(slash_command_comparator);
results.rest = results.rest.sort(slash_command_comparator); results.rest = results.rest.sort(slash_command_comparator);
return results.matches.concat(results.rest); return [...results.matches, ...results.rest];
} }
// Gives stream a score from 0 to 3 based on its activity // Gives stream a score from 0 to 3 based on its activity
@ -465,5 +465,5 @@ export function sort_streams(matches, query) {
// Streams with names and descriptions that don't start with the query. // Streams with names and descriptions that don't start with the query.
desc_results.rest = desc_results.rest.sort(compare_by_activity); desc_results.rest = desc_results.rest.sort(compare_by_activity);
return name_results.matches.concat(desc_results.matches.concat(desc_results.rest)); return [...name_results.matches, ...desc_results.matches, ...desc_results.rest];
} }

View File

@ -52,7 +52,7 @@ export function get_group_typists(group) {
} }
export function get_all_typists() { export function get_all_typists() {
let typists = Array.from(typist_dct.values()).flat(); let typists = [...typist_dct.values()].flat();
typists = util.sorted_ids(typists); typists = util.sorted_ids(typists);
return muted_users.filter_muted_user_ids(typists); return muted_users.filter_muted_user_ids(typists);
} }

View File

@ -44,7 +44,7 @@ function get_users_typing_for_narrow() {
const narrow_user_ids = narrow_user_ids_string const narrow_user_ids = narrow_user_ids_string
.split(",") .split(",")
.map((user_id_string) => Number.parseInt(user_id_string, 10)); .map((user_id_string) => Number.parseInt(user_id_string, 10));
const group = narrow_user_ids.concat([page_params.user_id]); const group = [...narrow_user_ids, page_params.user_id];
return typing_data.get_group_typists(group); return typing_data.get_group_typists(group);
} }
// Get all users typing (in all private conversations with current user) // Get all users typing (in all private conversations with current user)

View File

@ -209,7 +209,7 @@ class UnreadPMCounter {
return []; return [];
} }
const ids = Array.from(bucket); const ids = [...bucket];
return util.sorted_ids(ids); return util.sorted_ids(ids);
} }
} }
@ -309,12 +309,12 @@ class UnreadTopicCounter {
return []; return [];
} }
let topic_names = Array.from(per_stream_bucketer.keys()); let topic_names = [...per_stream_bucketer.keys()];
/* Include topics that have at least one unread. It would likely /* Include topics that have at least one unread. It would likely
* be better design for buckets to be deleted when emptied. */ * be better design for buckets to be deleted when emptied. */
topic_names = topic_names.filter((topic_name) => { topic_names = topic_names.filter((topic_name) => {
const messages = Array.from(per_stream_bucketer.get_bucket(topic_name)); const messages = [...per_stream_bucketer.get_bucket(topic_name)];
return messages.length > 0; return messages.length > 0;
}); });
/* And aren't already present in topic_dict. */ /* And aren't already present in topic_dict. */
@ -325,7 +325,7 @@ class UnreadTopicCounter {
return { return {
pretty_name: topic_name, pretty_name: topic_name,
message_id: Math.max(...Array.from(msgs)), message_id: Math.max(...msgs),
}; };
}); });
@ -396,7 +396,7 @@ class UnreadTopicCounter {
return []; return [];
} }
const ids = Array.from(topic_bucket); const ids = [...topic_bucket];
return util.sorted_ids(ids); return util.sorted_ids(ids);
} }
@ -707,7 +707,7 @@ export function get_counts() {
const streams_with_mentions = unread_topic_counter.get_streams_with_unread_mentions(); const streams_with_mentions = unread_topic_counter.get_streams_with_unread_mentions();
res.home_unread_messages = topic_res.stream_unread_messages; res.home_unread_messages = topic_res.stream_unread_messages;
res.stream_count = topic_res.stream_count; res.stream_count = topic_res.stream_count;
res.streams_with_mentions = Array.from(streams_with_mentions); res.streams_with_mentions = [...streams_with_mentions];
const pm_res = unread_pm_counter.get_counts(); const pm_res = unread_pm_counter.get_counts();
res.pm_count = pm_res.pm_dict; res.pm_count = pm_res.pm_dict;
@ -797,13 +797,13 @@ export function get_msg_ids_for_private() {
} }
export function get_msg_ids_for_mentions() { export function get_msg_ids_for_mentions() {
const ids = Array.from(unread_mentions_counter); const ids = [...unread_mentions_counter];
return util.sorted_ids(ids); return util.sorted_ids(ids);
} }
export function get_all_msg_ids() { export function get_all_msg_ids() {
const ids = Array.from(unread_messages); const ids = [...unread_messages];
return util.sorted_ids(ids); return util.sorted_ids(ids);
} }

View File

@ -10,7 +10,7 @@ export function initialize_with_current_user() {
} }
export function sorted_user_ids() { export function sorted_user_ids() {
const users = people.get_users_from_ids(Array.from(user_id_set)); const users = people.get_users_from_ids([...user_id_set]);
people.sort_but_pin_current_user_on_top(users); people.sort_but_pin_current_user_on_top(users);
return users.map((user) => user.user_id); return users.map((user) => user.user_id);
} }
@ -25,7 +25,7 @@ export function get_all_user_ids() {
export function get_principals() { export function get_principals() {
// Return list of user ids which were selected by user. // Return list of user ids which were selected by user.
return Array.from(user_id_set); return [...user_id_set];
} }
export function get_potential_members() { export function get_potential_members() {

View File

@ -111,7 +111,7 @@ export function handle_member_edit_event(group_id) {
const group = user_groups.get_user_group_from_id(group_id); const group = user_groups.get_user_group_from_id(group_id);
// update members list. // update members list.
const members = Array.from(group.members); const members = [...group.members];
user_group_edit_members.update_member_list_widget(group_id, members); user_group_edit_members.update_member_list_widget(group_id, members);
// update_settings buttons. // update_settings buttons.

View File

@ -97,7 +97,7 @@ export function enable_member_management({group, $parent_container}) {
member_list_widget = make_list_widget({ member_list_widget = make_list_widget({
$parent_container, $parent_container,
name: "user_group_members", name: "user_group_members",
user_ids: Array.from(group.members), user_ids: [...group.members],
}); });
} }
@ -179,13 +179,13 @@ function add_new_members({pill_user_ids}) {
let ignored_deactivated_users; let ignored_deactivated_users;
let ignored_already_added_users; let ignored_already_added_users;
if (deactivated_users.size > 0) { if (deactivated_users.size > 0) {
ignored_deactivated_users = Array.from(deactivated_users); ignored_deactivated_users = [...deactivated_users];
ignored_deactivated_users = ignored_deactivated_users.map((user_id) => ignored_deactivated_users = ignored_deactivated_users.map((user_id) =>
people.get_by_user_id(user_id), people.get_by_user_id(user_id),
); );
} }
if (already_added_users.size > 0) { if (already_added_users.size > 0) {
ignored_already_added_users = Array.from(already_added_users); ignored_already_added_users = [...already_added_users];
ignored_already_added_users = ignored_already_added_users.map((user_id) => ignored_already_added_users = ignored_already_added_users.map((user_id) =>
people.get_by_user_id(user_id), people.get_by_user_id(user_id),
); );
@ -201,7 +201,7 @@ function add_new_members({pill_user_ids}) {
}); });
return; return;
} }
const user_ids = Array.from(user_id_set); const user_ids = [...user_id_set];
function invite_success() { function invite_success() {
pill_widget.clear(); pill_widget.clear();

View File

@ -31,19 +31,16 @@ export function get_group_name_from_item(item) {
} }
function get_user_ids_from_user_groups(items) { function get_user_ids_from_user_groups(items) {
let user_ids = [];
const group_ids = items.map((item) => item.id).filter(Boolean); const group_ids = items.map((item) => item.id).filter(Boolean);
for (const group_id of group_ids) { return group_ids.flatMap((group_id) => [
const user_group = user_groups.get_user_group_from_id(group_id); ...user_groups.get_user_group_from_id(group_id).members,
user_ids = user_ids.concat(Array.from(user_group.members)); ]);
}
return user_ids;
} }
export function get_user_ids(pill_widget) { export function get_user_ids(pill_widget) {
const items = pill_widget.items(); const items = pill_widget.items();
let user_ids = get_user_ids_from_user_groups(items); let user_ids = get_user_ids_from_user_groups(items);
user_ids = Array.from(new Set(user_ids)); user_ids = [...new Set(user_ids)];
user_ids.sort((a, b) => a - b); user_ids.sort((a, b) => a - b);
user_ids = user_ids.filter(Boolean); user_ids = user_ids.filter(Boolean);

View File

@ -81,7 +81,7 @@ export function get_user_group_from_name(name: string): UserGroup | undefined {
} }
export function get_realm_user_groups(): UserGroup[] { export function get_realm_user_groups(): UserGroup[] {
const user_groups = Array.from(user_group_by_id_dict.values()).sort((a, b) => a.id - b.id); const user_groups = [...user_group_by_id_dict.values()].sort((a, b) => a.id - b.id);
return user_groups.filter((group) => !group.is_system_group); return user_groups.filter((group) => !group.is_system_group);
} }
@ -239,5 +239,5 @@ export function get_realm_user_groups_for_dropdown_list_widget(
value: group.id.toString(), value: group.id.toString(),
})); }));
return system_user_groups.concat(user_groups_excluding_system_groups); return [...system_user_groups, ...user_groups_excluding_system_groups];
} }

View File

@ -224,7 +224,7 @@ export function sorted_ids(ids: string[]): number[] {
// This mapping makes sure we are using ints, and // This mapping makes sure we are using ints, and
// it also makes sure we don't mutate the list. // it also makes sure we don't mutate the list.
let id_list = ids.map((s) => Number.parseInt(s, 10)); let id_list = ids.map((s) => Number.parseInt(s, 10));
id_list = Array.from(new Set(id_list)); id_list = [...new Set(id_list)];
id_list.sort((a, b) => a - b); id_list.sort((a, b) => a - b);
return id_list; return id_list;

View File

@ -20,7 +20,7 @@ function make_tab(i) {
$self.addClass = (c) => { $self.addClass = (c) => {
$self.class += " " + c; $self.class += " " + c;
const tokens = $self.class.trim().split(/ +/); const tokens = $self.class.trim().split(/ +/);
$self.class = Array.from(new Set(tokens)).join(" "); $self.class = [...new Set(tokens)].join(" ");
}; };
$self.removeClass = (c) => { $self.removeClass = (c) => {

View File

@ -53,7 +53,7 @@ run_test("pills", ({override}) => {
assert.ok(!all_pills.has(id)); assert.ok(!all_pills.has(id));
all_pills.set(id, item); all_pills.set(id, item);
}; };
pills.items = () => Array.from(all_pills.values()); pills.items = () => [...all_pills.values()];
let text_cleared; let text_cleared;
pills.clear_text = () => { pills.clear_text = () => {

View File

@ -160,7 +160,7 @@ const emojis_by_name = new Map(
headphones: emoji_headphones, headphones: emoji_headphones,
}), }),
); );
const emoji_list = Array.from(emojis_by_name.values(), (emoji_dict) => ({ const emoji_list = [...emojis_by_name.values()].map((emoji_dict) => ({
emoji_name: emoji_dict.name, emoji_name: emoji_dict.name,
emoji_code: emoji_dict.emoji_code, emoji_code: emoji_dict.emoji_code,
reaction_type: "unicode_emoji", reaction_type: "unicode_emoji",
@ -221,7 +221,7 @@ for (const [key, val] of emojis_by_name.entries()) {
const emoji_codes = { const emoji_codes = {
name_to_codepoint, name_to_codepoint,
names: Array.from(emojis_by_name.keys()), names: [...emojis_by_name.keys()],
emoji_catalog: {}, emoji_catalog: {},
emoticon_conversions: {}, emoticon_conversions: {},
codepoint_to_name: {}, codepoint_to_name: {},

View File

@ -276,41 +276,41 @@ test("basics", () => {
function assert_not_mark_read_with_has_operands(additional_operators_to_test) { function assert_not_mark_read_with_has_operands(additional_operators_to_test) {
additional_operators_to_test = additional_operators_to_test || []; additional_operators_to_test = additional_operators_to_test || [];
let has_operator = [{operator: "has", operand: "link"}]; let has_operator = [{operator: "has", operand: "link"}];
let filter = new Filter(additional_operators_to_test.concat(has_operator)); let filter = new Filter([...additional_operators_to_test, ...has_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
has_operator = [{operator: "has", operand: "link", negated: true}]; has_operator = [{operator: "has", operand: "link", negated: true}];
filter = new Filter(additional_operators_to_test.concat(has_operator)); filter = new Filter([...additional_operators_to_test, ...has_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
has_operator = [{operator: "has", operand: "image"}]; has_operator = [{operator: "has", operand: "image"}];
filter = new Filter(additional_operators_to_test.concat(has_operator)); filter = new Filter([...additional_operators_to_test, ...has_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
has_operator = [{operator: "has", operand: "image", negated: true}]; has_operator = [{operator: "has", operand: "image", negated: true}];
filter = new Filter(additional_operators_to_test.concat(has_operator)); filter = new Filter([...additional_operators_to_test, ...has_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
has_operator = [{operator: "has", operand: "attachment", negated: true}]; has_operator = [{operator: "has", operand: "attachment", negated: true}];
filter = new Filter(additional_operators_to_test.concat(has_operator)); filter = new Filter([...additional_operators_to_test, ...has_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
has_operator = [{operator: "has", operand: "attachment"}]; has_operator = [{operator: "has", operand: "attachment"}];
filter = new Filter(additional_operators_to_test.concat(has_operator)); filter = new Filter([...additional_operators_to_test, ...has_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
} }
function assert_not_mark_read_with_is_operands(additional_operators_to_test) { function assert_not_mark_read_with_is_operands(additional_operators_to_test) {
additional_operators_to_test = additional_operators_to_test || []; additional_operators_to_test = additional_operators_to_test || [];
let is_operator = [{operator: "is", operand: "starred"}]; let is_operator = [{operator: "is", operand: "starred"}];
let filter = new Filter(additional_operators_to_test.concat(is_operator)); let filter = new Filter([...additional_operators_to_test, ...is_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
is_operator = [{operator: "is", operand: "starred", negated: true}]; is_operator = [{operator: "is", operand: "starred", negated: true}];
filter = new Filter(additional_operators_to_test.concat(is_operator)); filter = new Filter([...additional_operators_to_test, ...is_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
is_operator = [{operator: "is", operand: "mentioned"}]; is_operator = [{operator: "is", operand: "mentioned"}];
filter = new Filter(additional_operators_to_test.concat(is_operator)); filter = new Filter([...additional_operators_to_test, ...is_operator]);
if (additional_operators_to_test.length === 0) { if (additional_operators_to_test.length === 0) {
assert.ok(filter.can_mark_messages_read()); assert.ok(filter.can_mark_messages_read());
} else { } else {
@ -318,27 +318,27 @@ function assert_not_mark_read_with_is_operands(additional_operators_to_test) {
} }
is_operator = [{operator: "is", operand: "mentioned", negated: true}]; is_operator = [{operator: "is", operand: "mentioned", negated: true}];
filter = new Filter(additional_operators_to_test.concat(is_operator)); filter = new Filter([...additional_operators_to_test, ...is_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
is_operator = [{operator: "is", operand: "alerted"}]; is_operator = [{operator: "is", operand: "alerted"}];
filter = new Filter(additional_operators_to_test.concat(is_operator)); filter = new Filter([...additional_operators_to_test, ...is_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
is_operator = [{operator: "is", operand: "alerted", negated: true}]; is_operator = [{operator: "is", operand: "alerted", negated: true}];
filter = new Filter(additional_operators_to_test.concat(is_operator)); filter = new Filter([...additional_operators_to_test, ...is_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
is_operator = [{operator: "is", operand: "unread"}]; is_operator = [{operator: "is", operand: "unread"}];
filter = new Filter(additional_operators_to_test.concat(is_operator)); filter = new Filter([...additional_operators_to_test, ...is_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
is_operator = [{operator: "is", operand: "unread", negated: true}]; is_operator = [{operator: "is", operand: "unread", negated: true}];
filter = new Filter(additional_operators_to_test.concat(is_operator)); filter = new Filter([...additional_operators_to_test, ...is_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
is_operator = [{operator: "is", operand: "resolved"}]; is_operator = [{operator: "is", operand: "resolved"}];
filter = new Filter(additional_operators_to_test.concat(is_operator)); filter = new Filter([...additional_operators_to_test, ...is_operator]);
if (additional_operators_to_test.length === 0) { if (additional_operators_to_test.length === 0) {
assert.ok(filter.can_mark_messages_read()); assert.ok(filter.can_mark_messages_read());
} else { } else {
@ -346,18 +346,18 @@ function assert_not_mark_read_with_is_operands(additional_operators_to_test) {
} }
is_operator = [{operator: "is", operand: "resolved", negated: true}]; is_operator = [{operator: "is", operand: "resolved", negated: true}];
filter = new Filter(additional_operators_to_test.concat(is_operator)); filter = new Filter([...additional_operators_to_test, ...is_operator]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
} }
function assert_not_mark_read_when_searching(additional_operators_to_test) { function assert_not_mark_read_when_searching(additional_operators_to_test) {
additional_operators_to_test = additional_operators_to_test || []; additional_operators_to_test = additional_operators_to_test || [];
let search_op = [{operator: "search", operand: "keyword"}]; let search_op = [{operator: "search", operand: "keyword"}];
let filter = new Filter(additional_operators_to_test.concat(search_op)); let filter = new Filter([...additional_operators_to_test, ...search_op]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
search_op = [{operator: "search", operand: "keyword", negated: true}]; search_op = [{operator: "search", operand: "keyword", negated: true}];
filter = new Filter(additional_operators_to_test.concat(search_op)); filter = new Filter([...additional_operators_to_test, ...search_op]);
assert.ok(!filter.can_mark_messages_read()); assert.ok(!filter.can_mark_messages_read());
} }

View File

@ -12,7 +12,7 @@ run_test("basic", () => {
assert.equal(d.size, 0); assert.equal(d.size, 0);
assert.deepEqual(Array.from(d.keys()), []); assert.deepEqual([...d.keys()], []);
d.set("foo", "bar"); d.set("foo", "bar");
assert.equal(d.get("foo"), "bar"); assert.equal(d.get("foo"), "bar");
@ -30,18 +30,21 @@ run_test("basic", () => {
assert.equal(d.has("bar"), true); assert.equal(d.has("bar"), true);
assert.equal(d.has("baz"), false); assert.equal(d.has("baz"), false);
assert.deepEqual(Array.from(d.keys()), ["foo", "bar"]); assert.deepEqual([...d.keys()], ["foo", "bar"]);
assert.deepEqual(Array.from(d.values()), ["baz", "qux"]); assert.deepEqual([...d.values()], ["baz", "qux"]);
assert.deepEqual(Array.from(d), [ assert.deepEqual(
[...d],
[
["foo", "baz"], ["foo", "baz"],
["bar", "qux"], ["bar", "qux"],
]); ],
);
d.delete("bar"); d.delete("bar");
assert.equal(d.has("bar"), false); assert.equal(d.has("bar"), false);
assert.strictEqual(d.get("bar"), undefined); assert.strictEqual(d.get("bar"), undefined);
assert.deepEqual(Array.from(d.keys()), ["foo"]); assert.deepEqual([...d.keys()], ["foo"]);
const val = ["foo"]; const val = ["foo"];
const res = d.set("abc", val); const res = d.set("abc", val);
@ -51,7 +54,7 @@ run_test("basic", () => {
run_test("case insensitivity", () => { run_test("case insensitivity", () => {
const d = new FoldDict(); const d = new FoldDict();
assert.deepEqual(Array.from(d.keys()), []); assert.deepEqual([...d.keys()], []);
assert.ok(!d.has("foo")); assert.ok(!d.has("foo"));
d.set("fOO", "Hello world"); d.set("fOO", "Hello world");
@ -60,12 +63,12 @@ run_test("case insensitivity", () => {
assert.ok(d.has("FOO")); assert.ok(d.has("FOO"));
assert.ok(!d.has("not_a_key")); assert.ok(!d.has("not_a_key"));
assert.deepEqual(Array.from(d.keys()), ["fOO"]); assert.deepEqual([...d.keys()], ["fOO"]);
d.delete("Foo"); d.delete("Foo");
assert.equal(d.has("foo"), false); assert.equal(d.has("foo"), false);
assert.deepEqual(Array.from(d.keys()), []); assert.deepEqual([...d.keys()], []);
}); });
run_test("clear", () => { run_test("clear", () => {

View File

@ -14,7 +14,7 @@ function make_zblueslip() {
warn: true, warn: true,
error: true, error: true,
}; };
const names = Array.from(Object.keys(opts)); const names = Object.keys(opts);
// For fatal messages, we should use assert.throws // For fatal messages, we should use assert.throws
/* istanbul ignore next */ /* istanbul ignore next */

View File

@ -159,7 +159,7 @@ function make_zjquery() {
/* istanbul ignore next */ /* istanbul ignore next */
zjquery.state = function () { zjquery.state = function () {
// useful for debugging // useful for debugging
let res = Array.from(elems.values(), ($v) => $v.debug()); let res = [...elems.values()].map(($v) => $v.debug());
res = res.map((v) => [v.selector, v.value, v.shown]); res = res.map((v) => [v.selector, v.value, v.shown]);

View File

@ -11,7 +11,7 @@ const linkifiers = zrequire("linkifiers");
linkifiers.initialize([]); linkifiers.initialize([]);
function get_linkifier_regexes() { function get_linkifier_regexes() {
return Array.from(linkifiers.get_linkifier_map().keys()); return [...linkifiers.get_linkifier_map().keys()];
} }
run_test("python_to_js_linkifier", () => { run_test("python_to_js_linkifier", () => {

View File

@ -258,13 +258,13 @@ run_test("set_up", ({mock_template}) => {
}) })
.filter(Boolean); .filter(Boolean);
if (opts.user_group) { if (opts.user_group) {
expected_result = expected_result.concat(groups); expected_result = [...expected_result, ...groups];
} }
if (opts.user) { if (opts.user) {
if (opts.user_source) { if (opts.user_source) {
expected_result = expected_result.concat(opts.user_source()); expected_result = [...expected_result, ...opts.user_source()];
} else { } else {
expected_result = expected_result.concat(persons); expected_result = [...expected_result, ...persons];
} }
} }
expected_result = expected_result expected_result = expected_result

View File

@ -411,7 +411,7 @@ test("test_filter_all", ({mock_template}) => {
{last_msg_id: 1, participated: true, type: "stream"}, {last_msg_id: 1, participated: true, type: "stream"},
]; ];
row_data = row_data.concat(generate_topic_data([[1, "topic-7", 1, true, true]])); row_data = [...row_data, ...generate_topic_data([[1, "topic-7", 1, true, true]])];
i = row_data.length; i = row_data.length;
// topic is muted (=== hidden) // topic is muted (=== hidden)
stub_out_filter_buttons(); stub_out_filter_buttons();
@ -754,7 +754,7 @@ test("basic assertions", ({mock_template, override_rewire}) => {
// total 8 topics, 1 muted // total 8 topics, 1 muted
assert.equal(all_topics.size, 8); assert.equal(all_topics.size, 8);
assert.equal( assert.equal(
Array.from(all_topics.keys()).toString(), [...all_topics.keys()].toString(),
"4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3,1:topic-2,1:topic-1", "4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3,1:topic-2,1:topic-1",
); );
@ -766,7 +766,7 @@ test("basic assertions", ({mock_template, override_rewire}) => {
all_topics = rt_data.get(); all_topics = rt_data.get();
assert.equal(all_topics.size, 9); assert.equal(all_topics.size, 9);
assert.equal( assert.equal(
Array.from(all_topics.keys()).toString(), [...all_topics.keys()].toString(),
"4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3,1:topic-2,1:topic-1,6,7,8", "4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3,1:topic-2,1:topic-1,6,7,8",
); );
@ -790,7 +790,7 @@ test("basic assertions", ({mock_template, override_rewire}) => {
all_topics = rt_data.get(); all_topics = rt_data.get();
assert.equal( assert.equal(
Array.from(all_topics.keys()).toString(), [...all_topics.keys()].toString(),
"1:topic-3,4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-2,1:topic-1,6,7,8", "1:topic-3,4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-2,1:topic-1,6,7,8",
); );
verify_topic_data(all_topics, stream1, topic3, id, true); verify_topic_data(all_topics, stream1, topic3, id, true);
@ -807,7 +807,7 @@ test("basic assertions", ({mock_template, override_rewire}) => {
all_topics = rt_data.get(); all_topics = rt_data.get();
assert.equal( assert.equal(
Array.from(all_topics.keys()).toString(), [...all_topics.keys()].toString(),
"1:topic-7,1:topic-3,4:topic-10,1:topic-6,1:topic-5,1:topic-4,1:topic-2,1:topic-1,6,7,8", "1:topic-7,1:topic-3,4:topic-10,1:topic-6,1:topic-5,1:topic-4,1:topic-2,1:topic-1,6,7,8",
); );
@ -885,14 +885,14 @@ test("test_delete_messages", ({override}) => {
let all_topics = rt_data.get(); let all_topics = rt_data.get();
assert.equal( assert.equal(
Array.from(all_topics.keys()).toString(), [...all_topics.keys()].toString(),
"4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3,1:topic-2,1:topic-1", "4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3,1:topic-2,1:topic-1",
); );
rt.update_topics_of_deleted_message_ids([messages[0].id]); rt.update_topics_of_deleted_message_ids([messages[0].id]);
all_topics = rt_data.get(); all_topics = rt_data.get();
assert.equal( assert.equal(
Array.from(all_topics.keys()).toString(), [...all_topics.keys()].toString(),
"4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3,1:topic-2", "4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3,1:topic-2",
); );
@ -903,7 +903,7 @@ test("test_delete_messages", ({override}) => {
all_topics = rt_data.get(); all_topics = rt_data.get();
assert.equal( assert.equal(
Array.from(all_topics.keys()).toString(), [...all_topics.keys()].toString(),
"4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3", "4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3",
); );
// test deleting a message which is not locally // test deleting a message which is not locally
@ -923,7 +923,7 @@ test("test_topic_edit", ({override}) => {
let all_topics = rt_data.get(); let all_topics = rt_data.get();
assert.equal( assert.equal(
Array.from(all_topics.keys()).toString(), [...all_topics.keys()].toString(),
"4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3,1:topic-2,1:topic-1", "4:topic-10,1:topic-7,1:topic-6,1:topic-5,1:topic-4,1:topic-3,1:topic-2,1:topic-1",
); );

View File

@ -332,9 +332,7 @@ function test_sync_realm_settings() {
settings_config.common_policy_values.by_members.code; settings_config.common_policy_values.by_members.code;
$property_elem.val(settings_config.common_policy_values.by_members.code); $property_elem.val(settings_config.common_policy_values.by_members.code);
for (const policy_value of Array.from( for (const policy_value of Object.values(settings_config.common_policy_values)) {
Object.values(settings_config.common_policy_values),
)) {
page_params[`realm_${property_name}`] = policy_value.code; page_params[`realm_${property_name}`] = policy_value.code;
settings_org.sync_realm_settings(property_name); settings_org.sync_realm_settings(property_name);
assert.equal($property_elem.val(), policy_value.code); assert.equal($property_elem.val(), policy_value.code);

View File

@ -156,7 +156,7 @@ test_ui("populate_user_groups", ({mock_template}) => {
assert.ok(!all_pills.has(id)); assert.ok(!all_pills.has(id));
all_pills.set(id, item); all_pills.set(id, item);
}; };
pills.items = () => Array.from(all_pills.values()); pills.items = () => [...all_pills.values()];
let text_cleared; let text_cleared;
pills.clear_text = () => { pills.clear_text = () => {

View File

@ -420,7 +420,7 @@ test("sort_recipients all mention", () => {
assert.equal(all_obj.idx, 0); assert.equal(all_obj.idx, 0);
// Test person email is "all" or "everyone" // Test person email is "all" or "everyone"
const test_objs = matches.concat([all_obj]); const test_objs = [...matches, all_obj];
const results = th.sort_recipients({ const results = th.sort_recipients({
users: test_objs, users: test_objs,
@ -482,7 +482,7 @@ test("sort_recipients pm counts", () => {
}); });
test("sort_recipients dup bots", () => { test("sort_recipients dup bots", () => {
const dup_objects = matches.concat([a_bot]); const dup_objects = [...matches, a_bot];
const recipients = th.sort_recipients({ const recipients = th.sort_recipients({
users: dup_objects, users: dup_objects,
@ -583,7 +583,7 @@ test("sort broadcast mentions for stream message type", () => {
// Reverse the list to test actual sorting // Reverse the list to test actual sorting
// and ensure test coverage for the defensive // and ensure test coverage for the defensive
// code. Also, add in some people users. // code. Also, add in some people users.
const test_objs = Array.from(ct.broadcast_mentions()).reverse(); const test_objs = [...ct.broadcast_mentions()].reverse();
test_objs.unshift(zman); test_objs.unshift(zman);
test_objs.push(a_user); test_objs.push(a_user);
@ -604,7 +604,7 @@ test("sort broadcast mentions for private message type", () => {
["all", "everyone"], ["all", "everyone"],
); );
const test_objs = Array.from(ct.broadcast_mentions()).reverse(); const test_objs = [...ct.broadcast_mentions()].reverse();
test_objs.unshift(zman); test_objs.unshift(zman);
test_objs.push(a_user); test_objs.push(a_user);

View File

@ -85,7 +85,7 @@ test("activate", ({override}) => {
override(narrow_state, "active", () => narrow_active); override(narrow_state, "active", () => narrow_active);
const opts = { const opts = {
events: events.slice(), events: [...events],
extra_data: "", extra_data: "",
message: { message: {
id: 2001, id: 2001,