From d33af742dd828e0fd14eae54c4743f643282fe14 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Thu, 26 Nov 2015 15:19:09 +0100 Subject: [PATCH 01/18] Initial commit. --- packages/xo-server-transport-xmpp/.babelrc | 11 ++++ .../xo-server-transport-xmpp/.editorconfig | 65 +++++++++++++++++++ packages/xo-server-transport-xmpp/.gitignore | 9 +++ packages/xo-server-transport-xmpp/.mocha.js | 5 ++ packages/xo-server-transport-xmpp/.mocha.opts | 1 + packages/xo-server-transport-xmpp/.npmignore | 10 +++ packages/xo-server-transport-xmpp/.travis.yml | 10 +++ packages/xo-server-transport-xmpp/README.md | 52 +++++++++++++++ .../xo-server-transport-xmpp/package.json | 58 +++++++++++++++++ .../xo-server-transport-xmpp/src/index.js | 0 .../src/index.spec.js | 13 ++++ 11 files changed, 234 insertions(+) create mode 100644 packages/xo-server-transport-xmpp/.babelrc create mode 100644 packages/xo-server-transport-xmpp/.editorconfig create mode 100644 packages/xo-server-transport-xmpp/.gitignore create mode 100644 packages/xo-server-transport-xmpp/.mocha.js create mode 100644 packages/xo-server-transport-xmpp/.mocha.opts create mode 100644 packages/xo-server-transport-xmpp/.npmignore create mode 100644 packages/xo-server-transport-xmpp/.travis.yml create mode 100644 packages/xo-server-transport-xmpp/README.md create mode 100644 packages/xo-server-transport-xmpp/package.json create mode 100644 packages/xo-server-transport-xmpp/src/index.js create mode 100644 packages/xo-server-transport-xmpp/src/index.spec.js diff --git a/packages/xo-server-transport-xmpp/.babelrc b/packages/xo-server-transport-xmpp/.babelrc new file mode 100644 index 000000000..bc055f47f --- /dev/null +++ b/packages/xo-server-transport-xmpp/.babelrc @@ -0,0 +1,11 @@ +{ + "comments": false, + "compact": true, + "optional": [ + "es7.asyncFunctions", + "es7.decorators", + "es7.exportExtensions", + "es7.functionBind", + "runtime" + ] +} diff --git a/packages/xo-server-transport-xmpp/.editorconfig b/packages/xo-server-transport-xmpp/.editorconfig new file mode 100644 index 000000000..da21ef4c5 --- /dev/null +++ b/packages/xo-server-transport-xmpp/.editorconfig @@ -0,0 +1,65 @@ +# http://EditorConfig.org +# +# Julien Fontanet's configuration +# https://gist.github.com/julien-f/8096213 + +# Top-most EditorConfig file. +root = true + +# Common config. +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespaces = true + +# CoffeeScript +# +# https://github.com/polarmobile/coffeescript-style-guide/blob/master/README.md +[*.{,lit}coffee] +indent_size = 2 +indent_style = space + +# Markdown +[*.{md,mdwn,mdown,markdown}] +indent_size = 4 +indent_style = space + +# Package.json +# +# This indentation style is the one used by npm. +[/package.json] +indent_size = 2 +indent_style = space + +# Jade +[*.jade] +indent_size = 2 +indent_style = space + +# JavaScript +# +# Two spaces seems to be the standard most common style, at least in +# Node.js (http://nodeguide.com/style.html#tabs-vs-spaces). +[*.js] +indent_size = 2 +indent_style = space + +# Less +[*.less] +indent_size = 2 +indent_style = space + +# Sass +# +# Style used for http://libsass.com +[*.s[ac]ss] +indent_size = 2 +indent_style = space + +# YAML +# +# Only spaces are allowed. +[*.yaml] +indent_size = 2 +indent_style = space diff --git a/packages/xo-server-transport-xmpp/.gitignore b/packages/xo-server-transport-xmpp/.gitignore new file mode 100644 index 000000000..6959be1cf --- /dev/null +++ b/packages/xo-server-transport-xmpp/.gitignore @@ -0,0 +1,9 @@ +/.nyc_output/ +/bower_components/ +/dist/ + +npm-debug.log +npm-debug.log.* + +!node_modules/* +node_modules/*/ diff --git a/packages/xo-server-transport-xmpp/.mocha.js b/packages/xo-server-transport-xmpp/.mocha.js new file mode 100644 index 000000000..e6d84e403 --- /dev/null +++ b/packages/xo-server-transport-xmpp/.mocha.js @@ -0,0 +1,5 @@ +Error.stackTraceLimit = 100 + +try { require('trace') } catch (_) {} +try { require('clarify') } catch (_) {} +try { require('source-map-support/register') } catch (_) {} diff --git a/packages/xo-server-transport-xmpp/.mocha.opts b/packages/xo-server-transport-xmpp/.mocha.opts new file mode 100644 index 000000000..6cfd94898 --- /dev/null +++ b/packages/xo-server-transport-xmpp/.mocha.opts @@ -0,0 +1 @@ +--require ./.mocha.js diff --git a/packages/xo-server-transport-xmpp/.npmignore b/packages/xo-server-transport-xmpp/.npmignore new file mode 100644 index 000000000..c31ee82cb --- /dev/null +++ b/packages/xo-server-transport-xmpp/.npmignore @@ -0,0 +1,10 @@ +/examples/ +example.js +example.js.map +*.example.js +*.example.js.map + +/test/ +/tests/ +*.spec.js +*.spec.js.map diff --git a/packages/xo-server-transport-xmpp/.travis.yml b/packages/xo-server-transport-xmpp/.travis.yml new file mode 100644 index 000000000..502095fce --- /dev/null +++ b/packages/xo-server-transport-xmpp/.travis.yml @@ -0,0 +1,10 @@ +language: node_js +node_js: + - 'stable' + - '4' + - '0.12' + - '0.10' + +# Use containers. +# http://docs.travis-ci.com/user/workers/container-based-infrastructure/ +sudo: false diff --git a/packages/xo-server-transport-xmpp/README.md b/packages/xo-server-transport-xmpp/README.md new file mode 100644 index 000000000..d811985b1 --- /dev/null +++ b/packages/xo-server-transport-xmpp/README.md @@ -0,0 +1,52 @@ +# ${pkg.name} [![Build Status](https://travis-ci.org/${pkg.shortGitHubPath}.png?branch=master)](https://travis-ci.org/${pkg.shortGitHubPath}) + +> ${pkg.description} + +## Install + +Installation of the [npm package](https://npmjs.org/package/${pkg.name}): + +``` +> npm install --save ${pkg.name} +``` + +## Usage + +**TODO** + +## Development + +### Installing dependencies + +``` +> npm install +``` + +### Compilation + +The sources files are watched and automatically recompiled on changes. + +``` +> npm run dev +``` + +### Tests + +``` +> npm run test-dev +``` + +## Contributions + +Contributions are *very* welcomed, either on the documentation or on +the code. + +You may: + +- report any [issue](${pkg.bugs}) + you've encountered; +- fork and create a pull request. + +## License + +${pkg.license} © [${pkg.author.name}](${pkg.author.url}) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json new file mode 100644 index 000000000..eb39f6590 --- /dev/null +++ b/packages/xo-server-transport-xmpp/package.json @@ -0,0 +1,58 @@ +{ + "private": true, + "name": "", + "version": "0.0.0", + "license": "ISC", + "description": "", + "keywords": [], + "homepage": "", + "bugs": "", + "repository": { + "type": "git", + "url": "" + }, + "author": { + "name": "Julien Fontanet", + "email": "julien.fontanet@isonoe.net" + }, + "preferGlobal": false, + "main": "dist/", + "bin": {}, + "files": [ + "dist/" + ], + "engines": { + "node": ">=0.12" + }, + "dependencies": { + "babel-runtime": "^5.8.34" + }, + "devDependencies": { + "babel": "^5.8.34", + "babel-eslint": "^4.1.6", + "clarify": "^1.0.5", + "dependency-check": "^2.5.1", + "mocha": "^2.3.4", + "must": "^0.13.1", + "nyc": "^3.2.2", + "source-map-support": "^0.3.3", + "standard": "^5.4.1", + "trace": "^2.0.1" + }, + "scripts": { + "build": "babel --source-maps --out-dir=dist/ src/", + "dev": "babel --watch --source-maps --out-dir=dist/ src/", + "dev-test": "mocha --opts .mocha.opts --watch --reporter=min \"dist/**/*.spec.js\"", + "lint": "standard", + "depcheck": "dependency-check ./package.json", + "posttest": "npm run lint && npm run depcheck", + "prepublish": "npm run build", + "test": "nyc mocha --opts .mocha.opts \"dist/**/*.spec.js\"" + }, + "standard": { + "ignore": [ + "dist/**" + ], + "parser": "babel-eslint" + } +} diff --git a/packages/xo-server-transport-xmpp/src/index.js b/packages/xo-server-transport-xmpp/src/index.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/xo-server-transport-xmpp/src/index.spec.js b/packages/xo-server-transport-xmpp/src/index.spec.js new file mode 100644 index 000000000..6e9c776d2 --- /dev/null +++ b/packages/xo-server-transport-xmpp/src/index.spec.js @@ -0,0 +1,13 @@ +/* eslint-env mocha */ + +import expect from 'must' + +// =================================================================== + +import myLib from './' + +// =================================================================== + +describe('myLib', () => { + // TODO +}) From f88c0b9b674f296b61d34ee85e82fdc598e7e571 Mon Sep 17 00:00:00 2001 From: wescoeur Date: Fri, 27 Nov 2015 14:51:54 +0100 Subject: [PATCH 02/18] Init --- .../xo-server-transport-xmpp/package.json | 2 +- .../xo-server-transport-xmpp/src/index.js | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index eb39f6590..f9392672c 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -1,6 +1,6 @@ { "private": true, - "name": "", + "name": "xo-server-transport-xmpp", "version": "0.0.0", "license": "ISC", "description": "", diff --git a/packages/xo-server-transport-xmpp/src/index.js b/packages/xo-server-transport-xmpp/src/index.js index e69de29bb..602b1ee6a 100644 --- a/packages/xo-server-transport-xmpp/src/index.js +++ b/packages/xo-server-transport-xmpp/src/index.js @@ -0,0 +1,21 @@ +class TransportXmppPlugin { + constructor (xo) { + + } + + configure (conf) { + + } + + load () { + + } + + unload () { + + } +} + +// =================================================================== + +export default ({ xo }) => new TransportXmppPlugin(xo) From 74a31f3301df7789edc2675f02ede1ec3e570dc1 Mon Sep 17 00:00:00 2001 From: wescoeur Date: Fri, 27 Nov 2015 16:47:16 +0100 Subject: [PATCH 03/18] Add schema --- .../xo-server-transport-xmpp/src/index.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/packages/xo-server-transport-xmpp/src/index.js b/packages/xo-server-transport-xmpp/src/index.js index 602b1ee6a..114cc8280 100644 --- a/packages/xo-server-transport-xmpp/src/index.js +++ b/packages/xo-server-transport-xmpp/src/index.js @@ -1,3 +1,55 @@ +export const configurationSchema = { + type: 'object', + + properties: { + transport: { + type: 'object', + + properties: { + host: { + type: 'string', + description: 'host where the XMPP server is located' + }, + port: { + type: 'number', + description: 'port of the XMPP server (default to 5222)' + }, + user: { + type: 'string', + description: 'name to use to authenticate' + }, + pass: { + type: 'string', + description: 'password to use to authenticate' + } + }, + + additionalProperties: false, + required: ['user', 'pass'] + }, + + accountOptions: { + type: 'object', + + properties: { + register: { + type: 'boolean', + description: 'create a new account if necessary', + default: true + } + }, + + additionalProperties: false, + required: ['register'] + } + }, + + additionalProperties: false, + required: ['transport', 'accountOptions'] +} + +// =================================================================== + class TransportXmppPlugin { constructor (xo) { From f2669825604a1bd00c4fce68c8167d60276968f6 Mon Sep 17 00:00:00 2001 From: wescoeur Date: Wed, 2 Dec 2015 10:46:24 +0100 Subject: [PATCH 04/18] Use node-xmpp-client for the transport protocol --- .../xo-server-transport-xmpp/package.json | 3 +- .../xo-server-transport-xmpp/src/index.js | 49 +++++++++++-------- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index f9392672c..4e93083db 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -25,7 +25,8 @@ "node": ">=0.12" }, "dependencies": { - "babel-runtime": "^5.8.34" + "babel-runtime": "^5.8.34", + "node-xmpp-client": "^3.0.0" }, "devDependencies": { "babel": "^5.8.34", diff --git a/packages/xo-server-transport-xmpp/src/index.js b/packages/xo-server-transport-xmpp/src/index.js index 114cc8280..55c20d798 100644 --- a/packages/xo-server-transport-xmpp/src/index.js +++ b/packages/xo-server-transport-xmpp/src/index.js @@ -1,3 +1,7 @@ +import XmppClient from 'node-xmpp-client' + +// =================================================================== + export const configurationSchema = { type: 'object', @@ -11,27 +15,18 @@ export const configurationSchema = { description: 'host where the XMPP server is located' }, port: { - type: 'number', - description: 'port of the XMPP server (default to 5222)' + type: 'integer', + description: 'port of the XMPP server (default to 5222)', + default: 5222 }, - user: { + jid: { type: 'string', - description: 'name to use to authenticate' + description: 'Xmpp address to use to authenticate' }, - pass: { + password: { type: 'string', description: 'password to use to authenticate' - } - }, - - additionalProperties: false, - required: ['user', 'pass'] - }, - - accountOptions: { - type: 'object', - - properties: { + }, register: { type: 'boolean', description: 'create a new account if necessary', @@ -40,31 +35,45 @@ export const configurationSchema = { }, additionalProperties: false, - required: ['register'] + required: ['jid', 'password', 'register'] } }, additionalProperties: false, - required: ['transport', 'accountOptions'] + required: ['transport'] } // =================================================================== class TransportXmppPlugin { constructor (xo) { + this._set = ::xo.defineProperty + this._unset = null + // Defined in configure(). + this._client = null } - configure (conf) { + configure ({ transport: conf }) { + conf.reconnect = true + this._client = new XmppClient(conf) + this._client.on('error', () => {}) } load () { - + this._unset = this._set('sendToXmppClient', this._sendToXmppClient) } unload () { + this._client.end() + this._unset() + } + async _sendToXmppClient ({to, message}) { + const stanza = new XmppClient.Stanza('message', { to: to, type: 'chat' }) + .c('body').t(message) + this._client.send(stanza) } } From 2471ad42151f795a821f0df70c9b74ca41198f8c Mon Sep 17 00:00:00 2001 From: wescoeur Date: Wed, 2 Dec 2015 14:33:50 +0100 Subject: [PATCH 05/18] Plugin works with few options --- packages/xo-server-transport-xmpp/package.json | 1 + packages/xo-server-transport-xmpp/src/index.js | 18 ++++++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index 4e93083db..59297bedb 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -26,6 +26,7 @@ }, "dependencies": { "babel-runtime": "^5.8.34", + "event-to-promise": "^0.6.0", "node-xmpp-client": "^3.0.0" }, "devDependencies": { diff --git a/packages/xo-server-transport-xmpp/src/index.js b/packages/xo-server-transport-xmpp/src/index.js index 55c20d798..29a2b4fc4 100644 --- a/packages/xo-server-transport-xmpp/src/index.js +++ b/packages/xo-server-transport-xmpp/src/index.js @@ -1,3 +1,4 @@ +import eventToPromise from 'event-to-promise' import XmppClient from 'node-xmpp-client' // =================================================================== @@ -21,21 +22,17 @@ export const configurationSchema = { }, jid: { type: 'string', + title: 'user', description: 'Xmpp address to use to authenticate' }, password: { type: 'string', description: 'password to use to authenticate' - }, - register: { - type: 'boolean', - description: 'create a new account if necessary', - default: true } }, additionalProperties: false, - required: ['jid', 'password', 'register'] + required: ['jid', 'password'] } }, @@ -54,11 +51,13 @@ class TransportXmppPlugin { this._client = null } - configure ({ transport: conf }) { + async configure ({ transport: conf }) { conf.reconnect = true this._client = new XmppClient(conf) - this._client.on('error', () => {}) + + return eventToPromise(this._client.connection.socket, 'data') + .then(() => eventToPromise(this._client, 'online')) } load () { @@ -66,11 +65,10 @@ class TransportXmppPlugin { } unload () { - this._client.end() this._unset() } - async _sendToXmppClient ({to, message}) { + _sendToXmppClient ({to, message}) { const stanza = new XmppClient.Stanza('message', { to: to, type: 'chat' }) .c('body').t(message) this._client.send(stanza) From 9983407c8b1280cdd0d2f4b4c1941a5d5bbdac36 Mon Sep 17 00:00:00 2001 From: wescoeur Date: Wed, 2 Dec 2015 15:00:38 +0100 Subject: [PATCH 06/18] Make the client in load. --- .../xo-server-transport-xmpp/src/index.js | 68 +++++++++---------- 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/packages/xo-server-transport-xmpp/src/index.js b/packages/xo-server-transport-xmpp/src/index.js index 29a2b4fc4..79599131b 100644 --- a/packages/xo-server-transport-xmpp/src/index.js +++ b/packages/xo-server-transport-xmpp/src/index.js @@ -7,65 +7,63 @@ export const configurationSchema = { type: 'object', properties: { - transport: { - type: 'object', - - properties: { - host: { - type: 'string', - description: 'host where the XMPP server is located' - }, - port: { - type: 'integer', - description: 'port of the XMPP server (default to 5222)', - default: 5222 - }, - jid: { - type: 'string', - title: 'user', - description: 'Xmpp address to use to authenticate' - }, - password: { - type: 'string', - description: 'password to use to authenticate' - } - }, - - additionalProperties: false, - required: ['jid', 'password'] + host: { + type: 'string', + description: 'host where the XMPP server is located' + }, + port: { + type: 'integer', + description: 'port of the XMPP server (default to 5222)', + default: 5222 + }, + jid: { + type: 'string', + title: 'user', + description: 'Xmpp address to use to authenticate' + }, + password: { + type: 'string', + description: 'password to use to authenticate' } }, additionalProperties: false, - required: ['transport'] + required: ['jid', 'password'] } // =================================================================== class TransportXmppPlugin { constructor (xo) { + this._sendToXmppClient = ::this._sendToXmppClient this._set = ::xo.defineProperty this._unset = null // Defined in configure(). + this._conf = null + + // Defined in load(). this._client = null } - async configure ({ transport: conf }) { - conf.reconnect = true - this._client = new XmppClient(conf) - this._client.on('error', () => {}) - - return eventToPromise(this._client.connection.socket, 'data') - .then(() => eventToPromise(this._client, 'online')) + configure (conf) { + this._conf = conf + this._conf.reconnect = true } - load () { + async load () { + this._client = new XmppClient(this._conf) + this._client.on('error', () => {}) + + await eventToPromise(this._client.connection.socket, 'data') + await eventToPromise(this._client, 'online') + this._unset = this._set('sendToXmppClient', this._sendToXmppClient) } unload () { this._unset() + this._client.end() } _sendToXmppClient ({to, message}) { From 8d8bf43b469b470f1d467fb2eab521887b67d8a3 Mon Sep 17 00:00:00 2001 From: wescoeur Date: Wed, 2 Dec 2015 15:27:51 +0100 Subject: [PATCH 07/18] to parameter is now an array of xmpp address --- packages/xo-server-transport-xmpp/src/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/xo-server-transport-xmpp/src/index.js b/packages/xo-server-transport-xmpp/src/index.js index 79599131b..05cf09f8b 100644 --- a/packages/xo-server-transport-xmpp/src/index.js +++ b/packages/xo-server-transport-xmpp/src/index.js @@ -67,9 +67,11 @@ class TransportXmppPlugin { } _sendToXmppClient ({to, message}) { - const stanza = new XmppClient.Stanza('message', { to: to, type: 'chat' }) - .c('body').t(message) - this._client.send(stanza) + for (const receiver of to) { + const stanza = new XmppClient.Stanza('message', { to: receiver, type: 'chat' }) + .c('body').t(message) + this._client.send(stanza) + } } } From 0aa5e7ba6390f3577e93112a8cac9d1104d75155 Mon Sep 17 00:00:00 2001 From: wescoeur Date: Wed, 2 Dec 2015 15:39:47 +0100 Subject: [PATCH 08/18] Use {...conf} instead of conf (Frozen object) --- packages/xo-server-transport-xmpp/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xo-server-transport-xmpp/src/index.js b/packages/xo-server-transport-xmpp/src/index.js index 05cf09f8b..6cc8f32e3 100644 --- a/packages/xo-server-transport-xmpp/src/index.js +++ b/packages/xo-server-transport-xmpp/src/index.js @@ -46,7 +46,7 @@ class TransportXmppPlugin { this._client = null } - configure (conf) { + configure ({...conf}) { this._conf = conf this._conf.reconnect = true } From 3821ee3dcdb57169ffc85fd48970a9d923822bb0 Mon Sep 17 00:00:00 2001 From: wescoeur Date: Thu, 3 Dec 2015 16:11:58 +0100 Subject: [PATCH 09/18] Update package.json description. --- packages/xo-server-transport-xmpp/package.json | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index 59297bedb..a3a86ef34 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -2,14 +2,19 @@ "private": true, "name": "xo-server-transport-xmpp", "version": "0.0.0", - "license": "ISC", - "description": "", - "keywords": [], - "homepage": "", - "bugs": "", + "license": "AGPL-3.0", + "description": "Transport Xmpp plugin for XO-Server", + "keywords": [ + "xo-server", + "transport", + "message", + "messages" + ], + "homepage": "https://github.com/vatesfr/xo-server-transport-xmpp", + "bugs": "https://github.com/vatesfr/xo-server-transport-xmpp/issues", "repository": { "type": "git", - "url": "" + "url": "https://github.com/vatesfr/xo-server-transport-xmpp" }, "author": { "name": "Julien Fontanet", From 06b6061518c2224a4a27e9ba37eab9b12aa510ff Mon Sep 17 00:00:00 2001 From: ABHAMON Ronan Date: Thu, 3 Dec 2015 16:19:49 +0100 Subject: [PATCH 10/18] Update README.md --- packages/xo-server-transport-xmpp/README.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/xo-server-transport-xmpp/README.md b/packages/xo-server-transport-xmpp/README.md index d811985b1..de7ba903f 100644 --- a/packages/xo-server-transport-xmpp/README.md +++ b/packages/xo-server-transport-xmpp/README.md @@ -1,18 +1,24 @@ -# ${pkg.name} [![Build Status](https://travis-ci.org/${pkg.shortGitHubPath}.png?branch=master)](https://travis-ci.org/${pkg.shortGitHubPath}) +# xo-server-transport-xmpp [![Build Status](https://travis-ci.org/vatesfr/xo-server-transport-xmpp.png?branch=master)](https://travis-ci.org/vatesfr/xo-server-transport-xmpp) -> ${pkg.description} +XO-Server plugin which sends XMPP messages. ## Install -Installation of the [npm package](https://npmjs.org/package/${pkg.name}): +Go inside your `xo-server` folder and install it: ``` -> npm install --save ${pkg.name} +> npm install xo-server-transport-xmpp ``` ## Usage -**TODO** +Edit your `xo-server` configuration and add the plugin name in the `plugins` section. + +```yaml +plugins: + + xo-server-transport-xmpp: +``` ## Development @@ -43,10 +49,10 @@ the code. You may: -- report any [issue](${pkg.bugs}) +- report any [issue](https://github.com/vatesfr/xo-server-transport-xmpp/issues) you've encountered; - fork and create a pull request. ## License -${pkg.license} © [${pkg.author.name}](${pkg.author.url}) +AGPL3 © [Vates SAS](http://vates.fr) From 7c04a455b44e8f3f741f95eb2ca9c99741061d37 Mon Sep 17 00:00:00 2001 From: wescoeur Date: Thu, 3 Dec 2015 16:22:16 +0100 Subject: [PATCH 11/18] 0.1.0 --- packages/xo-server-transport-xmpp/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index a3a86ef34..d68ea87ab 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "xo-server-transport-xmpp", - "version": "0.0.0", + "version": "0.1.0", "license": "AGPL-3.0", "description": "Transport Xmpp plugin for XO-Server", "keywords": [ From 4c165bd620832fc1f3ebf4c28dd42054e6800191 Mon Sep 17 00:00:00 2001 From: wescoeur Date: Thu, 3 Dec 2015 16:24:05 +0100 Subject: [PATCH 12/18] Package is not private. --- packages/xo-server-transport-xmpp/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index d68ea87ab..06d4ffdea 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -1,5 +1,4 @@ { - "private": true, "name": "xo-server-transport-xmpp", "version": "0.1.0", "license": "AGPL-3.0", From 7fa1923400cb714b8015821804fcf110655fca41 Mon Sep 17 00:00:00 2001 From: wescoeur Date: Thu, 3 Dec 2015 16:24:14 +0100 Subject: [PATCH 13/18] 0.1.1 --- packages/xo-server-transport-xmpp/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index 06d4ffdea..1dfde6827 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -1,6 +1,6 @@ { "name": "xo-server-transport-xmpp", - "version": "0.1.0", + "version": "0.1.1", "license": "AGPL-3.0", "description": "Transport Xmpp plugin for XO-Server", "keywords": [ From 74fba76b85569ff83e94a5ac1a0cf76c62981906 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Thu, 29 Sep 2016 14:16:47 +0200 Subject: [PATCH 14/18] chore(package): update all dependencies --- packages/xo-server-transport-xmpp/.babelrc | 11 ----- .../xo-server-transport-xmpp/.editorconfig | 2 +- packages/xo-server-transport-xmpp/.gitignore | 6 +-- packages/xo-server-transport-xmpp/.travis.yml | 2 - .../xo-server-transport-xmpp/package.json | 47 +++++++++++++------ .../src/index.spec.js | 8 +++- 6 files changed, 40 insertions(+), 36 deletions(-) delete mode 100644 packages/xo-server-transport-xmpp/.babelrc diff --git a/packages/xo-server-transport-xmpp/.babelrc b/packages/xo-server-transport-xmpp/.babelrc deleted file mode 100644 index bc055f47f..000000000 --- a/packages/xo-server-transport-xmpp/.babelrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "comments": false, - "compact": true, - "optional": [ - "es7.asyncFunctions", - "es7.decorators", - "es7.exportExtensions", - "es7.functionBind", - "runtime" - ] -} diff --git a/packages/xo-server-transport-xmpp/.editorconfig b/packages/xo-server-transport-xmpp/.editorconfig index da21ef4c5..b6db0112a 100644 --- a/packages/xo-server-transport-xmpp/.editorconfig +++ b/packages/xo-server-transport-xmpp/.editorconfig @@ -41,7 +41,7 @@ indent_style = space # # Two spaces seems to be the standard most common style, at least in # Node.js (http://nodeguide.com/style.html#tabs-vs-spaces). -[*.js] +[*.{js,jsx,ts,tsx}] indent_size = 2 indent_style = space diff --git a/packages/xo-server-transport-xmpp/.gitignore b/packages/xo-server-transport-xmpp/.gitignore index 6959be1cf..fa69f37f1 100644 --- a/packages/xo-server-transport-xmpp/.gitignore +++ b/packages/xo-server-transport-xmpp/.gitignore @@ -1,9 +1,5 @@ -/.nyc_output/ -/bower_components/ /dist/ +/node_modules/ npm-debug.log npm-debug.log.* - -!node_modules/* -node_modules/*/ diff --git a/packages/xo-server-transport-xmpp/.travis.yml b/packages/xo-server-transport-xmpp/.travis.yml index 502095fce..fb5d91729 100644 --- a/packages/xo-server-transport-xmpp/.travis.yml +++ b/packages/xo-server-transport-xmpp/.travis.yml @@ -2,8 +2,6 @@ language: node_js node_js: - 'stable' - '4' - - '0.12' - - '0.10' # Use containers. # http://docs.travis-ci.com/user/workers/container-based-infrastructure/ diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index 1dfde6827..d9bdf2951 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -26,39 +26,56 @@ "dist/" ], "engines": { - "node": ">=0.12" + "node": ">=4" }, "dependencies": { - "babel-runtime": "^5.8.34", - "event-to-promise": "^0.6.0", + "babel-runtime": "^6.11.6", + "event-to-promise": "^0.7.0", "node-xmpp-client": "^3.0.0" }, "devDependencies": { - "babel": "^5.8.34", - "babel-eslint": "^4.1.6", - "clarify": "^1.0.5", + "babel-cli": "^6.16.0", + "babel-eslint": "^7.0.0", + "babel-plugin-lodash": "^3.2.9", + "babel-preset-es2015": "^6.16.0", + "babel-preset-stage-0": "^6.16.0", + "clarify": "^2.0.0", "dependency-check": "^2.5.1", - "mocha": "^2.3.4", + "ghooks": "^1.3.2", + "mocha": "^3.1.0", "must": "^0.13.1", - "nyc": "^3.2.2", - "source-map-support": "^0.3.3", - "standard": "^5.4.1", + "source-map-support": "^0.4.3", + "standard": "^8.2.0", "trace": "^2.0.1" }, "scripts": { - "build": "babel --source-maps --out-dir=dist/ src/", - "dev": "babel --watch --source-maps --out-dir=dist/ src/", + "build": "NODE_ENV=production babel --source-maps --out-dir=dist/ src/", + "depcheck": "dependency-check ./package.json", + "dev": "NODE_DEV=development babel --watch --source-maps --out-dir=dist/ src/", "dev-test": "mocha --opts .mocha.opts --watch --reporter=min \"dist/**/*.spec.js\"", "lint": "standard", - "depcheck": "dependency-check ./package.json", "posttest": "npm run lint && npm run depcheck", "prepublish": "npm run build", - "test": "nyc mocha --opts .mocha.opts \"dist/**/*.spec.js\"" + "test": "mocha --opts .mocha.opts \"dist/**/*.spec.js\"" + }, + "babel": { + "plugins": [ + "lodash" + ], + "presets": [ + "es2015", + "stage-0" + ] }, "standard": { "ignore": [ - "dist/**" + "dist" ], "parser": "babel-eslint" + }, + "config": { + "ghooks": { + "commit-msg": "npm test" + } } } diff --git a/packages/xo-server-transport-xmpp/src/index.spec.js b/packages/xo-server-transport-xmpp/src/index.spec.js index 6e9c776d2..2319bd7d5 100644 --- a/packages/xo-server-transport-xmpp/src/index.spec.js +++ b/packages/xo-server-transport-xmpp/src/index.spec.js @@ -8,6 +8,10 @@ import myLib from './' // =================================================================== -describe('myLib', () => { - // TODO +describe.skip('myLib', () => { + it('does something', () => { + // TODO: some real tests. + + expect(myLib).to.exists() + }) }) From 878d2d92602f906d59768a0f4f84d0f73edfc67f Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Tue, 11 Oct 2016 10:38:39 +0200 Subject: [PATCH 15/18] fix(package): remove babel-plugin-lodash --- packages/xo-server-transport-xmpp/package.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index d9bdf2951..3a353c777 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -36,7 +36,6 @@ "devDependencies": { "babel-cli": "^6.16.0", "babel-eslint": "^7.0.0", - "babel-plugin-lodash": "^3.2.9", "babel-preset-es2015": "^6.16.0", "babel-preset-stage-0": "^6.16.0", "clarify": "^2.0.0", @@ -59,9 +58,6 @@ "test": "mocha --opts .mocha.opts \"dist/**/*.spec.js\"" }, "babel": { - "plugins": [ - "lodash" - ], "presets": [ "es2015", "stage-0" From cd6a0fa6780bf6e58d8919c4edf7e346cb07ebe7 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Tue, 11 Oct 2016 10:50:32 +0200 Subject: [PATCH 16/18] fix(package): use babel-plugin-transform-runtime --- packages/xo-server-transport-xmpp/package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index 3a353c777..83502b37a 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -36,6 +36,7 @@ "devDependencies": { "babel-cli": "^6.16.0", "babel-eslint": "^7.0.0", + "babel-plugin-transform-runtime": "^6.15.0", "babel-preset-es2015": "^6.16.0", "babel-preset-stage-0": "^6.16.0", "clarify": "^2.0.0", @@ -58,6 +59,9 @@ "test": "mocha --opts .mocha.opts \"dist/**/*.spec.js\"" }, "babel": { + "plugins": [ + "transform-runtime" + ], "presets": [ "es2015", "stage-0" From f5fb066975ea07df3848015bcff64b223364c42c Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Tue, 11 Oct 2016 10:51:21 +0200 Subject: [PATCH 17/18] =?UTF-8?q?chore(package):=20babel-preset-es2015=20?= =?UTF-8?q?=E2=86=92=20babel-preset-latest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/xo-server-transport-xmpp/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index 83502b37a..409e9c82b 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -37,7 +37,7 @@ "babel-cli": "^6.16.0", "babel-eslint": "^7.0.0", "babel-plugin-transform-runtime": "^6.15.0", - "babel-preset-es2015": "^6.16.0", + "babel-preset-latest": "^6.16.0", "babel-preset-stage-0": "^6.16.0", "clarify": "^2.0.0", "dependency-check": "^2.5.1", @@ -63,7 +63,7 @@ "transform-runtime" ], "presets": [ - "es2015", + "latest", "stage-0" ] }, From 51def6535f46d061c5404191dc44df63afe47ba3 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Fri, 28 Oct 2016 12:04:41 +0200 Subject: [PATCH 18/18] chore(package): various updates --- packages/xo-server-transport-xmpp/.gitignore | 2 ++ packages/xo-server-transport-xmpp/.mocha.js | 5 --- packages/xo-server-transport-xmpp/.mocha.opts | 1 - packages/xo-server-transport-xmpp/.travis.yml | 1 + packages/xo-server-transport-xmpp/README.md | 32 +++++++------------ .../xo-server-transport-xmpp/package.json | 29 +++++++++-------- .../xo-server-transport-xmpp/src/index.js | 17 ++++++---- .../src/index.spec.js | 17 ---------- 8 files changed, 41 insertions(+), 63 deletions(-) delete mode 100644 packages/xo-server-transport-xmpp/.mocha.js delete mode 100644 packages/xo-server-transport-xmpp/.mocha.opts delete mode 100644 packages/xo-server-transport-xmpp/src/index.spec.js diff --git a/packages/xo-server-transport-xmpp/.gitignore b/packages/xo-server-transport-xmpp/.gitignore index fa69f37f1..827e4e420 100644 --- a/packages/xo-server-transport-xmpp/.gitignore +++ b/packages/xo-server-transport-xmpp/.gitignore @@ -3,3 +3,5 @@ npm-debug.log npm-debug.log.* +pnpm-debug.log +pnpm-debug.log.* diff --git a/packages/xo-server-transport-xmpp/.mocha.js b/packages/xo-server-transport-xmpp/.mocha.js deleted file mode 100644 index e6d84e403..000000000 --- a/packages/xo-server-transport-xmpp/.mocha.js +++ /dev/null @@ -1,5 +0,0 @@ -Error.stackTraceLimit = 100 - -try { require('trace') } catch (_) {} -try { require('clarify') } catch (_) {} -try { require('source-map-support/register') } catch (_) {} diff --git a/packages/xo-server-transport-xmpp/.mocha.opts b/packages/xo-server-transport-xmpp/.mocha.opts deleted file mode 100644 index 6cfd94898..000000000 --- a/packages/xo-server-transport-xmpp/.mocha.opts +++ /dev/null @@ -1 +0,0 @@ ---require ./.mocha.js diff --git a/packages/xo-server-transport-xmpp/.travis.yml b/packages/xo-server-transport-xmpp/.travis.yml index fb5d91729..ae52e87e6 100644 --- a/packages/xo-server-transport-xmpp/.travis.yml +++ b/packages/xo-server-transport-xmpp/.travis.yml @@ -1,6 +1,7 @@ language: node_js node_js: - 'stable' + - '6' - '4' # Use containers. diff --git a/packages/xo-server-transport-xmpp/README.md b/packages/xo-server-transport-xmpp/README.md index de7ba903f..a89614fd8 100644 --- a/packages/xo-server-transport-xmpp/README.md +++ b/packages/xo-server-transport-xmpp/README.md @@ -4,42 +4,34 @@ XO-Server plugin which sends XMPP messages. ## Install -Go inside your `xo-server` folder and install it: +Installation of the [npm package](https://npmjs.org/package/xo-server-transport-xmpp): ``` -> npm install xo-server-transport-xmpp +> npm install --global xo-server-transport-xmpp ``` ## Usage -Edit your `xo-server` configuration and add the plugin name in the `plugins` section. - -```yaml -plugins: - - xo-server-transport-xmpp: -``` +Like all other xo-server plugins, it can be configured directly via +the web iterface, see [the plugin documentation](https://xen-orchestra.com/docs/plugins.html). ## Development -### Installing dependencies - ``` +# Install dependencies > npm install -``` -### Compilation +# Run the tests +> npm test -The sources files are watched and automatically recompiled on changes. - -``` +# Continuously compile > npm run dev -``` -### Tests +# Continuously run the tests +> npm run dev-test -``` -> npm run test-dev +# Build for production (automatically called by npm install) +> npm run build ``` ## Contributions diff --git a/packages/xo-server-transport-xmpp/package.json b/packages/xo-server-transport-xmpp/package.json index 409e9c82b..914360781 100644 --- a/packages/xo-server-transport-xmpp/package.json +++ b/packages/xo-server-transport-xmpp/package.json @@ -4,10 +4,13 @@ "license": "AGPL-3.0", "description": "Transport Xmpp plugin for XO-Server", "keywords": [ - "xo-server", + "jabber", + "orchestra", "transport", - "message", - "messages" + "xen", + "xen-orchestra", + "xmpp", + "xo-server" ], "homepage": "https://github.com/vatesfr/xo-server-transport-xmpp", "bugs": "https://github.com/vatesfr/xo-server-transport-xmpp/issues", @@ -39,24 +42,22 @@ "babel-plugin-transform-runtime": "^6.15.0", "babel-preset-latest": "^6.16.0", "babel-preset-stage-0": "^6.16.0", - "clarify": "^2.0.0", + "cross-env": "^3.1.3", "dependency-check": "^2.5.1", "ghooks": "^1.3.2", - "mocha": "^3.1.0", - "must": "^0.13.1", - "source-map-support": "^0.4.3", - "standard": "^8.2.0", - "trace": "^2.0.1" + "rimraf": "^2.5.4", + "standard": "^8.2.0" }, "scripts": { - "build": "NODE_ENV=production babel --source-maps --out-dir=dist/ src/", + "build": "cross-env NODE_ENV=production babel --source-maps --out-dir=dist/ src/", + "clean": "rimraf dist/", "depcheck": "dependency-check ./package.json", - "dev": "NODE_DEV=development babel --watch --source-maps --out-dir=dist/ src/", - "dev-test": "mocha --opts .mocha.opts --watch --reporter=min \"dist/**/*.spec.js\"", + "dev": "cross-env NODE_ENV=development babel --watch --source-maps --out-dir=dist/ src/", "lint": "standard", "posttest": "npm run lint && npm run depcheck", - "prepublish": "npm run build", - "test": "mocha --opts .mocha.opts \"dist/**/*.spec.js\"" + "prebuild": "npm run clean", + "predev": "npm run clean", + "prepublish": "npm run build" }, "babel": { "plugins": [ diff --git a/packages/xo-server-transport-xmpp/src/index.js b/packages/xo-server-transport-xmpp/src/index.js index 6cc8f32e3..06e441d1c 100644 --- a/packages/xo-server-transport-xmpp/src/index.js +++ b/packages/xo-server-transport-xmpp/src/index.js @@ -34,7 +34,7 @@ export const configurationSchema = { // =================================================================== class TransportXmppPlugin { - constructor (xo) { + constructor ({ xo }) { this._sendToXmppClient = ::this._sendToXmppClient this._set = ::xo.defineProperty this._unset = null @@ -46,7 +46,7 @@ class TransportXmppPlugin { this._client = null } - configure ({...conf}) { + configure (conf) { this._conf = conf this._conf.reconnect = true } @@ -64,17 +64,22 @@ class TransportXmppPlugin { unload () { this._unset() this._client.end() + + this._unset = this._client = null } _sendToXmppClient ({to, message}) { for (const receiver of to) { - const stanza = new XmppClient.Stanza('message', { to: receiver, type: 'chat' }) - .c('body').t(message) - this._client.send(stanza) + this._client.send( + new XmppClient.Stanza('message', { + to: receiver, + type: 'chat' + }).c('body').t(message) + ) } } } // =================================================================== -export default ({ xo }) => new TransportXmppPlugin(xo) +export default opts => new TransportXmppPlugin(opts) diff --git a/packages/xo-server-transport-xmpp/src/index.spec.js b/packages/xo-server-transport-xmpp/src/index.spec.js deleted file mode 100644 index 2319bd7d5..000000000 --- a/packages/xo-server-transport-xmpp/src/index.spec.js +++ /dev/null @@ -1,17 +0,0 @@ -/* eslint-env mocha */ - -import expect from 'must' - -// =================================================================== - -import myLib from './' - -// =================================================================== - -describe.skip('myLib', () => { - it('does something', () => { - // TODO: some real tests. - - expect(myLib).to.exists() - }) -})