Package Exports
- @xmpp/jid
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@xmpp/jid) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
JID
XMPP identifiers (JID) for JavaScript
| JID type | local | @ | domain | / | resource | usage |
|---|---|---|---|---|---|---|
| domain | wonderland.net | servers and components | ||||
| bare | alice | @ | wonderland.net | users | ||
| full | alice | @ | wonderland.net | / | rabbithole | user resource (device) |
https://en.wikipedia.org/wiki/XMPP#Decentralization_and_addressing
Install
npm install @xmpp/jidUsage
var JID = require('@xmpp/jid')
/*
* All return an instance of JID.JID, the new operator is optional.
*/
var addr = new JID('alice@wonderland.net/rabbithole') // OK
var addr = JID`${'alice'}@${'wonderland.net'}/${'rabbithole'}` // OK, es6 tagged template string
var addr = new JID('alice', 'wonderland.net', 'rabbithole') // BEST; see section on escaping below
addr instanceof JID.JID // true
// domain JIDs are created passing the domain as the first argument
var addr = JID('wonderland.net')
/*
* local
*/
addr.local = 'alice'
addr.local // alice
// same as
addr.setLocal('alice')
addr.getLocal() // alice
/*
* domain
*/
addr.domain = 'wonderland.net'
addr.domain // wonderland.net
// same as
addr.setDomain('wonderland.net')
addr.getDomain() // wonderland.net
/*
* resource
*/
addr.resource = 'rabbithole'
addr.resource // rabbithole
// same as
addr.setResource('rabbithole')
addr.getResource() // rabbithole
addr.toString() // alice@wonderland.net/rabbithole
addr.bare() // returns a JID without resource
addr.equals(some_jid) // returns true if the two JIDs are equal, false otherwise
// same as
JID.equal(addr, some_jid)
JID.is(addr) // returns true if the passed argument is an instance of JID.JID, false otherwiseEscaping
The XEP-0106 defines a method to escape and unescape characters that aren't allowed in the local part of the JID. This library fully implement it but because @ and / are ones of them and used as JID separators, you should always prefer the following syntax
// GOOD
new JID(local, domain, resource)over
// BAD
new JID(local@domain/resource)for user input.
References
- RFC 7622 XMPP Address Format mostly implemented, l10n WIP
- XEP-0106 JID Escaping implemented