Add node modules and compiled JavaScript from main (#54)
Co-authored-by: Oliver King <oking3@uncc.edu>
This commit is contained in:
committed by
GitHub
parent
4a983766a0
commit
52d71d28bd
19
node_modules/byline/LICENSE
generated
vendored
Normal file
19
node_modules/byline/LICENSE
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
node-byline (C) 2011-2015 John Hewson
|
||||
|
||||
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.
|
147
node_modules/byline/README.md
generated
vendored
Normal file
147
node_modules/byline/README.md
generated
vendored
Normal file
@ -0,0 +1,147 @@
|
||||
# byline — buffered stream for reading lines
|
||||
|
||||

|
||||
|
||||
`byline` is a simple module providing a `LineStream`.
|
||||
|
||||
- node v0.10 `streams2` (transform stream)
|
||||
- supports `pipe`
|
||||
- supports both UNIX and Windows line endings
|
||||
- supports [Unicode UTS #18 line boundaries](http://www.unicode.org/reports/tr18/#Line_Boundaries)
|
||||
- can wrap any readable stream
|
||||
- can be used as a readable-writable "through-stream" (transform stream)
|
||||
- super-simple: `stream = byline(stream);`
|
||||
|
||||
## Install
|
||||
|
||||
npm install byline
|
||||
|
||||
or from source:
|
||||
|
||||
git clone git://github.com/jahewson/node-byline.git
|
||||
cd node-byline
|
||||
npm link
|
||||
|
||||
# Convenience API
|
||||
|
||||
The `byline` module can be used as a function to quickly wrap a readable stream:
|
||||
|
||||
```javascript
|
||||
var fs = require('fs'),
|
||||
byline = require('byline');
|
||||
|
||||
var stream = byline(fs.createReadStream('sample.txt', { encoding: 'utf8' }));
|
||||
```
|
||||
|
||||
The `data` event then emits lines:
|
||||
|
||||
```javascript
|
||||
stream.on('data', function(line) {
|
||||
console.log(line);
|
||||
});
|
||||
```
|
||||
|
||||
# Standard API
|
||||
|
||||
You just need to add one line to wrap your readable `Stream` with a `LineStream`.
|
||||
|
||||
```javascript
|
||||
var fs = require('fs'),
|
||||
byline = require('byline');
|
||||
|
||||
var stream = fs.createReadStream('sample.txt');
|
||||
stream = byline.createStream(stream);
|
||||
|
||||
stream.on('data', function(line) {
|
||||
console.log(line);
|
||||
});
|
||||
```
|
||||
|
||||
# Piping
|
||||
|
||||
`byline` supports `pipe` (though it strips the line endings, of course).
|
||||
|
||||
```javascript
|
||||
var stream = fs.createReadStream('sample.txt');
|
||||
stream = byline.createStream(stream);
|
||||
stream.pipe(fs.createWriteStream('nolines.txt'));
|
||||
```
|
||||
|
||||
Alternatively, you can create a readable/writable "through-stream" which doesn't wrap any specific
|
||||
stream:
|
||||
|
||||
```javascript
|
||||
var stream = fs.createReadStream('sample.txt');
|
||||
stream = byline.createStream(stream);
|
||||
stream.pipe(fs.createWriteStream('nolines.txt'));
|
||||
|
||||
var input = fs.createReadStream('LICENSE');
|
||||
var lineStream = byline.createStream();
|
||||
input.pipe(lineStream);
|
||||
|
||||
var output = fs.createWriteStream('test.txt');
|
||||
lineStream.pipe(output);
|
||||
```
|
||||
|
||||
# Streams2 API
|
||||
|
||||
Node v0.10 added a new streams2 API. This allows the stream to be used in non-flowing mode and is
|
||||
preferred over the legacy pause() and resume() methods.
|
||||
|
||||
```javascript
|
||||
var stream = fs.createReadStream('sample.txt');
|
||||
stream = byline.createStream(stream);
|
||||
|
||||
stream.on('readable', function() {
|
||||
var line;
|
||||
while (null !== (line = stream.read())) {
|
||||
console.log(line);
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
# Transform Stream
|
||||
|
||||
The `byline` transform stream can be directly manipulated like so:
|
||||
|
||||
```javascript
|
||||
var LineStream = require('byline').LineStream;
|
||||
|
||||
var input = fs.createReadStream('sample.txt');
|
||||
var output = fs.createWriteStream('nolines.txt');
|
||||
|
||||
var lineStream = new LineStream();
|
||||
input.pipe(lineStream);
|
||||
lineStream.pipe(output);
|
||||
|
||||
```
|
||||
|
||||
# Empty Lines
|
||||
|
||||
By default byline skips empty lines, if you want to keep them, pass the `keepEmptyLines` option in
|
||||
the call to `byline.createStream(stream, options)` or `byline(stream, options)`.
|
||||
|
||||
# Tests
|
||||
|
||||
npm test
|
||||
|
||||
# v0.8
|
||||
|
||||
If you want to use `node-byline` with node v0.8 then you can use the 2.1.x series. Simply use the
|
||||
following in your `package.json`:
|
||||
|
||||
```javascript
|
||||
"dependencies": {
|
||||
"byline": ">=2.1.0 <3.0.0"
|
||||
},
|
||||
```
|
||||
|
||||
# Simple
|
||||
Unlike other modules (of which there are many), `byline` contains no:
|
||||
|
||||
- monkeypatching
|
||||
- dependencies
|
||||
- non-standard 'line' events which break `pipe`
|
||||
- limitations to only file streams
|
||||
- CoffeeScript
|
||||
- unnecessary code
|
155
node_modules/byline/lib/byline.js
generated
vendored
Normal file
155
node_modules/byline/lib/byline.js
generated
vendored
Normal file
@ -0,0 +1,155 @@
|
||||
// Copyright (C) 2011-2015 John Hewson
|
||||
//
|
||||
// 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.
|
||||
|
||||
var stream = require('stream'),
|
||||
util = require('util'),
|
||||
timers = require('timers');
|
||||
|
||||
// convinience API
|
||||
module.exports = function(readStream, options) {
|
||||
return module.exports.createStream(readStream, options);
|
||||
};
|
||||
|
||||
// basic API
|
||||
module.exports.createStream = function(readStream, options) {
|
||||
if (readStream) {
|
||||
return createLineStream(readStream, options);
|
||||
} else {
|
||||
return new LineStream(options);
|
||||
}
|
||||
};
|
||||
|
||||
// deprecated API
|
||||
module.exports.createLineStream = function(readStream) {
|
||||
console.log('WARNING: byline#createLineStream is deprecated and will be removed soon');
|
||||
return createLineStream(readStream);
|
||||
};
|
||||
|
||||
function createLineStream(readStream, options) {
|
||||
if (!readStream) {
|
||||
throw new Error('expected readStream');
|
||||
}
|
||||
if (!readStream.readable) {
|
||||
throw new Error('readStream must be readable');
|
||||
}
|
||||
var ls = new LineStream(options);
|
||||
readStream.pipe(ls);
|
||||
return ls;
|
||||
}
|
||||
|
||||
//
|
||||
// using the new node v0.10 "streams2" API
|
||||
//
|
||||
|
||||
module.exports.LineStream = LineStream;
|
||||
|
||||
function LineStream(options) {
|
||||
stream.Transform.call(this, options);
|
||||
options = options || {};
|
||||
|
||||
// use objectMode to stop the output from being buffered
|
||||
// which re-concatanates the lines, just without newlines.
|
||||
this._readableState.objectMode = true;
|
||||
this._lineBuffer = [];
|
||||
this._keepEmptyLines = options.keepEmptyLines || false;
|
||||
this._lastChunkEndedWithCR = false;
|
||||
|
||||
// take the source's encoding if we don't have one
|
||||
var self = this;
|
||||
this.on('pipe', function(src) {
|
||||
if (!self.encoding) {
|
||||
// but we can't do this for old-style streams
|
||||
if (src instanceof stream.Readable) {
|
||||
self.encoding = src._readableState.encoding;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
util.inherits(LineStream, stream.Transform);
|
||||
|
||||
LineStream.prototype._transform = function(chunk, encoding, done) {
|
||||
// decode binary chunks as UTF-8
|
||||
encoding = encoding || 'utf8';
|
||||
|
||||
if (Buffer.isBuffer(chunk)) {
|
||||
if (encoding == 'buffer') {
|
||||
chunk = chunk.toString(); // utf8
|
||||
encoding = 'utf8';
|
||||
}
|
||||
else {
|
||||
chunk = chunk.toString(encoding);
|
||||
}
|
||||
}
|
||||
this._chunkEncoding = encoding;
|
||||
|
||||
// see: http://www.unicode.org/reports/tr18/#Line_Boundaries
|
||||
var lines = chunk.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g);
|
||||
|
||||
// don't split CRLF which spans chunks
|
||||
if (this._lastChunkEndedWithCR && chunk[0] == '\n') {
|
||||
lines.shift();
|
||||
}
|
||||
|
||||
if (this._lineBuffer.length > 0) {
|
||||
this._lineBuffer[this._lineBuffer.length - 1] += lines[0];
|
||||
lines.shift();
|
||||
}
|
||||
|
||||
this._lastChunkEndedWithCR = chunk[chunk.length - 1] == '\r';
|
||||
this._lineBuffer = this._lineBuffer.concat(lines);
|
||||
this._pushBuffer(encoding, 1, done);
|
||||
};
|
||||
|
||||
LineStream.prototype._pushBuffer = function(encoding, keep, done) {
|
||||
// always buffer the last (possibly partial) line
|
||||
while (this._lineBuffer.length > keep) {
|
||||
var line = this._lineBuffer.shift();
|
||||
// skip empty lines
|
||||
if (this._keepEmptyLines || line.length > 0 ) {
|
||||
if (!this.push(this._reencode(line, encoding))) {
|
||||
// when the high-water mark is reached, defer pushes until the next tick
|
||||
var self = this;
|
||||
timers.setImmediate(function() {
|
||||
self._pushBuffer(encoding, keep, done);
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
done();
|
||||
};
|
||||
|
||||
LineStream.prototype._flush = function(done) {
|
||||
this._pushBuffer(this._chunkEncoding, 0, done);
|
||||
};
|
||||
|
||||
// see Readable::push
|
||||
LineStream.prototype._reencode = function(line, chunkEncoding) {
|
||||
if (this.encoding && this.encoding != chunkEncoding) {
|
||||
return new Buffer(line, chunkEncoding).toString(this.encoding);
|
||||
}
|
||||
else if (this.encoding) {
|
||||
// this should be the most common case, i.e. we're using an encoded source stream
|
||||
return line;
|
||||
}
|
||||
else {
|
||||
return new Buffer(line, chunkEncoding);
|
||||
}
|
||||
};
|
29
node_modules/byline/package.json
generated
vendored
Normal file
29
node_modules/byline/package.json
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"name": "byline",
|
||||
"description": "simple line-by-line stream reader",
|
||||
"homepage": "https://github.com/jahewson/node-byline",
|
||||
"bugs": {
|
||||
"url": "https://github.com/jahewson/node-byline/issues"
|
||||
},
|
||||
"version": "5.0.0",
|
||||
"author": "John Hewson",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/jahewson/node-byline"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"main": "./lib/byline.js",
|
||||
"files": [
|
||||
"lib"
|
||||
],
|
||||
"devDependencies": {
|
||||
"mocha": "~2.1.0",
|
||||
"request": "~2.27.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha -R spec --timeout 60000"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user