strophe.js
Version:
Strophe.js is an XMPP library for JavaScript
27 lines (25 loc) • 958 B
text/typescript
/**
* XEP-0198 Stream Management
*
* The page-side {@link StanzaView} adapter.
*
* The page counterpart of parse.ts: where the worker builds views from raw
* frame strings, the page builds them from the DOM Elements it already has.
* Page-only: XMLSerializer is a DOM global, so this module must never be
* imported by the shared-connection-worker bundle. Keeping it in its own
* file makes that boundary structural instead of comment-enforced.
*/
import { StanzaView } from './types';
/**
* Build the environment-free {@link StanzaView} consumed by the XEP-0198
* engine from a DOM Element.
* @param el
*/
export function toStanzaView(el: Element): StanzaView {
const attrs: Record<string, string> = {};
for (let i = 0; i < el.attributes.length; i++) {
const attr = el.attributes[i];
attrs[attr.name] = attr.value;
}
return { name: el.tagName, attrs, serialized: new XMLSerializer().serializeToString(el) };
}