Explorar o código

Experimenting with JXT

JC Brand %!s(int64=5) %!d(string=hai) anos
pai
achega
65c3f7992d

+ 179 - 4
package-lock.json

@@ -2999,6 +2999,14 @@
 				"object.assign": "^4.1.0"
 			}
 		},
+		"babel-runtime": {
+			"version": "5.8.38",
+			"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz",
+			"integrity": "sha1-HAsC62MxL18If/IEUIJ7QlydTBk=",
+			"requires": {
+				"core-js": "^1.0.0"
+			}
+		},
 		"backbone": {
 			"version": "1.4.0",
 			"resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz",
@@ -4446,6 +4454,11 @@
 				}
 			}
 		},
+		"core-js": {
+			"version": "1.2.7",
+			"resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+			"integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
+		},
 		"core-js-compat": {
 			"version": "3.1.4",
 			"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.4.tgz",
@@ -8669,6 +8682,47 @@
 			"integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==",
 			"dev": true
 		},
+		"jxt": {
+			"version": "4.0.2",
+			"resolved": "https://registry.npmjs.org/jxt/-/jxt-4.0.2.tgz",
+			"integrity": "sha512-LkwBAw6GzS6tYZW5fgU4Gsn6D/S4x0iwMYXu+P/vpzkd7m1a9JqZ0AVj4n4eOTzz17PT8JkzPyKLinjzWwM5fw==",
+			"requires": {
+				"ltx": "^2.2.0",
+				"tslib": "^1.9.3"
+			}
+		},
+		"jxt-xmpp": {
+			"version": "3.3.0",
+			"resolved": "https://registry.npmjs.org/jxt-xmpp/-/jxt-xmpp-3.3.0.tgz",
+			"integrity": "sha512-TqvWdscG541iQe2A6eaSPou3MEkgiBpHOOvG9ryLlehHAUM4sHALroX/lDjKwTa1i+4eKUYk5z4Da6v7X/Ai5w==",
+			"requires": {
+				"babel-runtime": "^5.6.15",
+				"lodash.foreach": "^3.0.3",
+				"xmpp-constants": "^2.5.0",
+				"xmpp-jid": "^1.1.1"
+			}
+		},
+		"jxt-xmpp-types": {
+			"version": "github:jcbrand/jxt-xmpp-types#a17568bf133af914ba4d95126393db0d1a695cae",
+			"from": "github:jcbrand/jxt-xmpp-types#a17568bf133af914ba4d95126393db0d1a695cae",
+			"requires": {
+				"jxt": "^3.0.1",
+				"xmpp-constants": "^2.0.0",
+				"xmpp-jid": "^1.0.2"
+			},
+			"dependencies": {
+				"jxt": {
+					"version": "3.1.0",
+					"resolved": "https://registry.npmjs.org/jxt/-/jxt-3.1.0.tgz",
+					"integrity": "sha512-rKWfE6BflsT1pDQCbyyN2pSHmVxZPjPwibzVUwlI3n4iOHgALVc08wDDB3ZuJ/lolTKdDQvWNCaGz3lLW4yoog==",
+					"requires": {
+						"lodash.assign": "^3.0.0",
+						"ltx": "^2.2.0",
+						"uuid": "^3.0.0"
+					}
+				}
+			}
+		},
 		"killable": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
@@ -8840,30 +8894,128 @@
 				}
 			}
 		},
+		"lodash._arrayeach": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz",
+			"integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754="
+		},
+		"lodash._baseassign": {
+			"version": "3.2.0",
+			"resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
+			"integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
+			"requires": {
+				"lodash._basecopy": "^3.0.0",
+				"lodash.keys": "^3.0.0"
+			}
+		},
+		"lodash._basecopy": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
+			"integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY="
+		},
+		"lodash._baseeach": {
+			"version": "3.0.4",
+			"resolved": "https://registry.npmjs.org/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz",
+			"integrity": "sha1-z4cGVyyhROjZ11InyZDamC+TKvM=",
+			"requires": {
+				"lodash.keys": "^3.0.0"
+			}
+		},
+		"lodash._bindcallback": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz",
+			"integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4="
+		},
+		"lodash._createassigner": {
+			"version": "3.1.1",
+			"resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz",
+			"integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=",
+			"requires": {
+				"lodash._bindcallback": "^3.0.0",
+				"lodash._isiterateecall": "^3.0.0",
+				"lodash.restparam": "^3.0.0"
+			}
+		},
+		"lodash._getnative": {
+			"version": "3.9.1",
+			"resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
+			"integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U="
+		},
+		"lodash._isiterateecall": {
+			"version": "3.0.9",
+			"resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
+			"integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw="
+		},
 		"lodash._reinterpolate": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
 			"integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
 			"dev": true
 		},
+		"lodash.assign": {
+			"version": "3.2.0",
+			"resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz",
+			"integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=",
+			"requires": {
+				"lodash._baseassign": "^3.0.0",
+				"lodash._createassigner": "^3.0.0",
+				"lodash.keys": "^3.0.0"
+			}
+		},
 		"lodash.clonedeep": {
 			"version": "4.5.0",
 			"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
 			"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
 			"dev": true
 		},
+		"lodash.foreach": {
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-3.0.3.tgz",
+			"integrity": "sha1-b9fvt5aRrs1n/erCdhyY5wHWw5o=",
+			"requires": {
+				"lodash._arrayeach": "^3.0.0",
+				"lodash._baseeach": "^3.0.0",
+				"lodash._bindcallback": "^3.0.0",
+				"lodash.isarray": "^3.0.0"
+			}
+		},
 		"lodash.get": {
 			"version": "4.4.2",
 			"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
 			"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
 			"dev": true
 		},
+		"lodash.isarguments": {
+			"version": "3.1.0",
+			"resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
+			"integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo="
+		},
+		"lodash.isarray": {
+			"version": "3.0.4",
+			"resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
+			"integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U="
+		},
 		"lodash.ismatch": {
 			"version": "4.4.0",
 			"resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
 			"integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=",
 			"dev": true
 		},
+		"lodash.keys": {
+			"version": "3.1.2",
+			"resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
+			"integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
+			"requires": {
+				"lodash._getnative": "^3.0.0",
+				"lodash.isarguments": "^3.0.0",
+				"lodash.isarray": "^3.0.0"
+			}
+		},
+		"lodash.restparam": {
+			"version": "3.6.1",
+			"resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
+			"integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU="
+		},
 		"lodash.set": {
 			"version": "4.3.2",
 			"resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
@@ -8954,6 +9106,21 @@
 				"yallist": "^2.1.2"
 			}
 		},
+		"ltx": {
+			"version": "2.9.2",
+			"resolved": "https://registry.npmjs.org/ltx/-/ltx-2.9.2.tgz",
+			"integrity": "sha512-llB7HflFhlfsYYT1SAe80elCBO5C20ryLdwPB/A/BZk38hhVeZztDlWQ9uTyvKNPX4aK6sA+JfS1f/mfzp5cxA==",
+			"requires": {
+				"inherits": "^2.0.4"
+			},
+			"dependencies": {
+				"inherits": {
+					"version": "2.0.4",
+					"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+					"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+				}
+			}
+		},
 		"macos-release": {
 			"version": "2.3.0",
 			"resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz",
@@ -17382,8 +17549,7 @@
 		"tslib": {
 			"version": "1.9.3",
 			"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
-			"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
-			"dev": true
+			"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
 		},
 		"tty-browserify": {
 			"version": "0.0.0",
@@ -17833,8 +17999,7 @@
 		"uuid": {
 			"version": "3.3.2",
 			"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
-			"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
-			"dev": true
+			"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
 		},
 		"v8-compile-cache": {
 			"version": "2.0.3",
@@ -18559,6 +18724,16 @@
 			"integrity": "sha512-MjGsXhKG8YjTKrDCXseFo3ClbMGvUD4en29H2Cev1dv4P/chlpw6KdYmlCWDkhosBVKRDjM836+3e3pm1cBNJA==",
 			"dev": true
 		},
+		"xmpp-constants": {
+			"version": "2.5.0",
+			"resolved": "https://registry.npmjs.org/xmpp-constants/-/xmpp-constants-2.5.0.tgz",
+			"integrity": "sha512-PQTwNt6cbpgAbuDl6KFd9jd08EqzfzTm2v7s54Wz6PQPZSp1EG/CqoBMCNoPRIij+su/SpdBBjMf8FDTPfSNbg=="
+		},
+		"xmpp-jid": {
+			"version": "1.3.0",
+			"resolved": "https://registry.npmjs.org/xmpp-jid/-/xmpp-jid-1.3.0.tgz",
+			"integrity": "sha512-4ZtMp2KIc4Ro/6NVgQKLjsWWiKmoXVpwk6CpePgWjziKX2JbO39L0BpZ1d6QKeT9RMDC+ZPDbMFA+J8FYV07zw=="
+		},
 		"xss": {
 			"version": "1.0.6",
 			"resolved": "https://registry.npmjs.org/xss/-/xss-1.0.6.tgz",

+ 1 - 0
spec/muc_messages.js

@@ -25,6 +25,7 @@
             const received_stanza = u.toStanza(`
                 <message to='${_converse.jid}' from='${muc_jid}/mallory' type='groupchat' id='${_converse.connection.getUniqueId()}'>
                     <body>Visit this site to get free Bitcoin!</body>
+                    <stanza-id xmlns='urn:xmpp:sid:0' id='stanza-id-1' by='${muc_jid}'/>
                 </message>
             `);
             await view.model.onMessage(received_stanza);

+ 11 - 2
src/headless/converse-chatboxes.js

@@ -10,7 +10,10 @@ import "./converse-emoji";
 import "./utils/form";
 import { get, isObject, isString, propertyOf } from "lodash";
 import converse from "./converse-core";
+import { createRegistry } from "jxt";
 import filesize from "filesize";
+import jxt_xmpp from "jxt-xmpp";
+import jxt_xmpp_types from "jxt-xmpp-types";
 
 const { $msg, Backbone, Strophe, dayjs, sizzle, utils } = converse.env;
 const u = converse.env.utils;
@@ -29,8 +32,11 @@ converse.plugins.add('converse-chatboxes', {
         /* The initialize function gets called as soon as the plugin is
          * loaded by converse.js's plugin machinery.
          */
-        const { _converse } = this,
-              { __ } = _converse;
+        const { _converse } = this;
+        const { __ } = _converse;
+        const jxt = createRegistry();
+        jxt.use(jxt_xmpp_types);
+        jxt.use(jxt_xmpp);
 
         // Configuration values for this plugin
         // ====================================
@@ -999,6 +1005,9 @@ converse.plugins.add('converse-chatboxes', {
              *  message stanza, if it was contained, otherwise it's the message stanza itself.
              */
             async getMessageAttributesFromStanza (stanza, original_stanza) {
+                debugger
+                const data = jxt.parse(Strophe.serialize(stanza));
+
                 const spoiler = sizzle(`spoiler[xmlns="${Strophe.NS.SPOILER}"]`, original_stanza).pop();
                 const delay = sizzle(`delay[xmlns="${Strophe.NS.DELAY}"]`, original_stanza).pop();
                 const text = this.getMessageBody(stanza) || undefined;

+ 0 - 124
src/headless/package-lock.json

@@ -1,124 +0,0 @@
-{
-	"name": "@converse/headless",
-	"version": "5.0.3",
-	"lockfileVersion": 1,
-	"requires": true,
-	"dependencies": {
-		"backbone": {
-			"version": "1.4.0",
-			"resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz",
-			"integrity": "sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ==",
-			"dev": true,
-			"requires": {
-				"underscore": ">=1.8.3"
-			}
-		},
-		"backbone.browserStorage": {
-			"version": "github:conversejs/backbone.browserStorage#4fcb17861023becb3b25dec7b3238253873c8cd6",
-			"from": "github:conversejs/backbone.browserStorage#4fcb17861023becb3b25dec7b3238253873c8cd6",
-			"dev": true
-		},
-		"es6-promise": {
-			"version": "4.2.8",
-			"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
-			"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
-			"dev": true
-		},
-		"filesize": {
-			"version": "3.6.1",
-			"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
-			"integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
-			"dev": true
-		},
-		"immediate": {
-			"version": "3.0.6",
-			"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
-			"integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=",
-			"dev": true
-		},
-		"jed": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz",
-			"integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=",
-			"dev": true
-		},
-		"lie": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
-			"integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
-			"dev": true,
-			"requires": {
-				"immediate": "~3.0.5"
-			}
-		},
-		"localforage": {
-			"version": "1.7.3",
-			"resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.3.tgz",
-			"integrity": "sha512-1TulyYfc4udS7ECSBT2vwJksWbkwwTX8BzeUIiq8Y07Riy7bDAAnxDaPU/tWyOVmQAcWJIEIFP9lPfBGqVoPgQ==",
-			"dev": true,
-			"requires": {
-				"lie": "3.1.1"
-			}
-		},
-		"lodash": {
-			"version": "4.17.15",
-			"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-			"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
-			"dev": true
-		},
-		"moment": {
-			"version": "2.19.4",
-			"resolved": "https://registry.npmjs.org/moment/-/moment-2.19.4.tgz",
-			"integrity": "sha512-1xFTAknSLfc47DIxHDUbnJWC+UwgWxATmymaxIPQpmMh7LBm7ZbwVEsuushqwL2GYZU0jie4xO+TK44hJPjNSQ==",
-			"dev": true
-		},
-		"pluggable.js": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/pluggable.js/-/pluggable.js-2.0.0.tgz",
-			"integrity": "sha512-FgrSayXWfQQWL+RSDiCAFZbkEsY7hTZCiSuN9Ar/mcHpesxOPfrSzJKp+YbimOt9QFtSd+lR8Uob5tgkdQSOzg==",
-			"dev": true,
-			"requires": {
-				"lodash": "^4.17.4"
-			}
-		},
-		"strophe.js": {
-			"version": "1.3.2",
-			"resolved": "https://registry.npmjs.org/strophe.js/-/strophe.js-1.3.2.tgz",
-			"integrity": "sha512-N6n93B0+0/qRazWUtgunJNE3DTfEpz363i17Uvnqh0lvl9iATnMtSoZtKjqN3reKPtjtBpbBRMWAQJRc688QkQ==",
-			"dev": true
-		},
-		"strophejs-plugin-ping": {
-			"version": "0.0.3",
-			"resolved": "https://registry.npmjs.org/strophejs-plugin-ping/-/strophejs-plugin-ping-0.0.3.tgz",
-			"integrity": "sha512-HS/ArEGKXfu36fihjUSfjqmqOSyppQTJUbrkfEtOBRJmnaP3LsRRe5T2S3dmCdsWHKORaJYc/OHSKfFlxHPdqw==",
-			"dev": true,
-			"requires": {
-				"strophe.js": "^1.2.12"
-			}
-		},
-		"strophejs-plugin-rsm": {
-			"version": "0.0.2",
-			"resolved": "https://registry.npmjs.org/strophejs-plugin-rsm/-/strophejs-plugin-rsm-0.0.2.tgz",
-			"integrity": "sha512-Yn/VpxNz3Gkb790rJkwMyjlwHWCjWA9UxIl5kwGnsr7Ofo1MHztgyQ8XwQF1DGFp3Y4oiXbjZ/whG3S/cIgIew==",
-			"dev": true
-		},
-		"twemoji": {
-			"version": "11.3.0",
-			"resolved": "https://registry.npmjs.org/twemoji/-/twemoji-11.3.0.tgz",
-			"integrity": "sha512-xN/vlR6+gDmfjt6LInAqwGAv3Agwrmzx5TD1jEFwKS19IOGDrX0/3OB8GP1wUYPVIdkaer5hw6qd+52jzvz0Lg==",
-			"dev": true
-		},
-		"underscore": {
-			"version": "1.9.1",
-			"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
-			"integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==",
-			"dev": true
-		},
-		"urijs": {
-			"version": "1.19.1",
-			"resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.1.tgz",
-			"integrity": "sha512-xVrGVi94ueCJNrBSTjWqjvtgvl3cyOTThp2zaMaFNGp3F542TR6sM3f2o8RqZl+AwteClSVmoCyt0ka4RjQOQg==",
-			"dev": true
-		}
-	}
-}

+ 3 - 0
src/headless/package.json

@@ -27,6 +27,9 @@
     "filesize": "^4.1.2",
     "jed": "1.1.1",
     "localforage": "^1.7.3",
+    "jxt": "^4.0.2",
+    "jxt-xmpp": "^3.3.0",
+    "jxt-xmpp-types": "jcbrand/jxt-xmpp-types#a17568bf133af914ba4d95126393db0d1a695cae",
     "lodash": "^4.17.15",
     "pluggable.js": "2.0.1",
     "strophe.js": "1.3.4",