npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@pazznetwork/xmpp-adapter

v1.0.0-beta

Published

## General

Downloads

3

Readme

XMPP

General

Xmpp stands for "Extensible Messaging and Presence Protocol" and was called in the past Jabber, that is the reason why there are so many references to jabber instead of xmpp.

Xmpp connects over BOSH (Bidirectional-streams Over Synchronous HTTP) which means that 2 HTTP connection will be kept open which sends stanzas (XML payloads) to the server in the first and gets them in the second one. Xmpp can now be implemented with Websocket except secure reconnections, discovery and other specific technical expectations.

General Technical Design Guidelines

In general the xmpp design choices can be better understood if you imagine trying to make a chat out of email. Therefore, there a specifications for the case of multi-user clients on a device, multi device users, multi device users on multiple servers which all support or can support different sets of features while also the same client can offer the user multiple different sets of features to support.

The goal of the authentication as well the communication line encryption tries always to be as simple and secure as possible as-well as supporting all versions and iterations of the specifications dedicated to it.

As the clients struggled with a high amount of complexity for many users the complexity was pushed slowly back to the specifications also different specifications sets. Modern clients should orient themselves on the compliance for the XMPP IM (instant messaging) client and look for the extended protocols. See: https://xmpp.org/extensions/xep-0443.html#im and https://xmpp.org/extensions/xep-0369.html the MIX specification making it possible to skip the previous implementations.

TODO MORE:

Contact Management

Every user can write to any other user as long they know or have their jid, guessed of from a shared room. A user can be blocked or added to your contacts. An add to the contacts is a subscription to as users presence which will be broadcast by him when he logs in. When a user added you to your contacts you can also add them which creates a bidirectional subscriptions.

The add, remove and block are managed by the rooster spec and block spec which manage contact and block lists of a user.

There is always the case of the user writing without sending a contact request which leads to the need to also analyse the received messages by the user to visualize all contacts.

Messaging

In the core specification messages arrive to a user only when he is online and only to the specific client and specific device and are only kept in one session. For managing offline messages and the message history the Message Archive Management shorted to MAM was added.

When a server supports this feature

Other Message Features other Chat Clients offer and are in specification process:

  • Time

Connection Management

To establish a stable connection the implementation of the ping specification is necessary to avoid timeouts if there are no actions performed on the connections. To have proper timeouts on requests there is the need for the ack specifications which checks regular if a set amount of requests was answered and makes a reconnections possible on the last set of packages.

Specifications

XMPP Core RFC-6121

XMPP Extension for Websocket RFC-7395

Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence

Abstract Specification extending or amending existing ones

XMPP Forms, XHTML, X-Forms

XEP-0004 Used in publish-subscribe, message-archive or multi-user-chat.

Extended Stanza Addressing

XEP-0033 Used to send one message to several JIDs at the same time and to forward messages.

Plugins

service-discovery

XEP-0030

| XEP | Version | Status | Name | Plugins | Notes | | ----------------------------------------------------- | :------ | ------- | ------------------------------------------------ | ---------------------------------- | ---------------------------------------------------------------------------------------------------------- | | XEP-0045 | 1.31.2 | Partial | Multi-user chat rooms | multi-user-chat | All basics stuff is supported. Also, some more advanced features like invitations, creation of rooms, etc. | | XEP-0048 | 1.1 | Partial | Bookmarks | bookmark | | | XEP-0049 | 1.2 | Discuss | Private XML Storage | | For bookmark storage and meta contacts. | | XEP-0050 | 1.2 | Discuss | Ad-Hoc Commands | | | | XEP-0054 | 1.2 | Discuss | VCard-temp | | | | XEP-0055 | 1.3 | Discuss | Jabber Search | | | | XEP-0059 | 1.0 | Partial | Result Set Management | message-archive | Used by XEP-0313. | | XEP-0060 | 1.13 | Partial | Publish-Subscribe | publish-subscribe | | | XEP-0065 | 1.8 | Discuss | SOCKS5 Bytestreams | | | | XEP-0066 | 1.5 | Planned | Out of Band Data | | Support for URLs in messages. | | XEP-0070 | 1.0 | Discuss | Verifying HTTP Requests via XMPP | | | | XEP-0071 | 1.4 | Discuss | XHTML-IM | | | | XEP-0077 | 2.4 | Partial | In-band registration | registration | | | XEP-0083 | 1.0 | Discuss | Nested Roster Groups | | | | XEP-0084 | 1.1.1 | Discuss | User Avatar | | | | XEP-0085 | 2.1 | Discuss | Chat State Notifications | | | | XEP-0095 | 1.1 | Discuss | Stream Initiation | | | | XEP-0107 | 1.2 | Discuss | User Mood | | | | XEP-0108 | 1.3 | Discuss | User Activity | | | | XEP-0115 | 1.5 | Partial | Entity Capabilities | roster | | | XEP-0118 | 1.2 | Discuss | User Tune | | | | XEP-0144 | 1.1.1 | Discuss | Roster Item Exchange | | Makes sharing of roster contacts possible | | XEP-0145 | 1.0 | Discuss | Annotations | | Notes for contacts | | XEP-0146 | 1.0 | Discuss | Remote Controlling Clients | | | | XEP-0153 | 1.0 | Discuss | vCard-Based Avatars | | | | XEP-0157 | 1.1.0 | Discuss | Contact Addresses for XMPP Services | | | | XEP-0158 | 1.0 | Discuss | CAPTCHA Forms | | Images only. | | XEP-0163 | 1.2 | Partial | Personal Eventing Protocol | publish-subscribe, message-archive | | | XEP-0166 | 1.1.2 | Discuss | Jingle | | | | XEP-0172 | 1.0 | Discuss | User Nickname | | | | XEP-0184 | 1.2 | Discuss | Message Receipt | | Message was read notification | | XEP-0191 | 1.3 | Partial | Blocking Command | block | Implemented instead of XEP-0016 | | XEP-0198 | 1.6 | Partial | Stream Management | foreign:xmpp/stream-management | Automatically responds to acks but does not support requesting acks yet. | | XEP-0199 | 2.0 | Partial | XMPP Ping | ping | | | XEP-0200 | 0.2 | Discuss | Stanza Encryption | | | | XEP-0202 | 2.0 | Partial | Entity Time | entity-time | | | XEP-0203 | 2.0 | Discuss | Delayed Delivery | | | | XEP-0209 | 0.1 | Discuss | Metacontacts | | | | XEP-0221 | 1.0 | Discuss | Data Forms Media Element | | | | XEP-0222 | 1.0 | Discuss | Persistent Storage of Public Data via PubSub | | | | XEP-0223 | 1.1 | Discuss | Persistent Storage of Private Data via PubSub | | | | XEP-0224 | 1.0 | Discuss | Attention | | | | XEP-0231 | 1.0 | Discuss | Bits of Binary | | | | XEP-0234 | 0.17.1 | Discuss | Jingle File Transfer | | | | XEP-0237 | 1.2 | Discuss | Roster Versioning | | | | XEP-0245 | 1.0 | Discuss | The /me Command | | | | XEP-0249 | 1.2 | Discuss | Direct MUC Invitations | | | | XEP-0258 | 1.1.1 | Discuss | Security Labels in XMPP | | | | XEP-0260 | 1.0.3 | Discuss | Jingle SOCKS5 Bytestreams Transport Method | | | | XEP-0261 | 1.0 | Discuss | Jingle In-Band Bytestreams Transport Method | | | | XEP-0280 | 0.12.0 | Partial | Message Carbons | message-carbons | Without implementing §6.1 | | XEP-0284 | 0.1.3 | Discuss | Shared XML Editing | | | | XEP-0292 | 0.11 | Discuss | vCard4 Over XMPP | | | | XEP-0297 | 0.3 | Partial | Stanza Forwarding | message-carbons | Supported only for XEP-0313/xep-0280. | | XEP-0300 | 1.0.0 | Discuss | Use of Cryptographic Hash Functions in XMPP | | | | XEP-0306 | 0.2.1 | Discuss | Extensible Status Conditions for Multi-User Chat | | | | XEP-0308 | 1.0 | Discuss | Last Message Correction | | | | XEP-0313 | 0.6.3 | Partial | Message Archive Management | message-archive | Makes message history for users | | XEP-0316 | 0.1 | Discuss | MUC Eventing protocol | | | | XEP-0317 | 0.1 | Discuss | Hats | | | | XEP-0319 | 1.0.2 | Discuss | Last User Interaction in Presence | | | | XEP-0333 | 0.4 | Discuss | Chat Markers | | | | XEP-0334 | 0.3.0 | Discuss | Message Processing Hints | | | | XEP-0352 | 1.0.0 | Discuss | Client State Indication | | | | XEP-0357 | 0.4.1 | Partial | Push Notifications | push | | | XEP-0359 | 0.6.1 | Partial | Unique and Stable Stanza IDs | message-uid | | | XEP-0363 | 1.0.0 | Partial | HTTP File Upload | http-file-upload | | | XEP-0368 | 1.1.0 | Partial | SRV records for XMPP over TLS | foreign:xmpp/resolve | | | XEP-0372 | 0.5.0 | Discuss | References | | | | XEP-0373 | 0.4.0 | Discuss | OpenPGP plugin. | | | | XEP-0377 | 0.3 | Discuss | Spam Reporting | | | | XEP-0380 | 0.3.0 | Discuss | Explicit Message Encryption | | | | XEP-0382 | 0.2.0 | Discuss | Spoiler messages | | | | XEP-0384 | 0.7.0 | Discuss | OMEMO Encryption | | | | XEP-0392 | 0.7.0 | Discuss | Consistent Color Generation | | | | XEP-0393 | 1.1.1 | Discuss | Message Styling | | | | XEP-0398 | 0.2.1 | Discuss | User Avatar to vCard-Based Avatars Conversion | | | | XEP-0411 | 1.0.0 | Discuss | Bookmarks Conversion | | | | XEP-0422 | 0.2.0 | Discuss | Message Fastening | | | | XEP-0424 | 0.3.0 | Discuss | Message Retractions | | | | XEP-0425 | 0.2.1 | Discuss | Message Moderation | | | | XEP-0437 | 0.2.0 | Discuss | Room Activity Indicators | | | | XEP-0441 | 0.2.0 | Discuss | Message Archive Management Preferences | | | | XEP-0453 | 0.1.0 | Discuss | DOAP usage in XMPP | | | | XEP-0453 | 0.1.0 | Discuss | OMEMO Media sharing | | |

plugin overview

| Plugins | Core XEP | Relevant XEPs | Function | Notes | | -------------------- | -------- | ---------------------------- | --------------------------------------------- | ----- | | block | XEP-0191 | | Blocking contact | | | bookmark | XEP-0048 | | Storing Stanzas for later actions | | | entity-time | XEP-0202 | | Message Timestamps | | | http-file-upload | XEP-0363 | | File upload | | | message | RFC 6120 | | Messaging Core | | | message-archive | XEP-0313 | XEP-0004, XEP-0059, XEP-0163 | Message History | | | message-carbons | XEP-0280 | XEP-0297 | Message Multidevice Sync | | | message-state | CUSTOM | XEP-0184 | Custom Message Read | | | message-uuid | XEP-0359 | | Unique | | | muc-sub | Ejabberd | | Chat Room Notifications | | | multi-user-chat | XEP-0045 | XEP-0004 | Chat Rooms | | | ping | XEP-0199 | | Checks connections | | | publish-subscribe | XEP-0060 | XEP-0004, XEP-0163 | Publish und Subscribe between Nodes with IQ | | | push | XEP-0357 | | Inform about message when offline | | | registration | XEP-0077 | | Registration without Admin | | | roster | XEP-0115 | | List of contacts | | | service-discovery | XEP-0030 | XEP-0163 | Check for provided Services (XEP's) by server | | | unread-message-count | CUSTOM | | Count unread messages | |