module.exports = function (registry) { var Properties = { get: function () { var results = {}; var props = jxt.find(this.xml, NS, 'Property'); for (var i = 0, len = props.length; i < len; i++) { var property = props[i]; var type = jxt.getAttribute(property, 'type'); results[type] = property.textContent; } return results; } }; var XRD = registry.define({ name: 'xrd', namespace: NS, element: 'XRD', fields: { subject: jxt.subText(NS, 'Subject'), expires: jxt.dateSub(NS, 'Expires'), aliases: jxt.multiSubText(NS, 'Alias'), properties: Properties } }); var Link = registry.define({ name: '_xrdlink', namespace: NS, element: 'Link', fields: { rel: jxt.attribute('rel'), href: jxt.attribute('href'), type: jxt.attribute('type'), template: jxt.attribute('template'), titles: jxt.subLangText(NS, 'Title', 'default'), properties: Properties } }); registry.extend(XRD, Link, 'links'); return XRD; };
set: function (value) { var force = (value === ''); stanza.setAttribute(this.xml, 'ver', value, force); } } } }); var RosterItem = stanza.define({ name: '_rosterItem', namespace: NS, element: 'item', fields: { jid: jxtutil.jidAttribute('jid', true), name: stanza.attribute('name'), subscription: stanza.attribute('subscription', 'none'), subscriptionRequested: { get: function () { var ask = stanza.getAttribute(this.xml, 'ask'); return ask === 'subscribe'; } }, preApproved: stanza.boolAttribute(NS, 'approved'), groups: stanza.multiSubText(NS, 'group') } }); stanza.extend(Iq, Roster); stanza.extend(Roster, RosterItem, 'items');
"use strict"; var _ = require('underscore'); var stanza = require('jxt'); var util = require('./util'); var Message = require('./message'); exports.DataForm = stanza.define({ name: 'form', namespace: 'jabber:x:data', element: 'x', fields: { title: stanza.subText('jabber:x:data', 'title'), instructions: stanza.multiSubText('jabber:x:data', 'instructions'), type: stanza.attribute('type', 'form') } }); exports.Field = stanza.define({ name: 'field', namespace: 'jabber:x:data', element: 'field', init: function (data) { this._type = data.type || this.type; }, fields: { type: { get: function () { return stanza.getAttribute(this.xml, 'type', 'text-single'); },
"use strict"; var stanza = require('jxt'); var Iq = require('./iq'); var NS = 'vcard-temp'; var VCardTemp = module.exports = stanza.define({ name: 'vCardTemp', namespace: NS, element: 'vCard', fields: { fullName: stanza.subText(NS, 'FN'), birthday: stanza.dateSub(NS, 'BDAY'), nicknames: stanza.multiSubText(NS, 'NICKNAME') } }); var Name = stanza.define({ name: 'name', namespace: NS, element: 'N', fields: { family: stanza.subText(NS, 'FAMILY'), given: stanza.subText(NS, 'GIVEN'), middle: stanza.subText(NS, 'MIDDLE'), prefix: stanza.subText(NS, 'PREFIX'), suffix: stanza.subText(NS, 'SUFFIX') } }); var Photo = stanza.define({