<commit_before># node-xmpp

idiomatic XMPP library for [node.js](http://nodejs.org/)


## Motivation

You like [Strophe.js](http://code.stanziq.com/strophe/)? You bought a
copy of
[Professional XMPP Programming with JavaScript and jQuery](http://professionalxmpp.com/)?
You even want to use the same XMPP code for the web and node.js? Then
*you're wrong here:* go to [xmppjs](http://github.com/mwild1/xmppjs).

Objectives of *node-xmpp:*

* Use node.js conventions, especially `EventEmitter`, ie. for write
  buffer control
* Fast parsing, `node-expat` was written with this library in mind
* Support for both XMPP clients and components
* After authentication, leave trivial protocol bits to the user (later
  we could offer helpers for entity capabilities hashing, etc)


## Dependencies

* [node-base64](http://github.com/brainfucker/node-base64)
* [node-expat](http://github.com/astro/node-expat)


## Design

          ┌────────────┐
          │ net.Stream │
          └─────┬──────┘
                │
          ┌─────┴──────┐
          │ Connection │
          └─────┬──────┘
                │
          ┌─────┴──────┐
          │            │
    ┏━━━━━┷━━━━┓ ┏━━━━━┷━━━━━┓
    ┃  Client  ┃ ┃ Component ┃
    ┗━━━━━━━━━━┛ ┗━━━━━━━━━━━┛

That means you can use the TCP events of `net.Stream` with Client and
Component objects.

Desires about the API? Propose them ASAP!


## TODO

* Documentation
* Tests ([what framework?](http://wiki.github.com/ry/node/modules#testing)
* Clean up `Connection.prototype.onStanza()`
* Support `SASL DIGEST-MD5` authentication
* Component support (that's trivial)
<commit_msg>README: TODO update<commit_after># node-xmpp

idiomatic XMPP library for [node.js](http://nodejs.org/)


## Motivation

You like [Strophe.js](http://code.stanziq.com/strophe/)? You bought a
copy of
[Professional XMPP Programming with JavaScript and jQuery](http://professionalxmpp.com/)?
You even want to use the same XMPP code for the web and node.js? Then
*you're wrong here:* go to [xmppjs](http://github.com/mwild1/xmppjs).

Objectives of *node-xmpp:*

* Use node.js conventions, especially `EventEmitter`, ie. for write
  buffer control
* Fast parsing, `node-expat` was written with this library in mind
* Support for both XMPP clients and components
* After authentication, leave trivial protocol bits to the user (later
  we could offer helpers for entity capabilities hashing, etc)


## Dependencies

* [node-base64](http://github.com/brainfucker/node-base64)
* [node-expat](http://github.com/astro/node-expat)


## Design

          ┌────────────┐
          │ net.Stream │
          └─────┬──────┘
                │
          ┌─────┴──────┐
          │ Connection │
          └─────┬──────┘
                │
          ┌─────┴──────┐
          │            │
    ┏━━━━━┷━━━━┓ ┏━━━━━┷━━━━━┓
    ┃  Client  ┃ ┃ Component ┃
    ┗━━━━━━━━━━┛ ┗━━━━━━━━━━━┛

That means you can use the TCP events of `net.Stream` with Client and
Component objects.

Desires about the API? Propose them ASAP!


## TODO

* Documentation
* Tests ([what framework?](http://wiki.github.com/ry/node/modules#testing)
* Support `SASL DIGEST-MD5` authentication
* Component support (that's trivial)

{'fraction_non_alphanumeric': 0.17486681291131306, 'fraction_numerical': 0.003760576621748668, 'mean_word_length': 3.129366106080207, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6764599', 'n_tokens_mistral': 1173, 'n_tokens_neox': 1193, 'n_words': 319}