You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ga...@apache.org on 2015/11/30 10:37:24 UTC

[42/51] [abbrv] [partial] couchdb-nmo git commit: Remove node_modules from repo

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/README.md
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/README.md b/node_modules/couchbulkimporter/README.md
deleted file mode 100644
index 58245b1..0000000
--- a/node_modules/couchbulkimporter/README.md
+++ /dev/null
@@ -1,156 +0,0 @@
-# CouchBulkImporter
-
-Takes a stream of docs, e.g. from `bulkbadger` and imports them into
-CouchDB using the /_bulk_docs endpoint
-
-
-**Usage examples:**
-
- - Migrate data from MongoDB to CouchDB
- - Migrate data from Postgres to CouchDB
- - Import data from CSV files into CouchDB
- - Import data from JSON files into CouchDB
-
-
-## Examples
-
-### Use a regular JSON file from the fs as input
-
-**testjson.json:**
-
-```js
-[
-  {"a": "b"},
-  {"b": "c"},
-  {"c": "d"}
-]
-
-```
-
-```js
-var CouchBulkImporter = require('couchbulkimporter')
-var BulkBadger = require('bulkbadger')
-
-var fs = require('fs')
-var JSONStream = require('JSONStream')
-
-
-fs
-  .createReadStream(__dirname + '/testjson.json')
-  .pipe(JSONStream.parse('*'))
-  .pipe(new BulkBadger())
-  .pipe(new CouchBulkImporter({
-    url: 'http://tester:testerpass@localhost:5984/jsonstreamfromfile'
-  }))
-
-
-```
-
-### Use a CSV file as input
-
-
-```js
-var CouchBulkImporter = require('couchbulkimporter')
-var BulkBadger = require('bulkbadger')
-
-
-var parse = require('csv-parse')
-var fs = require('fs')
-var transform = require('stream-transform')
-var JSONStream = require('JSONStream')
-
-var parser = parse({comment: '#', delimiter: ':'})
-var input = fs.createReadStream('/etc/passwd')
-
-
-var transformer = transform(function (record, cb) {
-
-  var username = record[0]
-  var pw = record[1]
-  var uid = record[2]
-  var gid = record[3]
-  var comment = record[4]
-  var home = record[5]
-  var shell = record[6]
-
-  cb(null, {
-    id: username,
-    pw: pw,
-    uid: uid,
-    gid: gid,
-    comment: comment,
-    home: home,
-    shell: shell
-  })
-})
-
-input
-  .pipe(parser)
-  .pipe(transformer)
-  .pipe(new BulkBadger())
-  .pipe(new CouchBulkImporter({
-    url: 'http://tester:testerpass@localhost:5984/etcpasswd'
-  }))
-
-```
-
-### Stream from MongoDB into CouchDB
-
-```js
-var MongoClient = require('mongodb').MongoClient
-var BulkBadger = require('bulkbadger')
-var CouchBulkImporter = require('couchbulkimporter')
-
-var url = 'mongodb://localhost:27017/test'
-// Use connect method to connect to the Server
-MongoClient.connect(url, function (err, db) {
-  console.log('Connected correctly to server')
-  var col = db.collection('restaurants')
-  var stream = col.find({}, {})
-  stream
-    .pipe(new BulkBadger({chunksize: 500}))
-    .pipe(new CouchBulkImporter({
-      url: 'http://tester:testerpass@localhost:5984/hellofrommongo'
-    })).on('error', function (e) {
-      console.log('Oh noes!')
-      console.log(e)
-    })
-
-  stream.on('error', function (e) {
-    console.log('Oh noes!')
-    console.log(e)
-  })
-  stream.on('end', function () {
-    console.log('migration finished')
-    db.close()
-  })
-})
-
-```
-
-### Use Line-Delimited JSON as input
-
-**ldjson.json:**
-
-```js
-{"rocko": "artischocko"}
-{"zett": "zettmeister"}
-{"mr": "mussie"}
-```
-
-```js
-var CouchBulkImporter = require('couchbulkimporter')
-var BulkBadger = require('bulkbadger')
-
-var fs = require('fs')
-var JSONStream = require('JSONStream')
-
-
-fs
-  .createReadStream(__dirname + '/ldjson.json')
-  .pipe(JSONStream.parse())
-  .pipe(new BulkBadger())
-  .pipe(new CouchBulkImporter({
-    url: 'http://tester:testerpass@localhost:5984/ldjsonhellooo'
-  }))
-```

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/examples/csv.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/examples/csv.js b/node_modules/couchbulkimporter/examples/csv.js
deleted file mode 100644
index af52814..0000000
--- a/node_modules/couchbulkimporter/examples/csv.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var CouchBulkImporter = require('../')
-var BulkBadger = require('bulkbadger')
-
-
-var parse = require('csv-parse')
-var fs = require('fs')
-var transform = require('stream-transform')
-
-var parser = parse({comment: '#', delimiter: ':'})
-var input = fs.createReadStream('/etc/passwd')
-
-
-var transformer = transform(function (record, cb) {
-
-  var username = record[0]
-  var pw = record[1]
-  var uid = record[2]
-  var gid = record[3]
-  var comment = record[4]
-  var home = record[5]
-  var shell = record[6]
-
-  cb(null, {
-    id: username,
-    pw: pw,
-    uid: uid,
-    gid: gid,
-    comment: comment,
-    home: home,
-    shell: shell
-  })
-})
-
-input
-  .pipe(parser)
-  .pipe(transformer)
-  .pipe(new BulkBadger())
-  .pipe(new CouchBulkImporter({
-    url: 'http://tester:testerpass@localhost:5984/etcpasswd'
-  }))

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/examples/json.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/examples/json.js b/node_modules/couchbulkimporter/examples/json.js
deleted file mode 100644
index 83e246b..0000000
--- a/node_modules/couchbulkimporter/examples/json.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var CouchBulkImporter = require('../')
-var BulkBadger = require('bulkbadger')
-
-var fs = require('fs')
-var JSONStream = require('JSONStream')
-
-
-fs
-  .createReadStream(__dirname + '/testjson.json')
-  .pipe(JSONStream.parse('*'))
-  .pipe(new BulkBadger())
-  .pipe(new CouchBulkImporter({
-    url: 'http://tester:testerpass@localhost:5984/jsonstreamfromfile'
-  }))

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/examples/ldjson.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/examples/ldjson.js b/node_modules/couchbulkimporter/examples/ldjson.js
deleted file mode 100644
index 49650de..0000000
--- a/node_modules/couchbulkimporter/examples/ldjson.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var CouchBulkImporter = require('../')
-var BulkBadger = require('bulkbadger')
-
-var fs = require('fs')
-var JSONStream = require('JSONStream')
-
-
-fs
-  .createReadStream(__dirname + '/ldjson.json')
-  .pipe(JSONStream.parse())
-  .pipe(new BulkBadger())
-  .pipe(new CouchBulkImporter({
-    url: 'http://tester:testerpass@localhost:5984/ldjsonhellooo'
-  }))

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/examples/ldjson.json
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/examples/ldjson.json b/node_modules/couchbulkimporter/examples/ldjson.json
deleted file mode 100644
index db96ee7..0000000
--- a/node_modules/couchbulkimporter/examples/ldjson.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{"rocko": "artischocko"}
-{"zett": "zettmeister"}
-{"mr": "mussie"}

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/examples/mongo.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/examples/mongo.js b/node_modules/couchbulkimporter/examples/mongo.js
deleted file mode 100644
index 63a9a08..0000000
--- a/node_modules/couchbulkimporter/examples/mongo.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var MongoClient = require('mongodb').MongoClient
-var BulkBadger = require('bulkbadger')
-var CouchBulkImporter = require('../')
-
-var url = 'mongodb://localhost:27017/test'
-// Use connect method to connect to the Server
-MongoClient.connect(url, function (err, db) {
-  console.log('Connected correctly to server')
-  var col = db.collection('restaurants')
-  var stream = col.find({}, {})
-  stream
-    .pipe(new BulkBadger({chunksize: 500}))
-    .pipe(new CouchBulkImporter({
-      url: 'http://tester:testerpass@localhost:5984/hellofrommongo'
-    })).on('error', function (e) {
-      console.log('Oh noes!')
-      console.log(e)
-    })
-
-  stream.on('error', function (e) {
-    console.log('Oh noes!')
-    console.log(e)
-  })
-  stream.on('end', function () {
-    console.log('migration finished')
-    db.close()
-  })
-})

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/examples/testjson.json
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/examples/testjson.json b/node_modules/couchbulkimporter/examples/testjson.json
deleted file mode 100644
index b9c562a..0000000
--- a/node_modules/couchbulkimporter/examples/testjson.json
+++ /dev/null
@@ -1,5 +0,0 @@
-[
-  {"a": "b"},
-  {"b": "c"},
-  {"c": "d"}
-]

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/index.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/index.js b/node_modules/couchbulkimporter/index.js
deleted file mode 100644
index 75ea7ee..0000000
--- a/node_modules/couchbulkimporter/index.js
+++ /dev/null
@@ -1,72 +0,0 @@
-const request = require('request')
-const Writable = require('stream').Writable
-const util = require('util')
-
-module.exports = CouchBulkImporter
-function CouchBulkImporter (options) {
-  if (!options) options = {}
-  if (!options.url) {
-    const msg = [
-      'options.url must be set',
-      'example:',
-      "new CouchBulkImporter({url: 'http://localhost:5984/baseball'})"
-    ].join('\n')
-    throw new Error(msg)
-  }
-
-  Writable.call(this, {
-    decodeStrings: false,
-    objectMode: true
-  })
-
-  this.url = options.url.replace(/\/$/, '')
-  this.targetDatabaseCreated = false
-}
-
-util.inherits(CouchBulkImporter, Writable)
-
-CouchBulkImporter.prototype._write = write
-function write (chunk, enc, done) {
-
-  if (this.targetDatabaseCreated)
-    return importChunk.apply(this)
-
-  createTargetDatabase.apply(this)
-  function createTargetDatabase () {
-    request({
-      json: true,
-      uri: this.url,
-      method: 'PUT',
-      body: {}
-    }, function (er, res, body) {
-      if (er) return done(er)
-      const code = res.statusCode
-      if (code !== 200 && code !== 201 && code !== 412) {
-        const msg = 'CouchDB server answered: \n Status: ' +
-          res.statusCode + '\n Body: ' + JSON.stringify(body)
-        return done(new Error(msg))
-      }
-
-      this.targetDatabaseCreated = true
-      importChunk.apply(this)
-    }.bind(this))
-  }
-
-  function importChunk () {
-    request({
-      json: true,
-      uri: this.url + '/_bulk_docs',
-      method: 'POST',
-      body: chunk
-    }, function (er, res, body) {
-      if (er) return done(er)
-      if (!/^2../.test(res.statusCode)) {
-        const msg = 'CouchDB server answered: \n Status: ' +
-          res.statusCode + '\n Body: ' + JSON.stringify(body)
-        return done(new Error(msg))
-      }
-
-      done()
-    })
-  }
-}

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/.bin/JSONStream
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/.bin/JSONStream b/node_modules/couchbulkimporter/node_modules/.bin/JSONStream
deleted file mode 120000
index 4490737..0000000
--- a/node_modules/couchbulkimporter/node_modules/.bin/JSONStream
+++ /dev/null
@@ -1 +0,0 @@
-../JSONStream/index.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/.npmignore
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/.npmignore b/node_modules/couchbulkimporter/node_modules/JSONStream/.npmignore
deleted file mode 100644
index a9a9d58..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules/*
-node_modules

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/.travis.yml
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/.travis.yml b/node_modules/couchbulkimporter/node_modules/JSONStream/.travis.yml
deleted file mode 100644
index 6e5919d..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/.travis.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-language: node_js
-node_js:
-  - "0.10"

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/LICENSE.APACHE2
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/LICENSE.APACHE2 b/node_modules/couchbulkimporter/node_modules/JSONStream/LICENSE.APACHE2
deleted file mode 100644
index 6366c04..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/LICENSE.APACHE2
+++ /dev/null
@@ -1,15 +0,0 @@
-Apache License, Version 2.0
-
-Copyright (c) 2011 Dominic Tarr
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/LICENSE.MIT
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/LICENSE.MIT b/node_modules/couchbulkimporter/node_modules/JSONStream/LICENSE.MIT
deleted file mode 100644
index 6eafbd7..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/LICENSE.MIT
+++ /dev/null
@@ -1,24 +0,0 @@
-The MIT License
-
-Copyright (c) 2011 Dominic Tarr
-
-Permission is hereby granted, free of charge, 
-to any person obtaining a copy of this software and 
-associated documentation files (the "Software"), to 
-deal in the Software without restriction, including 
-without limitation the rights to use, copy, modify, 
-merge, publish, distribute, sublicense, and/or sell 
-copies of the Software, and to permit persons to whom 
-the Software is furnished to do so, 
-subject to the following conditions:
-
-The above copyright notice and this permission notice 
-shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/examples/all_docs.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/examples/all_docs.js b/node_modules/couchbulkimporter/node_modules/JSONStream/examples/all_docs.js
deleted file mode 100644
index fa87fe5..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/examples/all_docs.js
+++ /dev/null
@@ -1,13 +0,0 @@
-var request = require('request')
-  , JSONStream = require('JSONStream')
-  , es = require('event-stream')
-
-var parser = JSONStream.parse(['rows', true]) //emit parts that match this path (any element of the rows array)
-  , req = request({url: 'http://isaacs.couchone.com/registry/_all_docs'})
-  , logger = es.mapSync(function (data) {  //create a stream that logs to stderr,
-    console.error(data)
-    return data  
-  })
-
-req.pipe(parser)
-parser.pipe(logger)

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/index.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/index.js b/node_modules/couchbulkimporter/node_modules/JSONStream/index.js
deleted file mode 100755
index ec30105..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/index.js
+++ /dev/null
@@ -1,201 +0,0 @@
-#! /usr/bin/env node
-
-var Parser = require('jsonparse')
-  , through = require('through')
-
-/*
-
-  the value of this.stack that creationix's jsonparse has is weird.
-
-  it makes this code ugly, but his problem is way harder that mine,
-  so i'll forgive him.
-
-*/
-
-exports.parse = function (path, map) {
-
-  var parser = new Parser()
-  var stream = through(function (chunk) {
-    if('string' === typeof chunk)
-      chunk = new Buffer(chunk)
-    parser.write(chunk)
-  },
-  function (data) {
-    if(data)
-      stream.write(data)
-    stream.queue(null)
-  })
-
-  if('string' === typeof path)
-    path = path.split('.').map(function (e) {
-      if (e === '*')
-        return true
-      else if (e === '') // '..'.split('.') returns an empty string
-        return {recurse: true}
-      else
-        return e
-    })
-
-
-  var count = 0, _key
-  if(!path || !path.length)
-    path = null
-
-  parser.onValue = function (value) {
-    if (!this.root)
-      stream.root = value
-
-    if(! path) return
-
-    var i = 0 // iterates on path
-    var j  = 0 // iterates on stack
-    while (i < path.length) {
-      var key = path[i]
-      var c
-      j++
-
-      if (key && !key.recurse) {
-        c = (j === this.stack.length) ? this : this.stack[j]
-        if (!c) return
-        if (! check(key, c.key)) return
-        i++
-      } else {
-        i++
-        var nextKey = path[i]
-        if (! nextKey) return
-        while (true) {
-          c = (j === this.stack.length) ? this : this.stack[j]
-          if (!c) return
-          if (check(nextKey, c.key)) {
-            i++;
-            this.stack[j].value = null
-            break
-          }
-          j++
-        }
-      }
-
-    }
-    if (j !== this.stack.length) return
-
-    count ++
-    var actualPath = this.stack.slice(1).map(function(element) { return element.key }).concat([this.key])
-    var data = this.value[this.key]
-    if(null != data)
-      if(null != (data = map ? map(data, actualPath) : data))
-        stream.queue(data)
-    delete this.value[this.key]
-    for(var k in this.stack)
-      this.stack[k].value = null
-  }
-  parser._onToken = parser.onToken;
-
-  parser.onToken = function (token, value) {
-    parser._onToken(token, value);
-    if (this.stack.length === 0) {
-      if (stream.root) {
-        if(!path)
-          stream.queue(stream.root)
-        count = 0;
-        stream.root = null;
-      }
-    }
-  }
-  
-  parser.onError = function (err) {
-    if(err.message.indexOf("at position") > -1)
-      err.message = "Invalid JSON (" + err.message + ")";
-    stream.emit('error', err)
-  }
-
-
-  return stream
-}
-
-function check (x, y) {
-  if ('string' === typeof x)
-    return y == x
-  else if (x && 'function' === typeof x.exec)
-    return x.exec(y)
-  else if ('boolean' === typeof x)
-    return x
-  else if ('function' === typeof x)
-    return x(y)
-  return false
-}
-
-exports.stringify = function (op, sep, cl, indent) {
-  indent = indent || 0
-  if (op === false){
-    op = ''
-    sep = '\n'
-    cl = ''
-  } else if (op == null) {
-
-    op = '[\n'
-    sep = '\n,\n'
-    cl = '\n]\n'
-
-  }
-
-  //else, what ever you like
-
-  var stream
-    , first = true
-    , anyData = false
-  stream = through(function (data) {
-    anyData = true
-    var json = JSON.stringify(data, null, indent)
-    if(first) { first = false ; stream.queue(op + json)}
-    else stream.queue(sep + json)
-  },
-  function (data) {
-    if(!anyData)
-      stream.queue(op)
-    stream.queue(cl)
-    stream.queue(null)
-  })
-
-  return stream
-}
-
-exports.stringifyObject = function (op, sep, cl, indent) {
-  indent = indent || 0
-  if (op === false){
-    op = ''
-    sep = '\n'
-    cl = ''
-  } else if (op == null) {
-
-    op = '{\n'
-    sep = '\n,\n'
-    cl = '\n}\n'
-
-  }
-
-  //else, what ever you like
-
-  var first = true
-    , anyData = false
-  stream = through(function (data) {
-    anyData = true
-    var json = JSON.stringify(data[0]) + ':' + JSON.stringify(data[1], null, indent)
-    if(first) { first = false ; this.queue(op + json)}
-    else this.queue(sep + json)
-  },
-  function (data) {
-    if(!anyData) this.queue(op)
-    this.queue(cl)
-
-    this.queue(null)
-  })
-
-  return stream
-}
-
-if(!module.parent && process.title !== 'browser') {
-  process.stdin
-    .pipe(exports.parse(process.argv[2]))
-    .pipe(exports.stringify('[', ',\n', ']\n', 2))
-    .pipe(process.stdout)
-}

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/.npmignore
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/.npmignore b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/.npmignore
deleted file mode 100644
index b512c09..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/LICENSE
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/LICENSE b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/LICENSE
deleted file mode 100644
index 6dc24be..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-The MIT License
-
-Copyright (c) 2012 Tim Caswell
-
-Permission is hereby granted, free of charge, 
-to any person obtaining a copy of this software and 
-associated documentation files (the "Software"), to 
-deal in the Software without restriction, including 
-without limitation the rights to use, copy, modify, 
-merge, publish, distribute, sublicense, and/or sell 
-copies of the Software, and to permit persons to whom 
-the Software is furnished to do so, 
-subject to the following conditions:
-
-The above copyright notice and this permission notice 
-shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/README.markdown
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/README.markdown b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/README.markdown
deleted file mode 100644
index 0f405d3..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/README.markdown
+++ /dev/null
@@ -1,11 +0,0 @@
-This is a streaming JSON parser.  For a simpler, sax-based version see this gist: https://gist.github.com/1821394
-
-The MIT License (MIT)
-Copyright (c) 2011-2012 Tim Caswell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/bench.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/bench.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/bench.js
deleted file mode 100644
index b36d92f..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/bench.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var fs = require('fs'),
-    Parser = require('./jsonparse');
-
-
-var json = fs.readFileSync("samplejson/basic.json");
-
-
-while (true) {
-  var start = Date.now();
-  for (var i = 0; i < 1000; i++) {
-    JSON.parse(json);
-  }
-  var first = Date.now() - start;
-
-  start = Date.now();
-  var p = new Parser();
-  for (var i = 0; i < 1000; i++) {
-    p.write(json);
-  }
-  var second = Date.now() - start;
-
-
-  console.log("JSON.parse took %s", first);
-  console.log("streaming parser took %s", second);
-  console.log("streaming is %s times slower", second / first);
-}

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/examples/twitterfeed.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/examples/twitterfeed.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/examples/twitterfeed.js
deleted file mode 100644
index 10210d4..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/examples/twitterfeed.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var Parser = require('../jsonparse');
-var Http = require('http');
-require('./colors');
-var p = new Parser();
-var cred = require('./credentials');
-var client = Http.createClient(80, "stream.twitter.com");
-var request = client.request("GET", "/1/statuses/sample.json", {
-  "Host": "stream.twitter.com",
-  "Authorization": (new Buffer(cred.username + ":" + cred.password)).toString("base64")
-});
-request.on('response', function (response) {
-  console.log(response.statusCode);
-  console.dir(response.headers);
-  response.on('data', function (chunk) {
-    p.write(chunk);
-  });
-  response.on('end', function () {
-    console.log("END");
-  });
-});
-request.end();
-var text = "", name = "";
-p.onValue = function (value) {
-  if (this.stack.length === 1 && this.key === 'text') { text = value; }
-  if (this.stack.length === 2 && this.key === 'name' && this.stack[1].key === 'user') { name = value; }
-  if (this.stack.length === 0) {
-    console.log(text.blue + " - " + name.yellow);
-    text = name = "";
-  }
-};

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/jsonparse.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/jsonparse.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/jsonparse.js
deleted file mode 100644
index 70d9bd0..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/jsonparse.js
+++ /dev/null
@@ -1,341 +0,0 @@
-/*global Buffer*/
-// Named constants with unique integer values
-var C = {};
-// Tokens
-var LEFT_BRACE    = C.LEFT_BRACE    = 0x1;
-var RIGHT_BRACE   = C.RIGHT_BRACE   = 0x2;
-var LEFT_BRACKET  = C.LEFT_BRACKET  = 0x3;
-var RIGHT_BRACKET = C.RIGHT_BRACKET = 0x4;
-var COLON         = C.COLON         = 0x5;
-var COMMA         = C.COMMA         = 0x6;
-var TRUE          = C.TRUE          = 0x7;
-var FALSE         = C.FALSE         = 0x8;
-var NULL          = C.NULL          = 0x9;
-var STRING        = C.STRING        = 0xa;
-var NUMBER        = C.NUMBER        = 0xb;
-// Tokenizer States
-var START   = C.START   = 0x11;
-var STOP    = C.STOP    = 0x12;
-var TRUE1   = C.TRUE1   = 0x21;
-var TRUE2   = C.TRUE2   = 0x22;
-var TRUE3   = C.TRUE3   = 0x23;
-var FALSE1  = C.FALSE1  = 0x31;
-var FALSE2  = C.FALSE2  = 0x32;
-var FALSE3  = C.FALSE3  = 0x33;
-var FALSE4  = C.FALSE4  = 0x34;
-var NULL1   = C.NULL1   = 0x41;
-var NULL2   = C.NULL2   = 0x42;
-var NULL3   = C.NULL3   = 0x43;
-var NUMBER1 = C.NUMBER1 = 0x51;
-var NUMBER3 = C.NUMBER3 = 0x53;
-var STRING1 = C.STRING1 = 0x61;
-var STRING2 = C.STRING2 = 0x62;
-var STRING3 = C.STRING3 = 0x63;
-var STRING4 = C.STRING4 = 0x64;
-var STRING5 = C.STRING5 = 0x65;
-var STRING6 = C.STRING6 = 0x66;
-// Parser States
-var VALUE   = C.VALUE   = 0x71;
-var KEY     = C.KEY     = 0x72;
-// Parser Modes
-var OBJECT  = C.OBJECT  = 0x81;
-var ARRAY   = C.ARRAY   = 0x82;
-
-
-function Parser() {
-  this.tState = START;
-  this.value = undefined;
-
-  this.string = undefined; // string data
-  this.unicode = undefined; // unicode escapes
-
-  this.key = undefined;
-  this.mode = undefined;
-  this.stack = [];
-  this.state = VALUE;
-  this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary
-  this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read
-  this.temp_buffs = { "2": new Buffer(2), "3": new Buffer(3), "4": new Buffer(4) }; // for rebuilding chars split before boundary is reached
-
-  // Stream offset
-  this.offset = -1;
-}
-
-// Slow code to string converter (only used when throwing syntax errors)
-Parser.toknam = function (code) {
-  var keys = Object.keys(C);
-  for (var i = 0, l = keys.length; i < l; i++) {
-    var key = keys[i];
-    if (C[key] === code) { return key; }
-  }
-  return code && ("0x" + code.toString(16));
-};
-
-var proto = Parser.prototype;
-proto.onError = function (err) { throw err; };
-proto.charError = function (buffer, i) {
-  this.tState = STOP;
-  this.onError(new Error("Unexpected " + JSON.stringify(String.fromCharCode(buffer[i])) + " at position " + i + " in state " + Parser.toknam(this.tState)));
-};
-proto.write = function (buffer) {
-  if (typeof buffer === "string") buffer = new Buffer(buffer);
-  var n;
-  for (var i = 0, l = buffer.length; i < l; i++) {
-    if (this.tState === START){
-      n = buffer[i];
-      this.offset++;
-      if(n === 0x7b){ this.onToken(LEFT_BRACE, "{"); // {
-      }else if(n === 0x7d){ this.onToken(RIGHT_BRACE, "}"); // }
-      }else if(n === 0x5b){ this.onToken(LEFT_BRACKET, "["); // [
-      }else if(n === 0x5d){ this.onToken(RIGHT_BRACKET, "]"); // ]
-      }else if(n === 0x3a){ this.onToken(COLON, ":");  // :
-      }else if(n === 0x2c){ this.onToken(COMMA, ","); // ,
-      }else if(n === 0x74){ this.tState = TRUE1;  // t
-      }else if(n === 0x66){ this.tState = FALSE1;  // f
-      }else if(n === 0x6e){ this.tState = NULL1; // n
-      }else if(n === 0x22){ this.string = ""; this.tState = STRING1; // "
-      }else if(n === 0x2d){ this.string = "-"; this.tState = NUMBER1; // -
-      }else{
-        if (n >= 0x30 && n < 0x40) { // 1-9
-          this.string = String.fromCharCode(n); this.tState = NUMBER3;
-        } else if (n === 0x20 || n === 0x09 || n === 0x0a || n === 0x0d) {
-          // whitespace
-        } else {
-          return this.charError(buffer, i);
-        }
-      }
-    }else if (this.tState === STRING1){ // After open quote
-      n = buffer[i]; // get current byte from buffer
-      // check for carry over of a multi byte char split between data chunks
-      // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration
-      if (this.bytes_remaining > 0) {
-        for (var j = 0; j < this.bytes_remaining; j++) {
-          this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = buffer[j];
-        }
-        this.string += this.temp_buffs[this.bytes_in_sequence].toString();
-        this.bytes_in_sequence = this.bytes_remaining = 0;
-        i = i + j - 1;
-      } else if (this.bytes_remaining === 0 && n >= 128) { // else if no remainder bytes carried over, parse multi byte (>=128) chars one at a time
-        if (n <= 193 || n > 244) {
-          return this.onError(new Error("Invalid UTF-8 character at position " + i + " in state " + Parser.toknam(this.tState)));
-        }
-        if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2;
-        if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3;
-        if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4;
-        if ((this.bytes_in_sequence + i) > buffer.length) { // if bytes needed to complete char fall outside buffer length, we have a boundary split
-          for (var k = 0; k <= (buffer.length - 1 - i); k++) {
-            this.temp_buffs[this.bytes_in_sequence][k] = buffer[i + k]; // fill temp buffer of correct size with bytes available in this chunk
-          }
-          this.bytes_remaining = (i + this.bytes_in_sequence) - buffer.length;
-          i = buffer.length - 1;
-        } else {
-          this.string += buffer.slice(i, (i + this.bytes_in_sequence)).toString();
-          i = i + this.bytes_in_sequence - 1;
-        }
-      } else if (n === 0x22) { this.tState = START; this.onToken(STRING, this.string); this.offset += Buffer.byteLength(this.string, 'utf8') + 1; this.string = undefined; }
-      else if (n === 0x5c) { this.tState = STRING2; }
-      else if (n >= 0x20) { this.string += String.fromCharCode(n); }
-      else {
-          return this.charError(buffer, i);
-      }
-    }else if (this.tState === STRING2){ // After backslash
-      n = buffer[i];
-      if(n === 0x22){ this.string += "\""; this.tState = STRING1;
-      }else if(n === 0x5c){ this.string += "\\"; this.tState = STRING1; 
-      }else if(n === 0x2f){ this.string += "\/"; this.tState = STRING1; 
-      }else if(n === 0x62){ this.string += "\b"; this.tState = STRING1; 
-      }else if(n === 0x66){ this.string += "\f"; this.tState = STRING1; 
-      }else if(n === 0x6e){ this.string += "\n"; this.tState = STRING1; 
-      }else if(n === 0x72){ this.string += "\r"; this.tState = STRING1; 
-      }else if(n === 0x74){ this.string += "\t"; this.tState = STRING1; 
-      }else if(n === 0x75){ this.unicode = ""; this.tState = STRING3;
-      }else{ 
-        return this.charError(buffer, i); 
-      }
-    }else if (this.tState === STRING3 || this.tState === STRING4 || this.tState === STRING5 || this.tState === STRING6){ // unicode hex codes
-      n = buffer[i];
-      // 0-9 A-F a-f
-      if ((n >= 0x30 && n < 0x40) || (n > 0x40 && n <= 0x46) || (n > 0x60 && n <= 0x66)) {
-        this.unicode += String.fromCharCode(n);
-        if (this.tState++ === STRING6) {
-          this.string += String.fromCharCode(parseInt(this.unicode, 16));
-          this.unicode = undefined;
-          this.tState = STRING1; 
-        }
-      } else {
-        return this.charError(buffer, i);
-      }
-    } else if (this.tState === NUMBER1 || this.tState === NUMBER3) {
-        n = buffer[i];
-
-        switch (n) {
-          case 0x30: // 0
-          case 0x31: // 1
-          case 0x32: // 2
-          case 0x33: // 3
-          case 0x34: // 4
-          case 0x35: // 5
-          case 0x36: // 6
-          case 0x37: // 7
-          case 0x38: // 8
-          case 0x39: // 9
-          case 0x2e: // .
-          case 0x65: // e
-          case 0x45: // E
-          case 0x2b: // +
-          case 0x2d: // -
-            this.string += String.fromCharCode(n);
-            this.tState = NUMBER3;
-            break;
-          default:
-            this.tState = START;
-            var result = Number(this.string);
-
-            if (isNaN(result)){
-              return this.charError(buffer, i);
-            }
-
-            if ((this.string.match(/[0-9]+/) == this.string) && (result.toString() != this.string)) {
-              // Long string of digits which is an ID string and not valid and/or safe JavaScript integer Number
-              this.onToken(STRING, this.string);
-            } else {
-              this.onToken(NUMBER, result);
-            }
-
-            this.offset += this.string.length - 1;
-            this.string = undefined;
-            i--;
-            break;
-        }
-    }else if (this.tState === TRUE1){ // r
-      if (buffer[i] === 0x72) { this.tState = TRUE2; }
-      else { return this.charError(buffer, i); }
-    }else if (this.tState === TRUE2){ // u
-      if (buffer[i] === 0x75) { this.tState = TRUE3; }
-      else { return this.charError(buffer, i); }
-    }else if (this.tState === TRUE3){ // e
-      if (buffer[i] === 0x65) { this.tState = START; this.onToken(TRUE, true); this.offset+= 3; }
-      else { return this.charError(buffer, i); }
-    }else if (this.tState === FALSE1){ // a
-      if (buffer[i] === 0x61) { this.tState = FALSE2; }
-      else { return this.charError(buffer, i); }
-    }else if (this.tState === FALSE2){ // l
-      if (buffer[i] === 0x6c) { this.tState = FALSE3; }
-      else { return this.charError(buffer, i); }
-    }else if (this.tState === FALSE3){ // s
-      if (buffer[i] === 0x73) { this.tState = FALSE4; }
-      else { return this.charError(buffer, i); }
-    }else if (this.tState === FALSE4){ // e
-      if (buffer[i] === 0x65) { this.tState = START; this.onToken(FALSE, false); this.offset+= 4; }
-      else { return this.charError(buffer, i); }
-    }else if (this.tState === NULL1){ // u
-      if (buffer[i] === 0x75) { this.tState = NULL2; }
-      else { return this.charError(buffer, i); }
-    }else if (this.tState === NULL2){ // l
-      if (buffer[i] === 0x6c) { this.tState = NULL3; }
-      else { return this.charError(buffer, i); }
-    }else if (this.tState === NULL3){ // l
-      if (buffer[i] === 0x6c) { this.tState = START; this.onToken(NULL, null); this.offset += 3; }
-      else { return this.charError(buffer, i); }
-    }
-  }
-};
-proto.onToken = function (token, value) {
-  // Override this to get events
-};
-
-proto.parseError = function (token, value) {
-  this.tState = STOP;
-  this.onError(new Error("Unexpected " + Parser.toknam(token) + (value ? ("(" + JSON.stringify(value) + ")") : "") + " in state " + Parser.toknam(this.state)));
-};
-proto.push = function () {
-  this.stack.push({value: this.value, key: this.key, mode: this.mode});
-};
-proto.pop = function () {
-  var value = this.value;
-  var parent = this.stack.pop();
-  this.value = parent.value;
-  this.key = parent.key;
-  this.mode = parent.mode;
-  this.emit(value);
-  if (!this.mode) { this.state = VALUE; }
-};
-proto.emit = function (value) {
-  if (this.mode) { this.state = COMMA; }
-  this.onValue(value);
-};
-proto.onValue = function (value) {
-  // Override me
-};  
-proto.onToken = function (token, value) {
-  if(this.state === VALUE){
-    if(token === STRING || token === NUMBER || token === TRUE || token === FALSE || token === NULL){
-      if (this.value) {
-        this.value[this.key] = value;
-      }
-      this.emit(value);  
-    }else if(token === LEFT_BRACE){
-      this.push();
-      if (this.value) {
-        this.value = this.value[this.key] = {};
-      } else {
-        this.value = {};
-      }
-      this.key = undefined;
-      this.state = KEY;
-      this.mode = OBJECT;
-    }else if(token === LEFT_BRACKET){
-      this.push();
-      if (this.value) {
-        this.value = this.value[this.key] = [];
-      } else {
-        this.value = [];
-      }
-      this.key = 0;
-      this.mode = ARRAY;
-      this.state = VALUE;
-    }else if(token === RIGHT_BRACE){
-      if (this.mode === OBJECT) {
-        this.pop();
-      } else {
-        return this.parseError(token, value);
-      }
-    }else if(token === RIGHT_BRACKET){
-      if (this.mode === ARRAY) {
-        this.pop();
-      } else {
-        return this.parseError(token, value);
-      }
-    }else{
-      return this.parseError(token, value);
-    }
-  }else if(this.state === KEY){
-    if (token === STRING) {
-      this.key = value;
-      this.state = COLON;
-    } else if (token === RIGHT_BRACE) {
-      this.pop();
-    } else {
-      return this.parseError(token, value);
-    }
-  }else if(this.state === COLON){
-    if (token === COLON) { this.state = VALUE; }
-    else { return this.parseError(token, value); }
-  }else if(this.state === COMMA){
-    if (token === COMMA) { 
-      if (this.mode === ARRAY) { this.key++; this.state = VALUE; }
-      else if (this.mode === OBJECT) { this.state = KEY; }
-
-    } else if (token === RIGHT_BRACKET && this.mode === ARRAY || token === RIGHT_BRACE && this.mode === OBJECT) {
-      this.pop();
-    } else {
-      return this.parseError(token, value);
-    }
-  }else{
-    return this.parseError(token, value);
-  }
-};
-
-Parser.C = C;
-
-module.exports = Parser;

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/package.json
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/package.json b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/package.json
deleted file mode 100644
index 996d5d9..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/package.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "name": "jsonparse",
-  "description": "This is a pure-js JSON streaming parser for node.js",
-  "tags": [
-    "json",
-    "stream"
-  ],
-  "version": "1.2.0",
-  "author": {
-    "name": "Tim Caswell",
-    "email": "tim@creationix.com"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/creationix/jsonparse.git"
-  },
-  "devDependencies": {
-    "tape": "~0.1.1",
-    "tap": "~0.3.3"
-  },
-  "scripts": {
-    "test": "tap test/*.js"
-  },
-  "bugs": {
-    "url": "http://github.com/creationix/jsonparse/issues"
-  },
-  "engines": [
-    "node >= 0.2.0"
-  ],
-  "license": "MIT",
-  "main": "jsonparse.js",
-  "gitHead": "b3f4dc7b49300a549aea19a628d712009ca84ced",
-  "homepage": "https://github.com/creationix/jsonparse",
-  "_id": "jsonparse@1.2.0",
-  "_shasum": "5c0c5685107160e72fe7489bddea0b44c2bc67bd",
-  "_from": "jsonparse@>=1.1.0 <2.0.0",
-  "_npmVersion": "1.4.28",
-  "_npmUser": {
-    "name": "creationix",
-    "email": "tim@creationix.com"
-  },
-  "maintainers": [
-    {
-      "name": "creationix",
-      "email": "tim@creationix.com"
-    },
-    {
-      "name": "substack",
-      "email": "mail@substack.net"
-    }
-  ],
-  "dist": {
-    "shasum": "5c0c5685107160e72fe7489bddea0b44c2bc67bd",
-    "tarball": "http://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz"
-  },
-  "directories": {},
-  "_resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz",
-  "readme": "ERROR: No README data found!"
-}

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/samplejson/basic.json
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/samplejson/basic.json b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/samplejson/basic.json
deleted file mode 100644
index 950dff9..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/samplejson/basic.json
+++ /dev/null
@@ -1,167 +0,0 @@
-[
-  {
-  },
-  {
-    "image": [
-      {"shape": "rect", "fill": "#333", "stroke": "#999", "x": 0.5e+1, "y": 0.5, "z": 0.8e-0, "w": 0.5e5, "u": 2E10, "foo": 2E+1, "bar": 2E-0, "width": 47, "height": 47}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [2,4],
-      "2": [],
-      "3": [2,6],
-      "4": [],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": true,"7": true,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#248", "stroke": "#48f", "points": [[0.5,47.5],[47.5,47.5],[47.5,0.5]]}
-    ],
-    "solid": {
-      "1": [2,4],
-      "2": [1],
-      "3": [2],
-      "4": [],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": true,"7": false,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#248", "stroke": "#48f", "points": [[0.5,0.5],[47.5,47.5],[0.5,47.5]]}
-    ],
-    "solid": {
-      "1": [2],
-      "2": [3],
-      "3": [2,6],
-      "4": [],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": true,"7": true,"9": false}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[47.5,47.5],[47.5,0.5]]}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [2,4],
-      "2": [],
-      "3": [2,6],
-      "4": [],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [3],
-      "7": [4,8],
-      "8": [7],
-      "9": [6,8]
-    },
-    "corners": {"1": false,"3": true,"7": true,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[0.5,47.5],[47.5,0.5]]}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [2,4],
-      "2": [],
-      "3": [2,6],
-      "4": [1],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [],
-      "7": [4,8],
-      "8": [9],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": false,"7": true,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#482", "stroke": "#8f4", "points": [[0.5,47.5],[0.5,23.5],[24.5,23.5],[24.5,0.5],[47.5,0.5],[47.5,47.5]]}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [2,4],
-      "2": [],
-      "3": [6,2],
-      "4": [],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [9],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": true,"7": false,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#482", "stroke": "#8f4", "points": [[0.5,0.5],[23.5,0.5],[23.5,24.5],[47.5,24.5],[47.5,47.5],[0.5,47.5]]}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [4,2],
-      "2": [],
-      "3": [2,6],
-      "4": [7],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": true,"7": true,"9": false}
-  },
-  {
-    "image": [
-      {"shape": "circle", "fill": "#ff0", "stroke": "#ff8", "cx": 24, "cy": 24, "r": 18}
-    ],
-    "item": true
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#842", "stroke": "#f84", "points": [[4.5,0.5],[14.5,0.5],[14.5,17.5],[34,17.5],[33.5,0.5],[43.5,0.5],[43.5,47.5],[33.5,47.5],[33.5,30.5],[14.5,30.5],[14.5,47.5],[4.5,47.5]]}
-    ],
-    "jumpable": 3
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[47.5,0.5],[24,47.5]]}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [2,4],
-      "2": [],
-      "3": [2,6],
-      "4": [1],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [3],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": false,"3": false,"7": true,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "rect", "fill": "#114acb", "x": 0.5, "y": 0.5, "width": 47, "height": 47},
-      {"shape": "polygon", "fill": "rgba(255,255,255,0.30)", "points": [[0.5,0.5],[47.5,0.5],[40,8],[8,8],[8,40],[0.5,47.5]]},
-      {"shape": "polygon", "fill": "rgba(0,0,0,0.30)", "points": [[47.5,0.5],[48,48],[0.5,47.5],[8,40],[40,40],[40,8]]},
-      {"shape": "polygon", "fill": "rgb(255,255,0)", "stroke": "rgba(255,255,0,0.5)", "points": [[24,9],[35,20],[26,29],[26,33],[22,33],[22,27],[29,20],[24,15],[16,23],[13,20]]},
-      {"shape": "rect", "fill": "rgb(255,255,0)", "stroke": "rgba(255,255,0,0.5)", "x": 22, "y":35, "width": 4, "height": 4}
-    ]
-  }
-]

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/samplejson/basic2.json
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/samplejson/basic2.json b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/samplejson/basic2.json
deleted file mode 100644
index 3a6919b..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/samplejson/basic2.json
+++ /dev/null
@@ -1,180 +0,0 @@
-[
-  {
-  },
-  {
-    "image": [
-      {"shape": "rect", "fill": "#333", "stroke": "#999", "x": 0.5, "y": 0.5, "width": 47, "height": 47}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [2,4],
-      "2": [],
-      "3": [2,6],
-      "4": [],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": true,"7": true,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#248", "stroke": "#48f", "points": [[0.5,47.5],[47.5,47.5],[47.5,0.5]]}
-    ],
-    "solid": {
-      "1": [2,4],
-      "2": [1],
-      "3": [2],
-      "4": [],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": true,"7": false,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#248", "stroke": "#48f", "points": [[0.5,0.5],[47.5,47.5],[0.5,47.5]]}
-    ],
-    "solid": {
-      "1": [2],
-      "2": [3],
-      "3": [2,6],
-      "4": [],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": true,"7": true,"9": false}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[47.5,47.5],[47.5,0.5]]}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [2,4],
-      "2": [],
-      "3": [2,6],
-      "4": [],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [3],
-      "7": [4,8],
-      "8": [7],
-      "9": [6,8]
-    },
-    "corners": {"1": false,"3": true,"7": true,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[0.5,47.5],[47.5,0.5]]}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [2,4],
-      "2": [],
-      "3": [2,6],
-      "4": [1],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [],
-      "7": [4,8],
-      "8": [9],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": false,"7": true,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#482", "stroke": "#8f4", "points": [[0.5,47.5],[0.5,23.5],[24.5,23.5],[24.5,0.5],[47.5,0.5],[47.5,47.5]]}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [2,4],
-      "2": [],
-      "3": [6,2],
-      "4": [],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [9],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": true,"7": false,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#482", "stroke": "#8f4", "points": [[0.5,0.5],[23.5,0.5],[23.5,24.5],[47.5,24.5],[47.5,47.5],[0.5,47.5]]}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [4,2],
-      "2": [],
-      "3": [2,6],
-      "4": [7],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": true,"3": true,"7": true,"9": false}
-  },
-  {
-    "image": [
-      {"shape": "circle", "fill": "#ff0", "stroke": "#ff8", "cx": 24, "cy": 24, "r": 18}
-    ],
-    "item": true
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#842", "stroke": "#f84", "points": [[4.5,0.5],[14.5,0.5],[14.5,17.5],[34,17.5],[33.5,0.5],[43.5,0.5],[43.5,47.5],[33.5,47.5],[33.5,30.5],[14.5,30.5],[14.5,47.5],[4.5,47.5]]}
-    ],
-    "jumpable": 3
-  },
-  {
-    "image": [
-      {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[47.5,0.5],[24,47.5]]}
-    ],
-    "jumpable": 3,
-    "solid": {
-      "1": [2,4],
-      "2": [],
-      "3": [2,6],
-      "4": [1],
-      "5": [2,8,1,3,7,9,4,6],
-      "6": [3],
-      "7": [4,8],
-      "8": [],
-      "9": [6,8]
-    },
-    "corners": {"1": false,"3": false,"7": true,"9": true}
-  },
-  {
-    "image": [
-      {"shape": "rect", "fill": "#114acb", "x": 0.5, "y": 0.5, "width": 47, "height": 47},
-      {"shape": "polygon", "fill": "rgba(255,255,255,0.30)", "points": [[0.5,0.5],[47.5,0.5],[40,8],[8,8],[8,40],[0.5,47.5]]},
-      {"shape": "polygon", "fill": "rgba(0,0,0,0.30)", "points": [[47.5,0.5],[48,48],[0.5,47.5],[8,40],[40,40],[40,8]]},
-      {"shape": "polygon", "fill": "rgb(255,255,0)", "stroke": "rgba(255,255,0,0.5)", "points": [[24,9],[35,20],[26,29],[26,33],[22,33],[22,27],[29,20],[24,15],[16,23],[13,20]]},
-      {"shape": "rect", "fill": "rgb(255,255,0)", "stroke": "rgba(255,255,0,0.5)", "x": 22, "y":35, "width": 4, "height": 4}
-    ],
-    "item": true
-  },
-  {
-    "image": [
-      {"shape": "circle", "fill": "#80f", "stroke": "#88f", "cx": 24, "cy": 24, "r": 18}
-    ],
-    "item": true
-  },
-  {
-    "image": [
-      {"shape": "circle", "fill": "#4f4", "stroke": "#8f8", "cx": 24, "cy": 24, "r": 18}
-    ],
-    "item": true
-  }
-]

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/boundary.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/boundary.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/boundary.js
deleted file mode 100644
index 6671f5f..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/boundary.js
+++ /dev/null
@@ -1,110 +0,0 @@
-var test = require('tape');
-var Parser = require('../');
-
-test('2 byte utf8 \'De\' character: д', function (t) {
-  t.plan(1);
-
-  var p = new Parser();
-  p.onValue = function (value) {
-    t.equal(value, 'д');
-  };
-
-  var de_buffer = new Buffer([0xd0, 0xb4]);
-
-  p.write('"');
-  p.write(de_buffer);
-  p.write('"');
-
-});
-
-test('3 byte utf8 \'Han\' character: 我', function (t) {
-  t.plan(1);
-
-  var p = new Parser();
-  p.onValue = function (value) {
-    t.equal(value, '我');
-  };
-
-  var han_buffer = new Buffer([0xe6, 0x88, 0x91]);
-  p.write('"');
-  p.write(han_buffer);
-  p.write('"');
-});
-
-test('4 byte utf8 character (unicode scalar U+2070E): 𠜎', function (t) {
-  t.plan(1);
-
-  var p = new Parser();
-  p.onValue = function (value) {
-    t.equal(value, '𠜎');
-  };
-
-  var Ux2070E_buffer = new Buffer([0xf0, 0xa0, 0x9c, 0x8e]);
-  p.write('"');
-  p.write(Ux2070E_buffer);
-  p.write('"');
-});
-
-test('3 byte utf8 \'Han\' character chunked inbetween 2nd and 3rd byte: 我', function (t) {
-  t.plan(1);
-
-  var p = new Parser();
-  p.onValue = function (value) {
-    t.equal(value, '我');
-  };
-
-  var han_buffer_first = new Buffer([0xe6, 0x88]);
-  var han_buffer_second = new Buffer([0x91]);
-  p.write('"');
-  p.write(han_buffer_first);
-  p.write(han_buffer_second);
-  p.write('"');
-});
-
-test('4 byte utf8 character (unicode scalar U+2070E) chunked inbetween 2nd and 3rd byte: 𠜎', function (t) {
-  t.plan(1);
-
-  var p = new Parser();
-  p.onValue = function (value) {
-    t.equal(value, '𠜎');
-  };
-
-  var Ux2070E_buffer_first = new Buffer([0xf0, 0xa0]);
-  var Ux2070E_buffer_second = new Buffer([0x9c, 0x8e]);
-  p.write('"');
-  p.write(Ux2070E_buffer_first);
-  p.write(Ux2070E_buffer_second);
-  p.write('"');
-});
-
-test('1-4 byte utf8 character string chunked inbetween random bytes: Aж文𠜱B', function (t) {
-  t.plan(1);
-
-var p = new Parser();
-  p.onValue = function (value) {
-    t.equal(value, 'Aж文𠜱B');
-  };
-
-  var eclectic_buffer = new Buffer([0x41, // A
-                                    0xd0, 0xb6, // ж
-                                    0xe6, 0x96, 0x87, // 文
-                                    0xf0, 0xa0, 0x9c, 0xb1, // 𠜱
-                                    0x42]); // B
-
-  var rand_chunk = Math.floor(Math.random() * (eclectic_buffer.length));
-  var first_buffer = eclectic_buffer.slice(0, rand_chunk);
-  var second_buffer = eclectic_buffer.slice(rand_chunk);
-
-  //console.log('eclectic_buffer: ' + eclectic_buffer)
-  //console.log('sliced from 0 to ' + rand_chunk);
-  //console.log(first_buffer);
-  //console.log('then sliced from ' + rand_chunk + ' to the end');
-  //console.log(second_buffer);
-
-  console.log('chunked after offset ' + rand_chunk);
-  p.write('"');
-  p.write(first_buffer);
-  p.write(second_buffer);
-  p.write('"');
-
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/offset.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/offset.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/offset.js
deleted file mode 100644
index 9a552ab..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/offset.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var test = require('tape');
-var Parser = require('../');
-
-var input = '{\n  "string": "value",\n  "number": 3,\n  "object"';
-var input2 = ': {\n  "key": "vд"\n  },\n  "array": [\n  -1,\n  12\n  ]\n  ';
-var input3 = '"null": null, "true": true, "false": false, "frac": 3.14 }';
-
-var offsets = [
-  [ 0, Parser.C.LEFT_BRACE ],
-  [ 4, Parser.C.STRING ],
-  [ 12, Parser.C.COLON ],
-  [ 14, Parser.C.STRING ],
-  [ 21, Parser.C.COMMA ],
-  [ 25, Parser.C.STRING ],
-  [ 33, Parser.C.COLON ],
-  [ 35, Parser.C.NUMBER ],
-  [ 36, Parser.C.COMMA ],
-  [ 40, Parser.C.STRING ],
-  [ 48, Parser.C.COLON ],
-  [ 50, Parser.C.LEFT_BRACE ],
-  [ 54, Parser.C.STRING ],
-  [ 59, Parser.C.COLON ],
-  [ 61, Parser.C.STRING ],
-  [ 69, Parser.C.RIGHT_BRACE ],
-  [ 70, Parser.C.COMMA ],
-  [ 74, Parser.C.STRING ],
-  [ 81, Parser.C.COLON ],
-  [ 83, Parser.C.LEFT_BRACKET ],
-  [ 87, Parser.C.NUMBER ],
-  [ 89, Parser.C.COMMA ],
-  [ 93, Parser.C.NUMBER ],
-  [ 98, Parser.C.RIGHT_BRACKET ],
-  [ 102, Parser.C.STRING ],
-  [ 108, Parser.C.COLON ],
-  [ 110, Parser.C.NULL ],
-  [ 114, Parser.C.COMMA ],
-  [ 116, Parser.C.STRING ],
-  [ 122, Parser.C.COLON ],
-  [ 124, Parser.C.TRUE ],
-  [ 128, Parser.C.COMMA ],
-  [ 130, Parser.C.STRING ],
-  [ 137, Parser.C.COLON ],
-  [ 139, Parser.C.FALSE ],
-  [ 144, Parser.C.COMMA ],
-  [ 146, Parser.C.STRING ],
-  [ 152, Parser.C.COLON ],
-  [ 154, Parser.C.NUMBER ],
-  [ 159, Parser.C.RIGHT_BRACE ]
-];
-
-test('offset', function(t) {
-  t.plan(offsets.length * 2 + 1);
-
-  var p = new Parser();
-  var i = 0;
-  p.onToken = function (token) {
-    t.equal(p.offset, offsets[i][0]);
-    t.equal(token, offsets[i][1]);
-    i++;
-  };
-
-  p.write(input);
-  p.write(input2);
-  p.write(input3);
-
-  t.equal(i, offsets.length);
-});

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/primitives.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/primitives.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/primitives.js
deleted file mode 100644
index 33cae16..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/primitives.js
+++ /dev/null
@@ -1,57 +0,0 @@
-var test = require('tape');
-var Parser = require('../');
-
-var expected = [
-  [ [], '' ],
-  [ [], 'Hello' ],
-  [ [], 'This"is' ],
-  [ [], '\r\n\f\t\\/"' ],
-  [ [], 'Λάμβδα' ],
-  [ [], '\\' ],
-  [ [], '/' ],
-  [ [], '"' ],
-  [ [ 0 ], 0 ],
-  [ [ 1 ], 1 ],
-  [ [ 2 ], -1 ],
-  [ [], [ 0, 1, -1 ] ],
-  [ [ 0 ], 1 ],
-  [ [ 1 ], 1.1 ],
-  [ [ 2 ], -1.1 ],
-  [ [ 3 ], -1 ],
-  [ [], [ 1, 1.1, -1.1, -1 ] ],
-  [ [ 0 ], -1 ],
-  [ [], [ -1 ] ],
-  [ [ 0 ], -0.1 ],
-  [ [], [ -0.1 ] ],
-  [ [ 0 ], 6.02e+23 ],
-  [ [], [ 6.02e+23 ] ],
-  [ [ 0 ], '7161093205057351174' ],
-  [ [], [ '7161093205057351174'] ]
-];
-
-test('primitives', function (t) {
-  t.plan(25);
-
-  var p = new Parser();
-  p.onValue = function (value) {
-    var keys = this.stack
-      .slice(1)
-      .map(function (item) { return item.key })
-      .concat(this.key !== undefined ? this.key : [])
-    ;
-    t.deepEqual(
-      [ keys, value ],
-      expected.shift()
-    );
-  };
-
-  p.write('"""Hello""This\\"is""\\r\\n\\f\\t\\\\\\/\\""');
-  p.write('"\\u039b\\u03ac\\u03bc\\u03b2\\u03b4\\u03b1"');
-  p.write('"\\\\"');
-  p.write('"\\/"');
-  p.write('"\\""');
-  p.write('[0,1,-1]');
-  p.write('[1.0,1.1,-1.1,-1.0][-1][-0.1]');
-  p.write('[6.02e23]');
-  p.write('[7161093205057351174]');
-});

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/unvalid.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/unvalid.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/unvalid.js
deleted file mode 100644
index 7715cc0..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/unvalid.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var test = require('tape');
-var Parser = require('../');
-
-test('unvalid', function (t) {
-  var count = 0;
-
-  var p = new Parser();
-  p.onError = function (value) {
-    count++;
-    t.equal(1, count);
-    t.end();
-  };
-
-  p.write('{"test": eer[');
-});

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/utf8.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/utf8.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/utf8.js
deleted file mode 100644
index 6cb842f..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/jsonparse/test/utf8.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var test = require('tape');
-var Parser = require('../');
-
-test('3 bytes of utf8', function (t) {
-  t.plan(1);
-
-  var p = new Parser();
-  p.onValue = function (value) {
-    t.equal(value, '├──');
-  };
-
-  p.write('"├──"');
-});
-
-test('utf8 snowman', function (t) {
-  t.plan(1);
-
-  var p = new Parser();
-  p.onValue = function (value) {
-    t.equal(value, '☃');
-  };
-
-  p.write('"☃"');
-});
-
-test('utf8 with regular ascii', function (t) {
-  t.plan(4);
-
-  var p = new Parser();
-  var expected = [ "snow: ☃!", "xyz", "¡que!" ];
-  expected.push(expected.slice());
-
-  p.onValue = function (value) {
-    t.deepEqual(value, expected.shift());
-  };
-
-  p.write('["snow: ☃!","xyz","¡que!"]');
-});

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/.travis.yml
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/.travis.yml b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/.travis.yml
deleted file mode 100644
index c693a93..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
-  - 0.6
-  - 0.8
-  - "0.10"

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/LICENSE.APACHE2
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/LICENSE.APACHE2 b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/LICENSE.APACHE2
deleted file mode 100644
index 6366c04..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/LICENSE.APACHE2
+++ /dev/null
@@ -1,15 +0,0 @@
-Apache License, Version 2.0
-
-Copyright (c) 2011 Dominic Tarr
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/LICENSE.MIT
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/LICENSE.MIT b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/LICENSE.MIT
deleted file mode 100644
index 6eafbd7..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/LICENSE.MIT
+++ /dev/null
@@ -1,24 +0,0 @@
-The MIT License
-
-Copyright (c) 2011 Dominic Tarr
-
-Permission is hereby granted, free of charge, 
-to any person obtaining a copy of this software and 
-associated documentation files (the "Software"), to 
-deal in the Software without restriction, including 
-without limitation the rights to use, copy, modify, 
-merge, publish, distribute, sublicense, and/or sell 
-copies of the Software, and to permit persons to whom 
-the Software is furnished to do so, 
-subject to the following conditions:
-
-The above copyright notice and this permission notice 
-shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/index.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/index.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/index.js
deleted file mode 100644
index ca5fc59..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/index.js
+++ /dev/null
@@ -1,108 +0,0 @@
-var Stream = require('stream')
-
-// through
-//
-// a stream that does nothing but re-emit the input.
-// useful for aggregating a series of changing but not ending streams into one stream)
-
-exports = module.exports = through
-through.through = through
-
-//create a readable writable stream.
-
-function through (write, end, opts) {
-  write = write || function (data) { this.queue(data) }
-  end = end || function () { this.queue(null) }
-
-  var ended = false, destroyed = false, buffer = [], _ended = false
-  var stream = new Stream()
-  stream.readable = stream.writable = true
-  stream.paused = false
-
-//  stream.autoPause   = !(opts && opts.autoPause   === false)
-  stream.autoDestroy = !(opts && opts.autoDestroy === false)
-
-  stream.write = function (data) {
-    write.call(this, data)
-    return !stream.paused
-  }
-
-  function drain() {
-    while(buffer.length && !stream.paused) {
-      var data = buffer.shift()
-      if(null === data)
-        return stream.emit('end')
-      else
-        stream.emit('data', data)
-    }
-  }
-
-  stream.queue = stream.push = function (data) {
-//    console.error(ended)
-    if(_ended) return stream
-    if(data === null) _ended = true
-    buffer.push(data)
-    drain()
-    return stream
-  }
-
-  //this will be registered as the first 'end' listener
-  //must call destroy next tick, to make sure we're after any
-  //stream piped from here.
-  //this is only a problem if end is not emitted synchronously.
-  //a nicer way to do this is to make sure this is the last listener for 'end'
-
-  stream.on('end', function () {
-    stream.readable = false
-    if(!stream.writable && stream.autoDestroy)
-      process.nextTick(function () {
-        stream.destroy()
-      })
-  })
-
-  function _end () {
-    stream.writable = false
-    end.call(stream)
-    if(!stream.readable && stream.autoDestroy)
-      stream.destroy()
-  }
-
-  stream.end = function (data) {
-    if(ended) return
-    ended = true
-    if(arguments.length) stream.write(data)
-    _end() // will emit or queue
-    return stream
-  }
-
-  stream.destroy = function () {
-    if(destroyed) return
-    destroyed = true
-    ended = true
-    buffer.length = 0
-    stream.writable = stream.readable = false
-    stream.emit('close')
-    return stream
-  }
-
-  stream.pause = function () {
-    if(stream.paused) return
-    stream.paused = true
-    return stream
-  }
-
-  stream.resume = function () {
-    if(stream.paused) {
-      stream.paused = false
-      stream.emit('resume')
-    }
-    drain()
-    //may have become paused again,
-    //as drain emits 'data'.
-    if(!stream.paused)
-      stream.emit('drain')
-    return stream
-  }
-  return stream
-}
-

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/package.json
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/package.json b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/package.json
deleted file mode 100644
index 85acfbf..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "name": "through",
-  "version": "2.3.8",
-  "description": "simplified stream construction",
-  "main": "index.js",
-  "scripts": {
-    "test": "set -e; for t in test/*.js; do node $t; done"
-  },
-  "devDependencies": {
-    "stream-spec": "~0.3.5",
-    "tape": "~2.3.2",
-    "from": "~0.1.3"
-  },
-  "keywords": [
-    "stream",
-    "streams",
-    "user-streams",
-    "pipe"
-  ],
-  "author": {
-    "name": "Dominic Tarr",
-    "email": "dominic.tarr@gmail.com",
-    "url": "dominictarr.com"
-  },
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/dominictarr/through.git"
-  },
-  "homepage": "https://github.com/dominictarr/through",
-  "testling": {
-    "browsers": [
-      "ie/8..latest",
-      "ff/15..latest",
-      "chrome/20..latest",
-      "safari/5.1..latest"
-    ],
-    "files": "test/*.js"
-  },
-  "gitHead": "2c5a6f9a0cc54da759b6e10964f2081c358e49dc",
-  "bugs": {
-    "url": "https://github.com/dominictarr/through/issues"
-  },
-  "_id": "through@2.3.8",
-  "_shasum": "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5",
-  "_from": "through@>=2.2.7 <3.0.0",
-  "_npmVersion": "2.12.0",
-  "_nodeVersion": "2.3.1",
-  "_npmUser": {
-    "name": "dominictarr",
-    "email": "dominic.tarr@gmail.com"
-  },
-  "maintainers": [
-    {
-      "name": "dominictarr",
-      "email": "dominic.tarr@gmail.com"
-    }
-  ],
-  "dist": {
-    "shasum": "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5",
-    "tarball": "http://registry.npmjs.org/through/-/through-2.3.8.tgz"
-  },
-  "directories": {},
-  "_resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-  "readme": "ERROR: No README data found!"
-}

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/readme.markdown
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/readme.markdown b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/readme.markdown
deleted file mode 100644
index cb34c81..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/readme.markdown
+++ /dev/null
@@ -1,64 +0,0 @@
-#through
-
-[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through)
-[![testling badge](https://ci.testling.com/dominictarr/through.png)](https://ci.testling.com/dominictarr/through)
-
-Easy way to create a `Stream` that is both `readable` and `writable`. 
-
-* Pass in optional `write` and `end` methods.
-* `through` takes care of pause/resume logic if you use `this.queue(data)` instead of `this.emit('data', data)`.
-* Use `this.pause()` and `this.resume()` to manage flow.
-* Check `this.paused` to see current flow state. (`write` always returns `!this.paused`).
-
-This function is the basis for most of the synchronous streams in 
-[event-stream](http://github.com/dominictarr/event-stream).
-
-``` js
-var through = require('through')
-
-through(function write(data) {
-    this.queue(data) //data *must* not be null
-  },
-  function end () { //optional
-    this.queue(null)
-  })
-```
-
-Or, can also be used _without_ buffering on pause, use `this.emit('data', data)`,
-and this.emit('end')
-
-``` js
-var through = require('through')
-
-through(function write(data) {
-    this.emit('data', data)
-    //this.pause() 
-  },
-  function end () { //optional
-    this.emit('end')
-  })
-```
-
-## Extended Options
-
-You will probably not need these 99% of the time.
-
-### autoDestroy=false
-
-By default, `through` emits close when the writable
-and readable side of the stream has ended.
-If that is not desired, set `autoDestroy=false`.
-
-``` js
-var through = require('through')
-
-//like this
-var ts = through(write, end, {autoDestroy: false})
-//or like this
-var ts = through(write, end)
-ts.autoDestroy = false
-```
-
-## License
-
-MIT / Apache2

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/async.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/async.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/async.js
deleted file mode 100644
index 46bdbae..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/async.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var from = require('from')
-var through = require('../')
-
-var tape = require('tape')
-
-tape('simple async example', function (t) {
- 
-  var n = 0, expected = [1,2,3,4,5], actual = []
-  from(expected)
-  .pipe(through(function(data) {
-    this.pause()
-    n ++
-    setTimeout(function(){
-      console.log('pushing data', data)
-      this.push(data)
-      this.resume()
-    }.bind(this), 300)
-  })).pipe(through(function(data) {
-    console.log('pushing data second time', data);
-    this.push(data)
-  })).on('data', function (d) {
-    actual.push(d)
-  }).on('end', function() {
-    t.deepEqual(actual, expected)
-    t.end()
-  })
-
-})

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/auto-destroy.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/auto-destroy.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/auto-destroy.js
deleted file mode 100644
index 9a8fd00..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/auto-destroy.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var test = require('tape')
-var through = require('../')
-
-// must emit end before close.
-
-test('end before close', function (assert) {
-  var ts = through()
-  ts.autoDestroy = false
-  var ended = false, closed = false
-
-  ts.on('end', function () {
-    assert.ok(!closed)
-    ended = true
-  })
-  ts.on('close', function () {
-    assert.ok(ended)
-    closed = true
-  })
-
-  ts.write(1)
-  ts.write(2)
-  ts.write(3)
-  ts.end()
-  assert.ok(ended)
-  assert.notOk(closed)
-  ts.destroy()
-  assert.ok(closed)
-  assert.end()
-})
-

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/buffering.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/buffering.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/buffering.js
deleted file mode 100644
index b0084bf..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/buffering.js
+++ /dev/null
@@ -1,71 +0,0 @@
-var test = require('tape')
-var through = require('../')
-
-// must emit end before close.
-
-test('buffering', function(assert) {
-  var ts = through(function (data) {
-    this.queue(data)
-  }, function () {
-    this.queue(null)
-  })
-
-  var ended = false,  actual = []
-
-  ts.on('data', actual.push.bind(actual))
-  ts.on('end', function () {
-    ended = true
-  })
-
-  ts.write(1)
-  ts.write(2)
-  ts.write(3)
-  assert.deepEqual(actual, [1, 2, 3])
-  ts.pause()
-  ts.write(4)
-  ts.write(5)
-  ts.write(6)
-  assert.deepEqual(actual, [1, 2, 3])
-  ts.resume()
-  assert.deepEqual(actual, [1, 2, 3, 4, 5, 6])
-  ts.pause()
-  ts.end()
-  assert.ok(!ended)
-  ts.resume()
-  assert.ok(ended)
-  assert.end()
-})
-
-test('buffering has data in queue, when ends', function (assert) {
-
-  /*
-   * If stream ends while paused with data in the queue,
-   * stream should still emit end after all data is written
-   * on resume.
-   */
-
-  var ts = through(function (data) {
-    this.queue(data)
-  }, function () {
-    this.queue(null)
-  })
-
-  var ended = false,  actual = []
-
-  ts.on('data', actual.push.bind(actual))
-  ts.on('end', function () {
-    ended = true
-  })
-
-  ts.pause()
-  ts.write(1)
-  ts.write(2)
-  ts.write(3)
-  ts.end()
-  assert.deepEqual(actual, [], 'no data written yet, still paused')
-  assert.ok(!ended, 'end not emitted yet, still paused')
-  ts.resume()
-  assert.deepEqual(actual, [1, 2, 3], 'resumed, all data should be delivered')
-  assert.ok(ended, 'end should be emitted once all data was delivered')
-  assert.end();
-})

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/end.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/end.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/end.js
deleted file mode 100644
index fa113f5..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/end.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var test = require('tape')
-var through = require('../')
-
-// must emit end before close.
-
-test('end before close', function (assert) {
-  var ts = through()
-  var ended = false, closed = false
-
-  ts.on('end', function () {
-    assert.ok(!closed)
-    ended = true
-  })
-  ts.on('close', function () {
-    assert.ok(ended)
-    closed = true
-  })
-
-  ts.write(1)
-  ts.write(2)
-  ts.write(3)
-  ts.end()
-  assert.ok(ended)
-  assert.ok(closed)
-  assert.end()
-})
-
-test('end only once', function (t) {
-
-  var ts = through()
-  var ended = false, closed = false
-
-  ts.on('end', function () {
-    t.equal(ended, false)
-    ended = true
-  })
-
-  ts.queue(null)
-  ts.queue(null)
-  ts.queue(null)
-
-  ts.resume()
-
-  t.end()
-})

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/index.js
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/index.js b/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/index.js
deleted file mode 100644
index 96da82f..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/node_modules/through/test/index.js
+++ /dev/null
@@ -1,133 +0,0 @@
-
-var test = require('tape')
-var spec = require('stream-spec')
-var through = require('../')
-
-/*
-  I'm using these two functions, and not streams and pipe
-  so there is less to break. if this test fails it must be
-  the implementation of _through_
-*/
-
-function write(array, stream) {
-  array = array.slice()
-  function next() {
-    while(array.length)
-      if(stream.write(array.shift()) === false)
-        return stream.once('drain', next)
-    
-    stream.end()
-  }
-
-  next()
-}
-
-function read(stream, callback) {
-  var actual = []
-  stream.on('data', function (data) {
-    actual.push(data)
-  })
-  stream.once('end', function () {
-    callback(null, actual)
-  })
-  stream.once('error', function (err) {
-    callback(err)
-  })
-}
-
-test('simple defaults', function(assert) {
-
-  var l = 1000
-    , expected = []
-
-  while(l--) expected.push(l * Math.random())
-
-  var t = through()
-  var s = spec(t).through().pausable()
-
-  read(t, function (err, actual) {
-    assert.ifError(err)
-    assert.deepEqual(actual, expected)
-    assert.end()
-  })
-
-  t.on('close', s.validate)
-
-  write(expected, t)
-});
-
-test('simple functions', function(assert) {
-
-  var l = 1000
-    , expected = [] 
-
-  while(l--) expected.push(l * Math.random())
-
-  var t = through(function (data) {
-      this.emit('data', data*2)
-    }) 
-  var s = spec(t).through().pausable()
-      
-
-  read(t, function (err, actual) {
-    assert.ifError(err)
-    assert.deepEqual(actual, expected.map(function (data) {
-      return data*2
-    }))
-    assert.end()
-  })
-
-  t.on('close', s.validate)
-
-  write(expected, t)
-})
-
-test('pauses', function(assert) {
-
-  var l = 1000
-    , expected = [] 
-
-  while(l--) expected.push(l) //Math.random())
-
-  var t = through()    
- 
-  var s = spec(t)
-      .through()
-      .pausable()
-
-  t.on('data', function () {
-    if(Math.random() > 0.1) return
-    t.pause()
-    process.nextTick(function () {
-      t.resume()
-    })
-  })
-
-  read(t, function (err, actual) {
-    assert.ifError(err)
-    assert.deepEqual(actual, expected)
-  })
-
-  t.on('close', function () {
-    s.validate()
-    assert.end()
-  })
-
-  write(expected, t)
-})
-
-test('does not soft-end on `undefined`', function(assert) {
-  var stream = through()
-    , count = 0
-
-  stream.on('data', function (data) {
-    count++
-  })
-
-  stream.write(undefined)
-  stream.write(undefined)
-
-  assert.equal(count, 2)
-
-  assert.end()
-})

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/6436833c/node_modules/couchbulkimporter/node_modules/JSONStream/package.json
----------------------------------------------------------------------
diff --git a/node_modules/couchbulkimporter/node_modules/JSONStream/package.json b/node_modules/couchbulkimporter/node_modules/JSONStream/package.json
deleted file mode 100644
index 4d094bb..0000000
--- a/node_modules/couchbulkimporter/node_modules/JSONStream/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-  "name": "JSONStream",
-  "version": "1.0.6",
-  "description": "rawStream.pipe(JSONStream.parse()).pipe(streamOfObjects)",
-  "homepage": "http://github.com/dominictarr/JSONStream",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/dominictarr/JSONStream.git"
-  },
-  "license": "(MIT OR Apache-2.0)",
-  "keywords": [
-    "json",
-    "stream",
-    "streaming",
-    "parser",
-    "async",
-    "parsing"
-  ],
-  "dependencies": {
-    "jsonparse": "^1.1.0",
-    "through": ">=2.2.7 <3"
-  },
-  "devDependencies": {
-    "it-is": "~1",
-    "assertions": "~2.2.2",
-    "render": "~0.1.1",
-    "trees": "~0.0.3",
-    "event-stream": "~0.7.0",
-    "tape": "~2.12.3"
-  },
-  "bin": {
-    "JSONStream": "./index.js"
-  },
-  "author": {
-    "name": "Dominic Tarr",
-    "email": "dominic.tarr@gmail.com",
-    "url": "http://bit.ly/dominictarr"
-  },
-  "scripts": {
-    "test": "set -e; for t in test/*.js; do echo '***' $t '***'; node $t; done"
-  },
-  "optionalDependencies": {},
-  "engines": {
-    "node": "*"
-  },
-  "gitHead": "4aef6e50ec4f2bc84fdf2370e43b2e62cd8e534c",
-  "bugs": {
-    "url": "https://github.com/dominictarr/JSONStream/issues"
-  },
-  "_id": "JSONStream@1.0.6",
-  "_shasum": "7fa56d971a69c97b7f9db942f441a68a2187da3a",
-  "_from": "JSONStream@>=1.0.3 <1.1.0",
-  "_npmVersion": "3.3.1",
-  "_nodeVersion": "2.3.1",
-  "_npmUser": {
-    "name": "dominictarr",
-    "email": "dominic.tarr@gmail.com"
-  },
-  "maintainers": [
-    {
-      "name": "dominictarr",
-      "email": "dominic.tarr@gmail.com"
-    }
-  ],
-  "dist": {
-    "shasum": "7fa56d971a69c97b7f9db942f441a68a2187da3a",
-    "tarball": "http://registry.npmjs.org/JSONStream/-/JSONStream-1.0.6.tgz"
-  },
-  "directories": {},
-  "_resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.0.6.tgz",
-  "readme": "ERROR: No README data found!"
-}