xmppo / node-stringprep

ICU StringPrep profiles for NodeJS
https://github.com/xmppo/node-stringprep
MIT License
38 stars 24 forks source link

Fails for io.js 3.2.0 #70

Closed iliakan closed 8 years ago

iliakan commented 9 years ago

Tried to install it for the recent io.js - fails.

Modifying nan in package.json to latest didn't help. Providing the log.

~/node-stringprep
iliakan> npm i
npm WARN package.json node-stringprep@0.7.2 No license field.
npm http request GET https://registry.npmjs.org/bindings
npm http request GET https://registry.npmjs.org/debug
npm http request GET https://registry.npmjs.org/nan
npm http request GET https://registry.npmjs.org/grunt-cli
npm http request GET https://registry.npmjs.org/grunt
npm http request GET https://registry.npmjs.org/grunt-contrib-jshint
npm http request GET https://registry.npmjs.org/grunt-mocha-cli
npm http request GET https://registry.npmjs.org/proxyquire
npm http request GET https://registry.npmjs.org/should
npm http 304 https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/grunt-cli
npm http 304 https://registry.npmjs.org/should
npm http 304 https://registry.npmjs.org/proxyquire
npm http 304 https://registry.npmjs.org/grunt-contrib-jshint
npm http 304 https://registry.npmjs.org/grunt
npm http 304 https://registry.npmjs.org/nan
npm http 304 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/grunt-mocha-cli
npm WARN engine grunt-mocha-cli@1.3.0: wanted: {"node":"~0.10.0 || ~0.8.0"} (current: {"node":"3.2.0","npm":"2.13.3"})
npm http request GET https://registry.npmjs.org/ms
npm http request GET https://registry.npmjs.org/nopt
npm http request GET https://registry.npmjs.org/findup-sync
npm http request GET https://registry.npmjs.org/resolve
npm http request GET https://registry.npmjs.org/jshint
npm http request GET https://registry.npmjs.org/coffee-script
npm http request GET https://registry.npmjs.org/colors
npm http request GET https://registry.npmjs.org/mocha
npm http request GET https://registry.npmjs.org/glob
npm http request GET https://registry.npmjs.org/dateformat
npm http request GET https://registry.npmjs.org/hooker
npm http request GET https://registry.npmjs.org/minimatch
npm http request GET https://registry.npmjs.org/eventemitter2
npm http request GET https://registry.npmjs.org/lodash
npm http request GET https://registry.npmjs.org/async
npm http request GET https://registry.npmjs.org/underscore.string
npm http request GET https://registry.npmjs.org/iconv-lite
npm http request GET https://registry.npmjs.org/rimraf
npm http request GET https://registry.npmjs.org/which
npm http request GET https://registry.npmjs.org/exit
npm http request GET https://registry.npmjs.org/js-yaml
npm http request GET https://registry.npmjs.org/getobject
npm http request GET https://registry.npmjs.org/grunt-legacy-util
npm http request GET https://registry.npmjs.org/grunt-legacy-log
npm http 304 https://registry.npmjs.org/ms
npm http 304 https://registry.npmjs.org/findup-sync
npm http 304 https://registry.npmjs.org/nopt
npm http 304 https://registry.npmjs.org/jshint
npm http 304 https://registry.npmjs.org/colors
npm http 304 https://registry.npmjs.org/glob
npm http 304 https://registry.npmjs.org/coffee-script
npm http 304 https://registry.npmjs.org/mocha
npm http 304 https://registry.npmjs.org/async
npm http 304 https://registry.npmjs.org/minimatch
npm http 304 https://registry.npmjs.org/eventemitter2
npm http 304 https://registry.npmjs.org/hooker
npm http 304 https://registry.npmjs.org/dateformat
npm http 304 https://registry.npmjs.org/getobject
npm http 304 https://registry.npmjs.org/iconv-lite
npm http 304 https://registry.npmjs.org/underscore.string
npm http 304 https://registry.npmjs.org/which
npm http 304 https://registry.npmjs.org/grunt-legacy-log
npm http 304 https://registry.npmjs.org/exit
npm http 304 https://registry.npmjs.org/lodash
npm http 304 https://registry.npmjs.org/grunt-legacy-util
npm http 304 https://registry.npmjs.org/js-yaml
npm http 304 https://registry.npmjs.org/rimraf
npm http 304 https://registry.npmjs.org/resolve
npm http request GET https://registry.npmjs.org/abbrev
npm http request GET https://registry.npmjs.org/grunt-legacy-log-utils
npm http 304 https://registry.npmjs.org/abbrev
npm http request GET https://registry.npmjs.org/lru-cache
npm http request GET https://registry.npmjs.org/sigmund
npm http 304 https://registry.npmjs.org/grunt-legacy-log-utils
npm http request GET https://registry.npmjs.org/graceful-fs
npm http request GET https://registry.npmjs.org/inherits
npm http 304 https://registry.npmjs.org/sigmund
npm http 304 https://registry.npmjs.org/lru-cache
npm http 304 https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/inherits
npm http request GET https://registry.npmjs.org/argparse
npm http request GET https://registry.npmjs.org/esprima
npm http 304 https://registry.npmjs.org/esprima
npm http 304 https://registry.npmjs.org/argparse
npm http request GET https://registry.npmjs.org/commander
npm http request GET https://registry.npmjs.org/growl
npm http request GET https://registry.npmjs.org/jade
npm http request GET https://registry.npmjs.org/diff
npm http request GET https://registry.npmjs.org/mkdirp
npm http request GET https://registry.npmjs.org/shelljs
npm http request GET https://registry.npmjs.org/underscore
npm http request GET https://registry.npmjs.org/cli
npm http request GET https://registry.npmjs.org/console-browserify
npm http 304 https://registry.npmjs.org/jade
npm http 304 https://registry.npmjs.org/growl
npm http 304 https://registry.npmjs.org/commander
npm http 304 https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/diff
npm http 304 https://registry.npmjs.org/shelljs
npm http 304 https://registry.npmjs.org/cli
npm http 304 https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/console-browserify
npm http request GET https://registry.npmjs.org/inflight
npm http request GET https://registry.npmjs.org/once
npm http request GET https://registry.npmjs.org/path-is-absolute
npm WARN prefer global grunt-cli@0.1.13 should be installed with -g
npm http 304 https://registry.npmjs.org/once
npm http 304 https://registry.npmjs.org/inflight
npm http 304 https://registry.npmjs.org/path-is-absolute
npm http request GET https://registry.npmjs.org/wrappy
npm http request GET https://registry.npmjs.org/brace-expansion
npm http 304 https://registry.npmjs.org/wrappy
npm http 304 https://registry.npmjs.org/brace-expansion
npm http request GET https://registry.npmjs.org/balanced-match
npm http request GET https://registry.npmjs.org/concat-map
npm http 304 https://registry.npmjs.org/concat-map
npm http 304 https://registry.npmjs.org/balanced-match

> node-stringprep@0.7.2 install /Users/iliakan/node-stringprep
> node-gyp rebuild

  CXX(target) Release/obj.target/node_stringprep/node-stringprep.o
../node-stringprep.cc:22:5: error: use of undeclared identifier 'NanScope'
    NanScope();
    ^
../node-stringprep.cc:23:33: error: use of undeclared identifier 'NanNew'
    Local<FunctionTemplate> t = NanNew<FunctionTemplate>(New);
                                ^
../node-stringprep.cc:23:40: error: 'FunctionTemplate' does not refer to a value
    Local<FunctionTemplate> t = NanNew<FunctionTemplate>(New);
                                       ^
/Users/iliakan/.node-gyp/3.2.0/include/node/v8.h:4108:17: note: declared here
class V8_EXPORT FunctionTemplate : public Template {
                ^
../node-stringprep.cc:24:5: error: use of undeclared identifier 'NanAssignPersistent'
    NanAssignPersistent(stringprep_constructor, t);
    ^
../node-stringprep.cc:26:45: error: cannot initialize a parameter of type 'v8::FunctionCallback' (aka 'void (*)(const FunctionCallbackInfo<v8::Value> &)') with an lvalue of type
      'Nan::NAN_METHOD_RETURN_TYPE (Nan::NAN_METHOD_ARGS_TYPE)': type mismatch at 1st parameter ('const FunctionCallbackInfo<v8::Value> &'
      (aka 'const v8::FunctionCallbackInfo<v8::Value> &') vs 'Nan::NAN_METHOD_ARGS_TYPE' (aka 'const FunctionCallbackInfo<v8::Value> &'))
    NODE_SET_PROTOTYPE_METHOD(t, "prepare", Prepare);
                                            ^~~~~~~
/Users/iliakan/.node-gyp/3.2.0/include/node/node.h:254:60: note: passing argument to parameter 'callback' here
                                      v8::FunctionCallback callback) {
                                                           ^
../node-stringprep.cc:28:17: error: use of undeclared identifier 'NanNew'
    target->Set(NanNew<String>("StringPrep"), t->GetFunction());
                ^
../node-stringprep.cc:28:24: error: 'String' does not refer to a value
    target->Set(NanNew<String>("StringPrep"), t->GetFunction());
                       ^
/Users/iliakan/.node-gyp/3.2.0/include/node/v8.h:2028:17: note: declared here
class V8_EXPORT String : public Name {
                ^
../node-stringprep.cc:46:5: error: use of undeclared identifier 'NanScope'
    NanScope();
    ^
../node-stringprep.cc:48:9: error: use of undeclared identifier 'args'; did you mean 'uv_process_options_s::args'?
    if (args.Length() >= 1 && args[0]->IsString())
        ^~~~
        uv_process_options_s::args
/Users/iliakan/.node-gyp/3.2.0/include/node/uv.h:857:10: note: 'uv_process_options_s::args' declared here
  char** args;
         ^
../node-stringprep.cc:48:9: error: invalid use of member 'args' in static member function
    if (args.Length() >= 1 && args[0]->IsString())
        ^~~~
../node-stringprep.cc:48:31: error: use of undeclared identifier 'args'; did you mean 'uv_process_options_s::args'?
    if (args.Length() >= 1 && args[0]->IsString())
                              ^~~~
                              uv_process_options_s::args
/Users/iliakan/.node-gyp/3.2.0/include/node/uv.h:857:10: note: 'uv_process_options_s::args' declared here
  char** args;
         ^
../node-stringprep.cc:48:31: error: invalid use of member 'args' in static member function
    if (args.Length() >= 1 && args[0]->IsString())
                              ^~~~
../node-stringprep.cc:50:32: error: use of undeclared identifier 'args'; did you mean 'uv_process_options_s::args'?
        String::Utf8Value arg0(args[0]->ToString());
                               ^~~~
                               uv_process_options_s::args
/Users/iliakan/.node-gyp/3.2.0/include/node/uv.h:857:10: note: 'uv_process_options_s::args' declared here
  char** args;
         ^
../node-stringprep.cc:50:32: error: invalid use of member 'args' in static member function
        String::Utf8Value arg0(args[0]->ToString());
                               ^~~~
../node-stringprep.cc:58:13: error: use of undeclared identifier 'NanThrowTypeError'; did you mean 'Nan::ThrowTypeError'?
            NanThrowTypeError("Unknown StringPrep profile");
            ^~~~~~~~~~~~~~~~~
            Nan::ThrowTypeError
../node_modules/nan/nan.h:643:3: note: 'Nan::ThrowTypeError' declared here
  X(TypeError)
  ^
../node_modules/nan/nan.h:627:21: note: expanded from macro 'X'
    NAN_INLINE void Throw ## NAME(const char *msg) {                           \
                    ^
<scratch space>:116:1: note: expanded from here
ThrowTypeError
^
../node-stringprep.cc:59:13: error: use of undeclared identifier 'NanReturnUndefined'
            NanReturnUndefined();
            ^
../node-stringprep.cc:65:24: error: use of undeclared identifier 'args'; did you mean 'arg0'?
            self->Wrap(args.This());
                       ^~~~
                       arg0
../node-stringprep.cc:50:27: note: 'arg0' declared here
        String::Utf8Value arg0(args[0]->ToString());
                          ^
../node-stringprep.cc:65:29: error: no member named 'This' in 'v8::String::Utf8Value'
            self->Wrap(args.This());
                       ~~~~ ^
../node-stringprep.cc:66:28: error: use of undeclared identifier 'args'; did you mean 'arg0'?
            NanReturnValue(args.This());
                           ^~~~
                           arg0
../node-stringprep.cc:50:27: note: 'arg0' declared here
        String::Utf8Value arg0(args[0]->ToString());
                          ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [Release/obj.target/node_stringprep/node-stringprep.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:269:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 14.4.0
gyp ERR! command "/usr/local/bin/iojs" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/iliakan/node-stringprep
gyp ERR! node -v v3.2.0
gyp ERR! node-gyp -v v2.0.2
gyp ERR! not ok

npm ERR! Darwin 14.4.0
npm ERR! argv "/usr/local/bin/iojs" "/usr/local/bin/npm" "i"
npm ERR! node v3.2.0
npm ERR! npm  v2.13.3
npm ERR! code ELIFECYCLE
npm ERR! node-stringprep@0.7.2 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-stringprep@0.7.2 install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the node-stringprep package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls node-stringprep
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/iliakan/node-stringprep/npm-debug.log
iliakan commented 9 years ago

Could you please say a word if that is an easy thing and gets fixed soon, or no? Just to know. Using xmpp-client, can't upgrade.

Thank you.

dapriett commented 9 years ago

Also doesn't work for the new Node.js 4.0.0, which is a merge of io.js and Node.js.

sebs commented 9 years ago

I can report a broken test for node 0.12

Running "mochacli:all" (mochacli) task child_process: customFds option is deprecated, use stdio instead.

1) Should not leak 2) Should convert to ASCII ✓ Should throw on error 3) Should convert unassigned code point ✓ Should error on non-STD3 char 4) Should convert to Unicode 5) Should convert unassigned code point Should use JS fallbacks for StringPrep ✓ Should throw on unknown icu-profile ✓ Should perform a 'nameprep' ✓ Should perform a 'nodeprep' ✓ Should preform a 'resourceprep' ✓ Can't handle other profiles

Can disable fallbacks ✓ Should allow javascript fallbacks to be disabled ✓ Should allow javascript fallbacks to be re-enabled

'isNative' method test 6) Reports true with native ✓ Reports false without native

10 passing (19ms) 6 failing

1) Should not leak:

  actual expected

  ääffin

  at Object.Assertion.equal (/Users/sebs/projects/node-stringprep/node_modules/should/lib/should.js:389:10)
  at Context.<anonymous> (/Users/sebs/projects/node-stringprep/test/leakcheck.js:12:23)
  at Test.Runnable.run (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runnable.js:194:15)
  at Runner.runTest (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:358:10)
  at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:404:12
  at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:284:14)
  at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:293:7
  at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:237:23)
  at Immediate._onImmediate (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:261:5)
  at processImmediate [as _immediateCallback] (timers.js:358:17)

2) Should convert to ASCII:

  actual expected

  xn--iu-t0xi♥u

  at Object.Assertion.equal (/Users/sebs/projects/node-stringprep/node_modules/should/lib/should.js:389:10)
  at Context.<anonymous> (/Users/sebs/projects/node-stringprep/test/toascii.js:10:19)
  at Test.Runnable.run (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runnable.js:194:15)
  at Runner.runTest (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:358:10)
  at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:404:12
  at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:284:14)
  at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:293:7
  at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:237:23)
  at Immediate._onImmediate (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:261:5)
  at processImmediate [as _immediateCallback] (timers.js:358:17)

3) Should convert unassigned code point:

  actual expected

  xn--h28h😃

  at Object.Assertion.equal (/Users/sebs/projects/node-stringprep/node_modules/should/lib/should.js:389:10)
  at Context.<anonymous> (/Users/sebs/projects/node-stringprep/test/toascii.js:26:16)
  at Test.Runnable.run (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runnable.js:194:15)
  at Runner.runTest (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:358:10)
  at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:404:12
  at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:284:14)
  at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:293:7
  at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:237:23)
  at Immediate._onImmediate (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:261:5)
  at processImmediate [as _immediateCallback] (timers.js:358:17)

4) Should convert to Unicode:

  actual expected

  i♥uxn--iu-t0x

  at Object.Assertion.equal (/Users/sebs/projects/node-stringprep/node_modules/should/lib/should.js:389:10)
  at Context.<anonymous> (/Users/sebs/projects/node-stringprep/test/tounicode.js:10:19)
  at Test.Runnable.run (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runnable.js:194:15)
  at Runner.runTest (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:358:10)
  at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:404:12
  at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:284:14)
  at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:293:7
  at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:237:23)
  at Immediate._onImmediate (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:261:5)
  at processImmediate [as _immediateCallback] (timers.js:358:17)

5) Should convert unassigned code point:

  actual expected

  😃xn--h28h

  at Object.Assertion.equal (/Users/sebs/projects/node-stringprep/node_modules/should/lib/should.js:389:10)
  at Context.<anonymous> (/Users/sebs/projects/node-stringprep/test/tounicode.js:19:16)
  at Test.Runnable.run (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runnable.js:194:15)
  at Runner.runTest (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:358:10)
  at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:404:12
  at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:284:14)
  at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:293:7
  at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:237:23)
  at Immediate._onImmediate (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:261:5)
  at processImmediate [as _immediateCallback] (timers.js:358:17)

6) 'isNative' method test Reports true with native: AssertionError: expected false to be true at Object.true (/Users/sebs/projects/node-stringprep/node_modules/should/lib/should.js:312:10) at Context. (/Users/sebs/projects/node-stringprep/test/fallback.js:108:34) at Test.Runnable.run (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runnable.js:211:32) at Runner.runTest (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:358:10) at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:404:12 at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:284:14) at /Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:293:7 at next (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:237:23) at Immediate._onImmediate (/Users/sebs/projects/node-stringprep/node_modules/grunt-mocha-cli/node_modules/mocha/lib/runner.js:261:5) at processImmediate as _immediateCallback

iliakan commented 9 years ago

Same for node.js 4.0+

sonnyp commented 9 years ago

I started https://github.com/node-xmpp/node-stringprep/pull/72 but could use some help

iliakan commented 9 years ago

ugh I'd like to, if that's not developing for nan that I didn't do yet.

jloveric commented 8 years ago

:+1:

seanhagen commented 8 years ago

Also failing for me in node v4.1.1 ( node-gyp v3.0.3 ).

Is there anything I could maybe do to help? This is a required library for the hubot hipchat adapter, and I'd like to set up a bot for my company soon.

sonnyp commented 8 years ago

@seanhagen https://github.com/node-xmpp/node-stringprep/pull/72