2
0
Эх сурвалжийг харах

Merge pull request #3837 from linkmauve/codespell

Run codespell on the whole codebase
JC Brand 1 долоо хоног өмнө
parent
commit
9a7b9e0d6a
54 өөрчлөгдсөн 116 нэмэгдсэн , 116 устгасан
  1. 10 10
      CHANGES.md
  2. 10 10
      docs/source/configuration.rst
  3. 1 1
      docs/source/features.rst
  4. 1 1
      docs/source/plugin_development.rst
  5. 1 1
      docs/source/session.rst
  6. 1 1
      docs/source/setup.rst
  7. 1 1
      docs/source/setup_dev_environment.rst
  8. 1 1
      docs/source/theming.rst
  9. 2 2
      src/headless/plugins/emoji/utils.js
  10. 1 1
      src/headless/plugins/mam/utils.js
  11. 1 1
      src/headless/plugins/muc/affiliations/api.js
  12. 1 1
      src/headless/plugins/muc/message.js
  13. 3 3
      src/headless/plugins/muc/muc.js
  14. 1 1
      src/headless/plugins/roster/api.js
  15. 1 1
      src/headless/plugins/vcard/api.js
  16. 1 1
      src/headless/shared/api/promise.js
  17. 2 2
      src/headless/shared/connection/index.js
  18. 4 4
      src/headless/shared/message.js
  19. 1 1
      src/headless/shared/model-with-messages.js
  20. 1 1
      src/headless/shared/types.ts
  21. 6 6
      src/headless/tests/mock.js
  22. 1 1
      src/headless/types/plugins/emoji/utils.d.ts
  23. 1 1
      src/headless/types/plugins/mam/utils.d.ts
  24. 2 2
      src/headless/types/plugins/muc/affiliations/api.d.ts
  25. 1 1
      src/headless/types/plugins/muc/message.d.ts
  26. 2 2
      src/headless/types/plugins/muc/muc.d.ts
  27. 1 1
      src/headless/types/plugins/roster/api.d.ts
  28. 1 1
      src/headless/types/plugins/vcard/api.d.ts
  29. 2 2
      src/headless/types/shared/connection/index.d.ts
  30. 1 1
      src/headless/types/shared/message.d.ts
  31. 2 2
      src/headless/types/shared/model-with-messages.d.ts
  32. 1 1
      src/headless/types/shared/settings/constants.d.ts
  33. 1 1
      src/headless/utils/color.js
  34. 2 2
      src/headless/utils/init.js
  35. 1 1
      src/plugins/chatview/styles/chat-bottom-panel.scss
  36. 8 8
      src/plugins/chatview/tests/messages.js
  37. 1 1
      src/plugins/chatview/tests/oob.js
  38. 1 1
      src/plugins/dragresize/utils.js
  39. 1 1
      src/plugins/muc-views/templates/occupant.js
  40. 1 1
      src/plugins/muc-views/tests/mentions.js
  41. 1 1
      src/plugins/muc-views/tests/muc-mentions.js
  42. 1 1
      src/plugins/muc-views/tests/muc-registration.js
  43. 2 2
      src/plugins/muc-views/tests/muc.js
  44. 19 19
      src/plugins/rosterview/tests/roster.js
  45. 1 1
      src/shared/autocomplete/suggestion.js
  46. 1 1
      src/shared/chat/chat-content.js
  47. 1 1
      src/shared/chat/message-actions.js
  48. 1 1
      src/shared/chat/utils.js
  49. 2 2
      src/shared/components/split-resize.js
  50. 1 1
      src/shared/modals/tests/user-details-modal.js
  51. 1 1
      src/shared/tests/mock.js
  52. 1 1
      src/types/plugins/dragresize/utils.d.ts
  53. 1 1
      src/types/shared/autocomplete/suggestion.d.ts
  54. 1 1
      src/types/shared/chat/utils.d.ts

+ 10 - 10
CHANGES.md

@@ -34,7 +34,7 @@
 - #2938: Add a service discovery browser
 - #3672: Images not rendering
 - #3676: Flyout box is not positioned correctly on mobile devices in "overlayed" mode
-- #3689: Chat view not accesible for certain widths in "fullscreen" mode
+- #3689: Chat view not accessible for certain widths in "fullscreen" mode
 - Remove modal from the DOM when it's closed
 - Fix login form style for `classic` theme
 - Fix css for the `headlines` feed
@@ -205,7 +205,7 @@ Adding more types of chats:
 ## 10.1.2 (2023-02-17)
 
 - #1490: Busy-loop when fetching registration form fails
-- #1556: Can't switch to registration form afrer logout
+- #1556: Can't switch to registration form after logout
 - #3137: Various UI/UX bugfixes regarding the registration form
 - XEP-0437: Room Activity Indicators (RAI) optimizations
 
@@ -374,7 +374,7 @@ Instead, use `api.settings.get` and `api.settings.set`.
 - Add support for pausing Gif images
 - Add limited support for XEP-0316 MUC notifications
 
-### New configuration setings
+### New configuration settings
 
 - [show_tab_notifications](https://conversejs.org/docs/html/configuration.html#show-tab-notifications)
 - [muc_clear_messages_on_leave](https://conversejs.org/docs/html/configuration.html#muc-clear-messages-on-leave)
@@ -494,7 +494,7 @@ Soon we'll deprecate the latter, so prepare now.
 - #2300: Fix message reorder issue after message correction.
 - #2304: Custom emojis (stickers) images not shown
 - #2307: BootstrapModal is not accessible to plugins
-- #2308: Allow getHats method to be overriden in the `overrides` object in plugins.
+- #2308: Allow getHats method to be overridden in the `overrides` object in plugins.
 - #2321: When Converse runs inside a browser extension, enable browser sync and local storage for persistent storage
 - #1250: Change favicon color when unread messages
 - Updated translations: de, es, fi, fr, gl, hu, nb_NO, oc, pl, pt, pt_BR, ru, tr, uk, zh
@@ -548,7 +548,7 @@ Soon we'll deprecate the latter, so prepare now.
   instances. Still working out a wire protocol for compatibility with other clients.
   To add custom emojis, edit the `emojis.json` file.
 
-- #129: Add support for [XEP-0156: Disovering Alternative XMPP Connection Methods](https://xmpp.org/extensions/xep-0156.html). Only XML is supported for now.
+- #129: Add support for [XEP-0156: Discovering Alternative XMPP Connection Methods](https://xmpp.org/extensions/xep-0156.html). Only XML is supported for now.
 - #1105: Support for storing persistent data in IndexedDB
 - #1253: Show contacts with unread messages at the top of the roster
 - #1322 Display occupants’ avatars in the occupants list
@@ -858,7 +858,7 @@ version 1.7.0 and below. You're advised to stay on Converse version 4.1.2 until
 - #1268 Switch from SASS variables to CSS custom properties
 - #1278 Replace the default avatar with a SVG version
 - #1288 Add CSS classes to differentiate between incoming and outgoing messages
-- #1305 added value 'all' for 'show_desktop_notifications' to notifiy even if converse.js is open
+- #1305 added value 'all' for 'show_desktop_notifications' to notify even if converse.js is open
 - #1306 added option `notification_delay`
 - #1312 Error `unrecognized expression` in Safari
 - #1316 show version info in login dialog
@@ -1225,7 +1225,7 @@ version 1.7.0 and below. You're advised to stay on Converse version 4.1.2 until
 - It wasn't possible to add or remove bookmarks via the "Open Rooms" list.
 - #879 Text in links are converted to smileys leading to non-clickable links.
 - #899: Only touch `stamp-npm` if `npm install` was successful
-- #902 `make build` dependends on non-existing files
+- #902 `make build` depends on non-existing files
 
 ## 3.1.1 (2017-07-12)
 
@@ -1304,7 +1304,7 @@ More info here: https://github.com/LeaVerou/awesomplete/pull/17082
 ## 3.0.1 (2017-04-04)
 
 - Bugfix. Endless spinner when trying to log in after rendering the registration form. [jcbrand]
-- #585 Duplicate contact created due to JID case sensivity [saganshul]
+- #585 Duplicate contact created due to JID case sensitivity [saganshul]
 - #628 Fixes the bug in displaying chat status during private chat. [saganshul]
 - #628 Changes the message displayed while typing from a different resource of the same user. [smitbose]
 - #675 Time format made configurable.
@@ -1601,7 +1601,7 @@ More info here: https://github.com/LeaVerou/awesomplete/pull/17082
 - #487 Empty the resources array when the resource is null [rlanvin]
 - #534 Updated Russian translation [LaconicTranslator]
 - #555 The status restored from sessionStorage is never updated [jcbrand]
-- #559 Remove reconnection timer once connected succesfully [m0cs]
+- #559 Remove reconnection timer once connected successfully [m0cs]
 
 ## 0.10.0 (2015-11-05)
 
@@ -1677,7 +1677,7 @@ More info here: https://github.com/LeaVerou/awesomplete/pull/17082
 
 - Add the ability to log in automatically. [jcbrand]
 - Remove `type=email` from JID field in login form. Resulting validation error confuses people. [jcbrand]
-- Add Ukranian translations [Andriy Kopystyansky]
+- Add Ukrainian translations [Andriy Kopystyansky]
 - #244 Add the ability to log in anonymously. [jcbrand]
 - #344 Enable the path to the sound files to be configured [thierrytiti and jcbrand]
 - #370 Unable to register a new user to ejabberd 2.1.11. [gbonvehi]

+ 10 - 10
docs/source/configuration.rst

@@ -326,7 +326,7 @@ auto_fill_history_gaps
 
 * Default:  ``true``
 
-Determins whether Converse automatically fills gaps in the chat history.
+Determines whether Converse automatically fills gaps in the chat history.
 If set to false, a placeholder appears which can be clicked to fetch the
 missing messages.
 
@@ -401,7 +401,7 @@ in to their XMPP account.
   log the user in.
 
   If `authentication`_ set to ``login`` the situation is much more
-  ambiguous, since we don't have a way to distinguish between wether we're
+  ambiguous, since we don't have a way to distinguish between whether we're
   restoring a previous session (``keepalive``) or whether we're
   automatically setting up a new session (``auto_login``).
 
@@ -440,7 +440,7 @@ unexpectedly.
 
 This option works best when you have `authentication`_ set to ``prebind`` and have
 also specified a ``prebind_url`` URL, from where Converse can fetch the BOSH
-tokens. In this case, Converse will automaticallly reconnect when the
+tokens. In this case, Converse will automatically reconnect when the
 connection drops but also reestablish earlier lost connections (due to
 network outages, closing your laptop etc.).
 
@@ -643,7 +643,7 @@ chatstate_notification_blacklist
 A list of JIDs to be ignored when showing desktop notifications of changed chat states.
 
 Some user's clients routinely connect and disconnect (likely on mobile) and
-each time a chat state notificaion is received (``online`` when connecting and
+each time a chat state notification is received (``online`` when connecting and
 then ``offline`` when disconnecting).
 
 When desktop notifications are turned on (see `show-desktop-notifications`_),
@@ -1461,7 +1461,7 @@ muc_roomid_policy_hint
 
 * Default: ``null``
 
-This option can be used in conjuction with `muc_roomid_policy`_ in order to give
+This option can be used in conjunction with `muc_roomid_policy`_ in order to give
 a written explanation of the imposed room id policy. You can use the html-tags
 ``<br>``, ``<b>``, and ``<em>`` to allow some basic styling.
 
@@ -1514,7 +1514,7 @@ to build the list of desired info messages that will be shown:
 
 By default all info messages are shown.
 
-The behaviour of this setting is whitelisting, so if it is overriden all the desired
+The behaviour of this setting is whitelisting, so if it is overridden all the desired
 events must be specified.
 
 If an empty list is provided, no info message will be displayed at all.
@@ -1734,7 +1734,7 @@ The URL path at which these resources are loaded is normally set by the ``public
 setting of Webpack but this means that it's hardcoded to a particular value at
 compile time.
 
-This configuration seting allows this value to be set at runtime as well.
+This configuration setting allows this value to be set at runtime as well.
 
 .. _persistent-store:
 
@@ -2012,7 +2012,7 @@ show_background
 
 * Default: ``true``
 
-Wether a background with the Converse logo should be shown.
+Whether a background with the Converse logo should be shown.
 
 
 show_chat_state_notifications
@@ -2177,7 +2177,7 @@ sounds_path
 * Default: ``${assets_path}/sounds/``
 
 This option only makes sense in conjunction with the `play_sounds`_ option and
-specifies the URL of the sound files to be played (exluding the file names
+specifies the URL of the sound files to be played (excluding the file names
 themselves).
 
 In order to support all browsers we need both an MP3 and an Ogg file. Make sure
@@ -2262,7 +2262,7 @@ colorize_username
 
 * Default: ``false``
 
-Wether nicknames should be colorized, in compliance with `XEP-0392: Consistent Color Generation <https://xmpp.org/extensions/xep-0392.html>`_.
+Whether nicknames should be colorized, in compliance with `XEP-0392: Consistent Color Generation <https://xmpp.org/extensions/xep-0392.html>`_.
 
 time_format
 -----------

+ 1 - 1
docs/source/features.rst

@@ -156,7 +156,7 @@ Moderating chatrooms
 Here are the different commands that may be used to moderate a chatroom:
 
 +------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------+
-| Event Type | When is it triggered?                                                                        | Example (substitue $nickname with an actual user's nickname)  |
+| Event Type | When is it triggered?                                                                        | Example (substitute $nickname with an actual user's nickname)  |
 +============+==============================================================================================+===============================================================+
 | **ban**    | Ban a user from the chatroom. They will not be able to join again.                           | /ban $nickname                                                |
 +------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------+

+ 1 - 1
docs/source/plugin_development.rst

@@ -550,7 +550,7 @@ as follows:
 
 Our plugin was able to add data to the payload without requiring any kind of
 knowledge from ``hookTriggerExample`` about ``hookListenerExample`` and
-without any kind of coupling betwee the code.
+without any kind of coupling between the code.
 
 A good example of a real-world hook in Converse, is the
 `getMessageActionButtons <https://conversejs.org/docs/html/api/-_converse.html#event:getMessageActionButtons>`_

+ 1 - 1
docs/source/session.rst

@@ -183,7 +183,7 @@ which does the above. You'd have to `configure Converse.js to use SASL-EXTERNAL
 and then set up Prosody with that plugin. (Note, I haven't yet tested this setup personally).
 
 This is however not a cross-platform solution and won't work for hosters who
-want to support all or multple XMPP servers.
+want to support all or multiple XMPP servers.
 
 Storing the password in localStorage
 ------------------------------------

+ 1 - 1
docs/source/setup.rst

@@ -119,7 +119,7 @@ Lets say the domain under which you host Converse is *example.org:80*,
 but the domain of your connection manager or the domain of
 your HTTP file server (for `XEP-0363 HTTP File Upload <https://xmpp.org/extensions/xep-0363.html>`_)
 is at a different domain, either a different port like *example.org:5280* or a
-different name like *elsehwere.org*.
+different name like *elsewhere.org*.
 
 In such a situation the same-origin security policy of the browser comes into force.
 For security purposes a browser does not by default allow a website to

+ 1 - 1
docs/source/setup_dev_environment.rst

@@ -78,7 +78,7 @@ If this directory does NOT exist, something must have gone wrong.
 Double-check the output of ``make watch`` to see if there are any errors
 listed.
 
-For support, you can ask in our chatroom: `dicuss@conference.conversejs.org <xmpp:discuss@conference.conversejs.org>`_.
+For support, you can ask in our chatroom: `discuss@conference.conversejs.org <xmpp:discuss@conference.conversejs.org>`_.
 
 If you don't have an XMPP client installed, follow this link to
 `conversejs.org <https://conversejs.org/fullscreen#converse/room?jid=discuss@conference.conversejs.org>`_

+ 1 - 1
docs/source/theming.rst

@@ -87,7 +87,7 @@ theme file that sets the various CSS variables (as described above).
 For other CSS-related changes, you can make a specific
 CSS rule with that matches the element you want to change.
 
-Sometimes it might however be neccessary to modify the core CSS files from
+Sometimes it might however be necessary to modify the core CSS files from
 Converse, for example if you're developing new features or fixing styling bugs.
 
 The CSS files are generated from `Sass <http://sass-lang.com>`_ files that end in ``.scss`` and

+ 2 - 2
src/headless/plugins/emoji/utils.js

@@ -87,7 +87,7 @@ export function convertASCII2Emoji (str) {
     // Replace ASCII smileys
     return str.replace(ASCII_REPLACE_REGEX, (entire, _, m2, m3) => {
         if( (typeof m3 === 'undefined') || (m3 === '') || (!(u.unescapeHTML(m3) in ASCII_LIST)) ) {
-            // if the ascii doesnt exist just return the entire match
+            // if the ascii doesn't exist just return the entire match
             return entire;
         }
         m3 = u.unescapeHTML(m3);
@@ -180,7 +180,7 @@ function shortnamesToUnicode (str) {
  * Determines whether the passed in string is just a single emoji shortname;
  * @namespace u
  * @method u.isOnlyEmojis
- * @param { String } text - A string which migh be just an emoji shortname
+ * @param { String } text - A string which might be just an emoji shortname
  * @returns { Boolean }
  */
 export function isOnlyEmojis (text) {

+ 1 - 1
src/headless/plugins/mam/utils.js

@@ -44,7 +44,7 @@ export async function onMAMError(e, iq) {
  * currently not supported in converse.js.
  *
  * Per JID preferences will be set in chat boxes, so it'll
- * probbaly be handled elsewhere in any case.
+ * probably be handled elsewhere in any case.
  *
  * @param {Element} iq
  * @param {Model} feature

+ 1 - 1
src/headless/plugins/muc/affiliations/api.js

@@ -14,7 +14,7 @@ export default {
      */
     affiliations: {
         /**
-         * Set the given affliation for the given JIDs in the specified MUCs
+         * Set the given affiliation for the given JIDs in the specified MUCs
          * @typedef {Object} User
          * @property {string} User.jid - The JID of the user whose affiliation will change
          * @property {Array} User.affiliation - The new affiliation for this user

+ 1 - 1
src/headless/plugins/muc/message.js

@@ -33,7 +33,7 @@ class MUCMessage extends BaseMessage {
     }
 
     /**
-     * Determines whether this messsage may be moderated,
+     * Determines whether this message may be moderated,
      * based on configuration settings and server support.
      * @method _converse.ChatRoomMessages#mayBeModerated
      * @returns {Promise<boolean>}

+ 3 - 3
src/headless/plugins/muc/muc.js

@@ -1312,7 +1312,7 @@ class MUC extends ModelWithVCard(ModelWithMessages(ColorAwareModel(ChatBoxBase))
 
     /**
      * Use converse-disco to populate the features {@link Model} which
-     * is stored as an attibute on this {@link MUC}.
+     * is stored as an attribute on this {@link MUC}.
      * The results may be cached. If you want to force fetching the features from the
      * server, call {@link MUC#refreshDiscoInfo} instead.
      * @returns {Promise}
@@ -1589,7 +1589,7 @@ class MUC extends ModelWithVCard(ModelWithMessages(ColorAwareModel(ChatBoxBase))
      * @param {MUCOccupant} occupant
      * @param {string} role
      * @param {string} reason
-     * @param {function} onSuccess - callback for a succesful response
+     * @param {function} onSuccess - callback for a successful response
      * @param {function} onError - callback for an error response
      */
     setRole(occupant, role, reason, onSuccess, onError) {
@@ -2587,7 +2587,7 @@ class MUC extends ModelWithVCard(ModelWithMessages(ColorAwareModel(ChatBoxBase))
                 !['owner', 'admin'].includes(occupant.get('affiliation')) &&
                 isInfoVisible(converse.MUC_ROLE_CHANGES.OP)
             ) {
-                // Oly show this message if the user isn't already
+                // Only show this message if the user isn't already
                 // an admin or owner, otherwise this isn't new information.
                 this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.OP);
             }

+ 1 - 1
src/headless/plugins/roster/api.js

@@ -74,7 +74,7 @@ export default {
          * @param {boolean} [persist=true] - Whether the contact should be persisted to the user's roster.
          * @param {boolean} [subscribe=true] - Whether we should subscribe to the contacts presence updates.
          * @param {string} [message=''] - An optional message to include with the presence subscription
-         * @param {boolean} subscribe - Whether a presense subscription should
+         * @param {boolean} subscribe - Whether a presence subscription should
          *      be sent out to the contact being added.
          * @returns {Promise<RosterContact>}
          * @example

+ 1 - 1
src/headless/plugins/vcard/api.js

@@ -35,7 +35,7 @@ export default {
          *     'fn': 'John Doe',
          *     'nickname': 'jdoe'
          * }).then(() => {
-         *     // Succes
+         *     // Success
          * }).catch((e) => {
          *     // Failure, e is your error object
          * }).

+ 1 - 1
src/headless/shared/api/promise.js

@@ -10,7 +10,7 @@ export default {
      *
      * Some of these events are also available as [ES2015 Promises](http://es6-features.org/#PromiseUsage)
      * although not all of them could logically act as promises, since some events
-     * might be fired multpile times whereas promises are to be resolved (or
+     * might be fired multiple times whereas promises are to be resolved (or
      * rejected) only once.
      *
      * Events which are also promises include:

+ 2 - 2
src/headless/shared/connection/index.js

@@ -74,11 +74,11 @@ export class Connection extends Strophe.Connection {
     }
 
     /**
-     * Adds support for XEP-0156 by quering the XMPP server for alternate
+     * Adds support for XEP-0156 by querying the XMPP server for alternate
      * connection methods. This allows users to use the websocket or BOSH
      * connection of their own XMPP server instead of a proxy provided by the
      * host of Converse.js.
-     * @method Connnection.discoverConnectionMethods
+     * @method Connection.discoverConnectionMethods
      * @param {string} domain
      */
     async discoverConnectionMethods (domain) {

+ 4 - 4
src/headless/shared/message.js

@@ -145,7 +145,7 @@ class BaseMessage extends ModelWithVCard(ModelWithContact(ColorAwareModel(Model)
     }
 
     /**
-     * Determines whether this messsage may be retracted by the current user.
+     * Determines whether this message may be retracted by the current user.
      * @returns { Boolean }
      */
     mayBeRetracted() {
@@ -191,7 +191,7 @@ class BaseMessage extends ModelWithVCard(ModelWithContact(ColorAwareModel(Model)
     getUploadRequestMetadata(stanza) {
         const headers = sizzle(`slot[xmlns="${Strophe.NS.HTTPUPLOAD}"] put header`, stanza);
         // https://xmpp.org/extensions/xep-0363.html#request
-        // TODO: Can't set the Cookie header in JavaScipt, instead cookies need
+        // TODO: Can't set the Cookie header in JavaScript, instead cookies need
         // to be manually set via document.cookie, so we're leaving it out here.
         return {
             headers: headers
@@ -271,11 +271,11 @@ class BaseMessage extends ModelWithVCard(ModelWithContact(ColorAwareModel(Model)
             let message;
             if (xhr.responseText) {
                 message = __(
-                    'Sorry, could not succesfully upload your file. Your server’s response: "%1$s"',
+                    'Sorry, could not successfully upload your file. Your server’s response: "%1$s"',
                     xhr.responseText
                 );
             } else {
-                message = __('Sorry, could not succesfully upload your file.');
+                message = __('Sorry, could not successfully upload your file.');
             }
             this.save({
                 is_ephemeral: true,

+ 1 - 1
src/headless/shared/model-with-messages.js

@@ -598,7 +598,7 @@ export default function ModelWithMessages(BaseModel) {
         }
 
         /**
-         * Used by sub-classes to indicate wether a message is a chat
+         * Used by sub-classes to indicate whether a message is a chat
          * message, as opposed to error or info messages.
          * @param {BaseMessage} _message
          * @returns {boolean}

+ 1 - 1
src/headless/shared/types.ts

@@ -210,7 +210,7 @@ export type MessageAttributes = EncryptionAttrs &
         retracted_id: string; // The `id` attribute of a XEP-424 <retracted> element
         sender: 'me' | 'them'; // Whether the message was sent by the current user or someone else
         spoiler_hint: string; //  The XEP-0382 spoiler hint
-        stanza_id: string; // The XEP-0359 Stanza ID. Note: the key is actualy `stanza_id ${by_jid}` and there can be multiple.
+        stanza_id: string; // The XEP-0359 Stanza ID. Note: the key is actually `stanza_id ${by_jid}` and there can be multiple.
         subject: string; // The <subject> element value
         thread: string; // The <thread> element value
         time: string; // The time (in ISO8601 format), either given by the XEP-0203 <delay> element, or of receipt.

+ 6 - 6
src/headless/tests/mock.js

@@ -47,19 +47,19 @@ jasmine.toEqualStanza = function toEqualStanza() {
 export const domain = 'montague.lit';
 
 export const current_contacts_map = {
-    'Mercutio': ['Colleagues', 'friends & acquaintences'],
-    'Juliet Capulet': ['friends & acquaintences'],
+    'Mercutio': ['Colleagues', 'friends & acquaintances'],
+    'Juliet Capulet': ['friends & acquaintances'],
     'Lady Montague': ['Colleagues', 'Family'],
     'Lord Montague': ['Family'],
-    'Friar Laurence': ['friends & acquaintences'],
-    'Tybalt': ['friends & acquaintences'],
+    'Friar Laurence': ['friends & acquaintances'],
+    'Tybalt': ['friends & acquaintances'],
     'Lady Capulet': ['ænemies'],
-    'Benviolo': ['friends & acquaintences'],
+    'Benviolo': ['friends & acquaintances'],
     'Balthasar': ['Colleagues'],
     'Peter': ['Colleagues'],
     'Abram': ['Colleagues'],
     'Sampson': ['Colleagues'],
-    'Gregory': ['friends & acquaintences'],
+    'Gregory': ['friends & acquaintances'],
     'Potpan': [],
     'Friar John': [],
 };

+ 1 - 1
src/headless/types/plugins/emoji/utils.d.ts

@@ -20,7 +20,7 @@ export function getCodePointReferences(text: string): any[];
  * Determines whether the passed in string is just a single emoji shortname;
  * @namespace u
  * @method u.isOnlyEmojis
- * @param { String } text - A string which migh be just an emoji shortname
+ * @param { String } text - A string which might be just an emoji shortname
  * @returns { Boolean }
  */
 export function isOnlyEmojis(text: string): boolean;

+ 1 - 1
src/headless/types/plugins/mam/utils.d.ts

@@ -12,7 +12,7 @@ export function onMAMError(e: Element | Error, iq: Element): Promise<void>;
  * currently not supported in converse.js.
  *
  * Per JID preferences will be set in chat boxes, so it'll
- * probbaly be handled elsewhere in any case.
+ * probably be handled elsewhere in any case.
  *
  * @param {Element} iq
  * @param {Model} feature

+ 2 - 2
src/headless/types/plugins/muc/affiliations/api.d.ts

@@ -1,7 +1,7 @@
 declare namespace _default {
     namespace affiliations {
         /**
-         * Set the given affliation for the given JIDs in the specified MUCs
+         * Set the given affiliation for the given JIDs in the specified MUCs
          * @typedef {Object} User
          * @property {string} User.jid - The JID of the user whose affiliation will change
          * @property {Array} User.affiliation - The new affiliation for this user
@@ -54,4 +54,4 @@ declare namespace _default {
 }
 export default _default;
 export type MemberListItem = any;
-//# sourceMappingURL=api.d.ts.map
+//# sourceMappingURL=api.d.ts.map

+ 1 - 1
src/headless/types/plugins/muc/message.d.ts

@@ -3,7 +3,7 @@ declare class MUCMessage extends BaseMessage {
     get occupants(): any;
     getDisplayName(): any;
     /**
-     * Determines whether this messsage may be moderated,
+     * Determines whether this message may be moderated,
      * based on configuration settings and server support.
      * @method _converse.ChatRoomMessages#mayBeModerated
      * @returns {Promise<boolean>}

+ 2 - 2
src/headless/types/plugins/muc/muc.d.ts

@@ -558,7 +558,7 @@ declare class MUC extends MUC_base {
     getDiscoInfoFields(): Promise<any>;
     /**
      * Use converse-disco to populate the features {@link Model} which
-     * is stored as an attibute on this {@link MUC}.
+     * is stored as an attribute on this {@link MUC}.
      * The results may be cached. If you want to force fetching the features from the
      * server, call {@link MUC#refreshDiscoInfo} instead.
      * @returns {Promise}
@@ -625,7 +625,7 @@ declare class MUC extends MUC_base {
      * @param {MUCOccupant} occupant
      * @param {string} role
      * @param {string} reason
-     * @param {function} onSuccess - callback for a succesful response
+     * @param {function} onSuccess - callback for a successful response
      * @param {function} onError - callback for an error response
      */
     setRole(occupant: import("./occupant.js").default, role: string, reason: string, onSuccess: Function, onError: Function): any;

+ 1 - 1
src/headless/types/plugins/roster/api.d.ts

@@ -45,7 +45,7 @@ declare namespace _default {
          * @param {boolean} [persist=true] - Whether the contact should be persisted to the user's roster.
          * @param {boolean} [subscribe=true] - Whether we should subscribe to the contacts presence updates.
          * @param {string} [message=''] - An optional message to include with the presence subscription
-         * @param {boolean} subscribe - Whether a presense subscription should
+         * @param {boolean} subscribe - Whether a presence subscription should
          *      be sent out to the contact being added.
          * @returns {Promise<RosterContact>}
          * @example

+ 1 - 1
src/headless/types/plugins/vcard/api.d.ts

@@ -16,7 +16,7 @@ declare namespace _default {
          *     'fn': 'John Doe',
          *     'nickname': 'jdoe'
          * }).then(() => {
-         *     // Succes
+         *     // Success
          * }).catch((e) => {
          *     // Failure, e is your error object
          * }).

+ 2 - 2
src/headless/types/shared/connection/index.d.ts

@@ -13,11 +13,11 @@ export class Connection extends Connection_base {
     bind(): Promise<void>;
     onDomainDiscovered(response: any): Promise<void>;
     /**
-     * Adds support for XEP-0156 by quering the XMPP server for alternate
+     * Adds support for XEP-0156 by querying the XMPP server for alternate
      * connection methods. This allows users to use the websocket or BOSH
      * connection of their own XMPP server instead of a proxy provided by the
      * host of Converse.js.
-     * @method Connnection.discoverConnectionMethods
+     * @method Connection.discoverConnectionMethods
      * @param {string} domain
      */
     discoverConnectionMethods(domain: string): Promise<void>;

+ 1 - 1
src/headless/types/shared/message.d.ts

@@ -261,7 +261,7 @@ declare class BaseMessage extends BaseMessage_base {
      */
     isFollowup(): boolean;
     /**
-     * Determines whether this messsage may be retracted by the current user.
+     * Determines whether this message may be retracted by the current user.
      * @returns { Boolean }
      */
     mayBeRetracted(): boolean;

+ 2 - 2
src/headless/types/shared/model-with-messages.d.ts

@@ -134,7 +134,7 @@ export default function ModelWithMessages<T extends import("./types").ModelExten
         editEarlierMessage(): void;
         editLaterMessage(): any;
         /**
-         * Used by sub-classes to indicate wether a message is a chat
+         * Used by sub-classes to indicate whether a message is a chat
          * message, as opposed to error or info messages.
          * @param {BaseMessage} _message
          * @returns {boolean}
@@ -309,4 +309,4 @@ export default function ModelWithMessages<T extends import("./types").ModelExten
     };
 } & T;
 import { Model } from '@converse/skeletor';
-//# sourceMappingURL=model-with-messages.d.ts.map
+//# sourceMappingURL=model-with-messages.d.ts.map

+ 1 - 1
src/headless/types/shared/settings/constants.d.ts

@@ -63,7 +63,7 @@ export type ConfigurationSettings = {
     i18n?: string;
     jid?: string;
     keepalive?: boolean;
-    loglevel?: ("debug" | "info" | "eror");
+    loglevel?: ("debug" | "info" | "error");
     locales?: Array<string>;
     nickname?: string;
     password?: string;

+ 1 - 1
src/headless/utils/color.js

@@ -10,7 +10,7 @@ const cache = new Map();
  * @returns {Promise<string>}
  */
 export async function colorize(s) {
-    // We cache results in `cache`, to avoid unecessary computing (as it can be called very often)
+    // We cache results in `cache`, to avoid unnecessary computing (as it can be called very often)
     const v = cache.get(s);
     if (v) return v;
 

+ 2 - 2
src/headless/utils/init.js

@@ -162,7 +162,7 @@ function saveJIDtoSession(_converse, jid) {
         domain,
         // We use the `active` flag to determine whether we should use the values from sessionStorage.
         // When "cloning" a tab (e.g. via middle-click), the `active` flag will be set and we'll create
-        // a new empty user session, otherwise it'll be false and we can re-use the user session.
+        // a new empty user session, otherwise it'll be false and we can reuse the user session.
         // When the tab is reloaded, the `active` flag is set to `false`.
         "active": true,
     });
@@ -379,7 +379,7 @@ export async function attemptNonPreboundSession(credentials, automatic) {
         const jid = _converse.session.get("jid");
         // XXX: If EITHER ``keepalive`` or ``auto_login`` is ``true`` and
         // ``authentication`` is set to ``login``, then Converse will try to log the user in,
-        // since we don't have a way to distinguish between wether we're
+        // since we don't have a way to distinguish between whether we're
         // restoring a previous session (``keepalive``) or whether we're
         // automatically setting up a new session (``auto_login``).
         // So we can't do the check (!automatic || _converse.api.settings.get("auto_login")) here.

+ 1 - 1
src/plugins/chatview/styles/chat-bottom-panel.scss

@@ -62,7 +62,7 @@
                     width: 100%;
                     border: none;
                     min-height: var(--chat-textarea-height);
-                    margin-bottom: -4px; // Not clear why this is necessar :(
+                    margin-bottom: -4px; // Not clear why this is necessary :(
                     resize: none;
                     &.spoiler {
                         height: 42px;

+ 8 - 8
src/plugins/chatview/tests/messages.js

@@ -116,7 +116,7 @@ describe("A Chat Message", function () {
                      to="${_converse.bare_jid}"
                      from="${sender_jid}"
                      type="chat">
-                <body>Inbetween message</body>
+                <body>In between message</body>
                 <delay xmlns="urn:xmpp:delay" stamp="2018-01-01T13:18:23Z"/>
             </message>`;
         _converse.handleMessageStanza(msg);
@@ -128,7 +128,7 @@ describe("A Chat Message", function () {
                      to="${_converse.bare_jid}"
                      from="${sender_jid}"
                      type="chat">
-                <body>another inbetween message</body>
+                <body>another in between message</body>
                 <delay xmlns="urn:xmpp:delay" stamp="2018-01-01T13:18:23Z"/>
             </message>`;
         _converse.handleMessageStanza(msg);
@@ -206,14 +206,14 @@ describe("A Chat Message", function () {
 
         day = sizzle('.date-separator:eq(1)', view).pop();
         expect(day.getAttribute('data-isodate')).toEqual(dayjs('2018-01-01T00:00:00').toISOString());
-        expect(day.nextElementSibling.querySelector('.chat-msg__text').textContent).toBe('Inbetween message');
+        expect(day.nextElementSibling.querySelector('.chat-msg__text').textContent).toBe('In between message');
 
         el = sizzle('.chat-msg:eq(1)', view).pop();
-        expect(el.querySelector('.chat-msg__text').textContent).toEqual('Inbetween message');
-        expect(el.parentElement.nextElementSibling.querySelector('.chat-msg__text').textContent).toEqual('another inbetween message');
+        expect(el.querySelector('.chat-msg__text').textContent).toEqual('In between message');
+        expect(el.parentElement.nextElementSibling.querySelector('.chat-msg__text').textContent).toEqual('another in between message');
         el = sizzle('.chat-msg:eq(2)', view).pop();
         expect(el.querySelector('.chat-msg__text').textContent)
-            .toEqual('another inbetween message');
+            .toEqual('another in between message');
         expect(u.hasClass('chat-msg--followup', el)).toBe(true);
 
         time = sizzle('time.separator-text:nth(2)', view).pop();
@@ -415,7 +415,7 @@ describe("A Chat Message", function () {
         let chatbox = await _converse.api.chats.get(impersonated_jid);
         expect(chatbox).toBe(null);
 
-        // Check that the chatbox for the malicous user is not created
+        // Check that the chatbox for the malicious user is not created
         chatbox = await _converse.api.chats.get(sender_jid);
         expect(chatbox).toBe(null);
     }));
@@ -774,7 +774,7 @@ describe("A Chat Message", function () {
         expect(view.querySelector(`${nth_child(6)} .chat-msg__text`).textContent).toBe(
             "Another message within 10 minutes, but from a different person");
 
-        // Let's add a delayed, inbetween message
+        // Let's add a delayed, in between message
         _converse.handleMessageStanza(
             $msg({
                 'xmlns': 'jabber:client',

+ 1 - 1
src/plugins/chatview/tests/oob.js

@@ -50,7 +50,7 @@ describe("A Chat Message", function () {
 
             await new Promise(resolve => view.model.messages.once('rendered', resolve));
             msg = view.querySelector('.chat-msg .chat-msg__text');
-            expect(msg.innerHTML.replace(/<!-.*?->/g, '')).toEqual('Have you heard this funny audio?'); // Emtpy
+            expect(msg.innerHTML.replace(/<!-.*?->/g, '')).toEqual('Have you heard this funny audio?'); // Empty
 
             // We don't render the OOB data
             expect(view.querySelector('converse-chat-message:last-child .chat-msg__media')).toBe(null);

+ 1 - 1
src/plugins/dragresize/utils.js

@@ -13,7 +13,7 @@ export function unregisterGlobalEventHandlers() {
 }
 
 /**
- * This function registers mousedown and mouseup events hadlers to
+ * This function registers mousedown and mouseup events handlers to
  * all iframes in the DOM when converse UI resizing events are called
  * to prevent mouse drag stutter effect which is bad user experience.
  * @param {Element} e - dragging node element.

+ 1 - 1
src/plugins/muc-views/templates/occupant.js

@@ -17,7 +17,7 @@ let badges_definitions; // will be initialized at first call (to be sure that th
 
 /**
  * Inits badges definitions.
- * For short labels, it will use the label first letter. If there is ambigous short labels, it will try to add up to 4 letters.
+ * For short labels, it will use the label first letter. If there is ambiguous short labels, it will try to add up to 4 letters.
  * Letters will be uppercase.
  */
 function initBadgesDefinitions() {

+ 1 - 1
src/plugins/muc-views/tests/mentions.js

@@ -324,7 +324,7 @@ describe("A sent groupchat message", function () {
                     </presence>`))
             });
 
-            // Test that we don't match @nick in email adresses.
+            // Test that we don't match @nick in email addresses.
             let [text, references] = view.model.parseTextForReferences('contact contact@NotAnAdress.eu');
             expect(references.length).toBe(0);
             expect(text).toBe('contact contact@NotAnAdress.eu');

+ 1 - 1
src/plugins/muc-views/tests/muc-mentions.js

@@ -4,7 +4,7 @@ const { dayjs, stx, u } = converse.env;
 
 // See: https://xmpp.org/rfcs/rfc3921.html
 
-describe("MUC Mention Notfications", function () {
+describe("MUC Mention Notifications", function () {
 
     it("may be received from a MUC in which the user is not currently present",
         mock.initConverse([], {

+ 1 - 1
src/plugins/muc-views/tests/muc-registration.js

@@ -4,7 +4,7 @@ const { Strophe, sizzle, u, stx } = converse.env;
 
 describe("Chatrooms", function () {
 
-    describe("The /register commmand", function () {
+    describe("The /register command", function () {
 
         it("allows you to register your nickname in a room",
                 mock.initConverse(['chatBoxesFetched'], {'auto_register_muc_nickname': true},

+ 2 - 2
src/plugins/muc-views/tests/muc.js

@@ -64,7 +64,7 @@ describe("Groupchats", function () {
             const csntext = await u.waitUntil(() => view.querySelector('.chat-content__notifications').textContent);
             expect(csntext.trim()).toEqual("nicky has entered the groupchat");
 
-            // An instant room is created by saving the default configuratoin.
+            // An instant room is created by saving the default configuration.
             const selector = `query[xmlns="${Strophe.NS.MUC_OWNER}"]`;
             IQ_stanzas = _converse.api.connection.get().IQ_stanzas;
             const iq = await u.waitUntil(() => IQ_stanzas.filter((s) => sizzle(selector, s).length).pop());
@@ -1763,7 +1763,7 @@ describe("Groupchats", function () {
                     `iq[to="${muc_jid}"] query[xmlns="http://jabber.org/protocol/disco#info"]`
                 )).pop());
 
-            // Check that the groupchat queried for the feautures.
+            // Check that the groupchat queried for the features.
             expect(stanza).toEqualStanza(stx`
                 <iq from="romeo@montague.lit/orchard"
                         id="${stanza.getAttribute("id")}"

+ 19 - 19
src/plugins/rosterview/tests/roster.js

@@ -183,7 +183,7 @@ describe("The Contacts Roster", function () {
                         <group>Friends</group>
                     </item>
                     <item jid="lord.capulet@example.net" name="Lord Capulet" subscription="none">
-                        <group>Acquaintences</group>
+                        <group>Acquaintances</group>
                     </item>
                 </query>
             </iq>
@@ -240,7 +240,7 @@ describe("The Contacts Roster", function () {
                         <group>Friends</group>
                     </item>
                     <item jid="lord.capulet@example.net" name="Lord Capulet" subscription="from">
-                        <group>Acquaintences</group>
+                        <group>Acquaintances</group>
                     </item>
                 </query>
             </iq>
@@ -275,7 +275,7 @@ describe("The Contacts Roster", function () {
         expect(visible_groups.length).toBe(4);
         expect(visible_groups[0].textContent.trim()).toBe('Colleagues');
         expect(visible_groups[1].textContent.trim()).toBe('Family');
-        expect(visible_groups[2].textContent.trim()).toBe('friends & acquaintences');
+        expect(visible_groups[2].textContent.trim()).toBe('friends & acquaintances');
         expect(visible_groups[3].textContent.trim()).toBe('ænemies');
 
         _converse.roster.create({
@@ -290,7 +290,7 @@ describe("The Contacts Roster", function () {
         expect(visible_groups.length).toBe(5);
         expect(visible_groups[0].textContent.trim()).toBe('Colleagues');
         expect(visible_groups[1].textContent.trim()).toBe('Family');
-        expect(visible_groups[2].textContent.trim()).toBe('friends & acquaintences');
+        expect(visible_groups[2].textContent.trim()).toBe('friends & acquaintances');
         expect(visible_groups[3].textContent.trim()).toBe('newgroup');
         expect(visible_groups[4].textContent.trim()).toBe('ænemies');
         expect(roster.querySelectorAll('.roster-group').length).toBe(5);
@@ -347,7 +347,7 @@ describe("The Contacts Roster", function () {
             // Only one foster group is still visible
             expect(sizzle('.roster-group', roster).filter(u.isVisible).length).toBe(1);
             const visible_group = sizzle('.roster-group', roster).filter(u.isVisible).pop();
-            expect(visible_group.querySelector('a.group-toggle').textContent.trim()).toBe('friends & acquaintences');
+            expect(visible_group.querySelector('a.group-toggle').textContent.trim()).toBe('friends & acquaintances');
 
             filter = rosterview.querySelector('.items-filter');
             filter.value = "j";
@@ -359,7 +359,7 @@ describe("The Contacts Roster", function () {
 
             let visible_groups = sizzle('.roster-group', roster).filter(u.isVisible).map(el => el.querySelector('a.group-toggle'));
             expect(visible_groups.length).toBe(2);
-            expect(visible_groups[0].textContent.trim()).toBe('friends & acquaintences');
+            expect(visible_groups[0].textContent.trim()).toBe('friends & acquaintances');
             expect(visible_groups[1].textContent.trim()).toBe('Ungrouped');
 
             filter = rosterview.querySelector('.items-filter');
@@ -485,7 +485,7 @@ describe("The Contacts Roster", function () {
 
             await u.waitUntil(() => sizzle('li', roster).filter(u.isVisible).pop().querySelector('.contact-name').textContent.trim() === 'Friar Laurence', 900);
             const ul = sizzle('ul.roster-group-contacts', roster).filter(u.isVisible).pop();
-            expect(ul.parentElement.firstElementChild.textContent.trim()).toBe('friends & acquaintences');
+            expect(ul.parentElement.firstElementChild.textContent.trim()).toBe('friends & acquaintances');
             expect(sizzle('ul.roster-group-contacts', roster).filter(u.isVisible).length).toBe(1);
         }));
     });
@@ -510,7 +510,7 @@ describe("The Contacts Roster", function () {
                 "Contact requests",
                 "Colleagues",
                 "Family",
-                "friends & acquaintences",
+                "friends & acquaintances",
                 "ænemies",
                 "Ungrouped",
                 "Pending contacts",
@@ -528,7 +528,7 @@ describe("The Contacts Roster", function () {
                 "Contact requests",
                 "Colleagues",
                 "Family",
-                "friends & acquaintences",
+                "friends & acquaintances",
                 "ænemies",
                 "Ungrouped",
                 "Pending contacts",
@@ -545,7 +545,7 @@ describe("The Contacts Roster", function () {
                 "Contact requests",
                 "Colleagues",
                 "Family",
-                "friends & acquaintences",
+                "friends & acquaintances",
                 "ænemies",
                 "Ungrouped",
                 "Pending contacts",
@@ -567,7 +567,7 @@ describe("The Contacts Roster", function () {
                 "Contact requests",
                 "Colleagues",
                 "Family",
-                "friends & acquaintences",
+                "friends & acquaintances",
                 "ænemies",
                 "Ungrouped",
                 "Pending contacts",
@@ -659,7 +659,7 @@ describe("The Contacts Roster", function () {
             let i=0, j=0;
             const groups = {
                 'Colleagues': 3,
-                'friends & acquaintences': 3,
+                'friends & acquaintances': 3,
                 'Ungrouped': 2
             };
             Object.keys(groups).forEach(function (name) {
@@ -1059,7 +1059,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
             for (let i=0; i<mock.cur_names.length; i++) {
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 _converse.roster.get(jid).presence.set('show', 'online');
@@ -1085,7 +1085,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
             for (let i=0; i<mock.cur_names.length; i++) {
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 _converse.roster.get(jid).presence.set('show', 'dnd');
@@ -1111,7 +1111,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
             for (let i=0; i<mock.cur_names.length; i++) {
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 _converse.roster.get(jid).presence.set('show', 'away');
@@ -1137,7 +1137,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
             for (let i=0; i<mock.cur_names.length; i++) {
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 _converse.roster.get(jid).presence.set('show', 'xa');
@@ -1163,7 +1163,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
             for (let i=0; i<mock.cur_names.length; i++) {
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 _converse.roster.get(jid).presence.set('show', 'unavailable');
@@ -1212,7 +1212,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
 
             const group = groups[0];
             const els = Array.from(group.querySelectorAll('.current-xmpp-contact'));
@@ -1233,7 +1233,7 @@ describe("The Contacts Roster", function () {
                     expect(status_classes.join(" ")).toBe("online online away xa xa xa");
                     expect(subscription_classes.join(" ")).toBe("both both both both both both");
 
-                } else if (groupname === "friends & acquaintences") {
+                } else if (groupname === "friends & acquaintances") {
                     const statuses = els.map(e => e.getAttribute('data-status'));
                     const subscription_classes = els.map(e => e.classList[4]);
                     const status_classes = els.map(e => e.classList[5]);

+ 1 - 1
src/shared/autocomplete/suggestion.js

@@ -21,7 +21,7 @@ class Suggestion extends String {
         this.data = data;
     }
 
-    get lenth() {
+    get length() {
         return this.label.length;
     }
 

+ 1 - 1
src/shared/chat/chat-content.js

@@ -117,7 +117,7 @@ export default class ChatContent extends CustomElement {
              */
             api.trigger("chatBoxScrolledUp", el);
         }
-        if (this.model.get("scolled") !== scrolled) {
+        if (this.model.get("scrolled") !== scrolled) {
             this.model.ui.set({ scrolled });
         }
     }

+ 1 - 1
src/shared/chat/message-actions.js

@@ -100,7 +100,7 @@ class MessageActions extends CustomElement {
     async onMessageEditButtonClicked (ev) {
         ev.preventDefault();
         const currently_correcting = this.model.collection.findWhere('correcting');
-        // TODO: Use state intead of DOM querying
+        // TODO: Use state instead of DOM querying
         // Then this code can also be put on the model
         const unsent_text = u.ancestor(this, '.chatbox')?.querySelector('.chat-textarea')?.value;
         if (unsent_text && (!currently_correcting || currently_correcting.getMessageText() !== unsent_text)) {

+ 1 - 1
src/shared/chat/utils.js

@@ -250,7 +250,7 @@ export function addEmojisMarkup(text, options) {
  *
  * @namespace u
  * @method u.shortnamesToEmojis
- * @param {String} str - String containg the shortname(s)
+ * @param {String} str - String containing the shortname(s)
  * @param {Object} options
  * @param {Boolean} options.unicode_only - Whether emojis are rendered as
  *  unicode codepoints. If so, the returned result will be an array

+ 2 - 2
src/shared/components/split-resize.js

@@ -206,7 +206,7 @@ export default class SplitResize extends CustomElement {
         // Actually adjust the size.
         this.adjust(offset);
 
-        // Call the drag callback continously. Don't do anything too intensive
+        // Call the drag callback continuously. Don't do anything too intensive
         // in pair callback.
         this.getOption(options, 'onDrag', NOOP)(this.getSizes());
     }
@@ -297,7 +297,7 @@ export default class SplitResize extends CustomElement {
             );
             const elementMinSize = this.minSizes[i] + elementGutterSize;
 
-            // If element is too smal, increase excess pixels by the difference
+            // If element is too small, increase excess pixels by the difference
             // and mark that it has no pixels to spare
             if (pixelSize < elementMinSize) {
                 excessPixels += elementMinSize - pixelSize;

+ 1 - 1
src/shared/modals/tests/user-details-modal.js

@@ -26,7 +26,7 @@ describe('The User Details Modal', function () {
             expect(name_input.value).toBe('Mercutio');
 
             const groups_input = modal.querySelector('input[name="groups"]');
-            expect(groups_input.value).toBe('Colleagues,friends & acquaintences');
+            expect(groups_input.value).toBe('Colleagues,friends & acquaintances');
 
             const sent_stanzas = _converse.api.connection.get().sent_stanzas;
             while (sent_stanzas.length) sent_stanzas.pop();

+ 1 - 1
src/shared/tests/mock.js

@@ -263,7 +263,7 @@ const cur_jids = cur_names.map((name) => `${name.replace(/ /g, '.').toLowerCase(
 
 const groups = {
     'colleagues': 3,
-    'friends & acquaintences': 3,
+    'friends & acquaintances': 3,
     'Family': 4,
     'ænemies': 3,
     'Ungrouped': 2

+ 1 - 1
src/types/plugins/dragresize/utils.d.ts

@@ -1,7 +1,7 @@
 export function registerGlobalEventHandlers(): void;
 export function unregisterGlobalEventHandlers(): void;
 /**
- * This function registers mousedown and mouseup events hadlers to
+ * This function registers mousedown and mouseup events handlers to
  * all iframes in the DOM when converse UI resizing events are called
  * to prevent mouse drag stutter effect which is bad user experience.
  * @param {Element} e - dragging node element.

+ 1 - 1
src/types/shared/autocomplete/suggestion.d.ts

@@ -13,6 +13,6 @@ declare class Suggestion extends String {
     value: any;
     query: string;
     data: any;
-    get lenth(): any;
+    get length(): any;
 }
 //# sourceMappingURL=suggestion.d.ts.map

+ 1 - 1
src/types/shared/chat/utils.d.ts

@@ -65,7 +65,7 @@ export function addEmojisMarkup(text: string, options: object): string[];
  *
  * @namespace u
  * @method u.shortnamesToEmojis
- * @param {String} str - String containg the shortname(s)
+ * @param {String} str - String containing the shortname(s)
  * @param {Object} options
  * @param {Boolean} options.unicode_only - Whether emojis are rendered as
  *  unicode codepoints. If so, the returned result will be an array