UNPKG

@fnlb-project/stanza

Version:

Modern XMPP in the browser, with a JSON API

42 lines (41 loc) 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; const Namespaces_1 = require("../Namespaces"); function default_1(client) { client.discoverBindings = async (server) => { const websocket = new Set(); const discoverHostMeta = client.resolver .getHostMeta(server) .then(xrd => { var _a; for (const link of (_a = xrd.links) !== null && _a !== void 0 ? _a : []) { if (link.href && link.rel === Namespaces_1.NS_ALT_CONNECTIONS_WEBSOCKET) { websocket.add(link.href); } } }) .catch(err => console.error(err)); const discoverDNS = !client.config.allowAlternateDNSDiscovery ? Promise.resolve() : client.resolver .resolveTXT(`_xmppconnect.${server}`) .then(txtRecords => { for (const group of txtRecords) { for (const value of group) { if (value.startsWith('_xmpp-client-websocket=')) { const url = value.substring(value.indexOf('=') + 1); if (url) { websocket.add(url); } } } } }) .catch(err => console.error(err)); await Promise.all([discoverHostMeta, discoverDNS]).catch(err => console.error(err)); return { websocket: [...websocket].filter(url => url.startsWith('wss://')) }; }; }