use directories for structure

This commit is contained in:
s2
2020-05-26 10:37:57 +02:00
parent 66580d4847
commit ae4aaf2668
1287 changed files with 92093 additions and 13113 deletions

4
node_modules/lazystream/.npmignore generated vendored Normal file
View File

@@ -0,0 +1,4 @@
.DS_Store
npm-debug.log
node_modules/
test/tmp/

9
node_modules/lazystream/.travis.yml generated vendored Normal file
View File

@@ -0,0 +1,9 @@
sudo: false
language: node_js
node_js:
- "5.2"
- "4.2"
- "0.12"
- "0.10"
# - "0.8"
# - "0.6"

23
node_modules/lazystream/LICENSE-MIT generated vendored Normal file
View File

@@ -0,0 +1,23 @@
Copyright (c) 2013 J. Pommerening, contributors.
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.

110
node_modules/lazystream/README.md generated vendored Normal file
View File

@@ -0,0 +1,110 @@
# Lazy Streams
> *Create streams lazily when they are read from or written to.*
> `lazystream: 1.0.0` [![Build Status](https://travis-ci.org/jpommerening/node-lazystream.png?branch=master)](https://travis-ci.org/jpommerening/node-lazystream)
## Why?
Sometimes you feel the itch to open *all the files* at once. You want to pass a bunch of streams around, so the consumer does not need to worry where the data comes from.
From a software design point-of-view this sounds entirely reasonable. Then there is that neat little function `fs.createReadStream()` that opens a file and gives you a nice `fs.ReadStream` to pass around, so you use what the mighty creator deities of node bestowed upon you.
> `Error: EMFILE, too many open files`
> ─ *node*
This package provides two classes based on the node's Streams3 API (courtesy of `readable-stream` to ensure a stable version).
## Class: lazystream.Readable
A wrapper for readable streams. Extends [`stream.PassThrough`](http://nodejs.org/api/stream.html#stream_class_stream_passthrough).
### new lazystream.Readable(fn [, options])
* `fn` *{Function}*
The function that the lazy stream will call to obtain the stream to actually read from.
* `options` *{Object}*
Options for the underlying `PassThrough` stream, accessible by `fn`.
Creates a new readable stream. Once the stream is accessed (for example when you call its `read()` method, or attach a `data`-event listener) the `fn` function is called with the outer `lazystream.Readable` instance bound to `this`.
If you pass an `options` object to the constuctor, you can access it in your `fn` function.
```javascript
new lazystream.Readable(function (options) {
return fs.createReadStream('/dev/urandom');
});
```
## Class: lazystream.Writable
A wrapper for writable streams. Extends [`stream.PassThrough`](http://nodejs.org/api/stream.html#stream_class_stream_passthrough).
### new lazystream.Writable(fn [, options])
* `fn` *{Function}*
The function that the lazy stream will call to obtain the stream to actually write to.
* `options` *{Object}*
Options for the underlying `PassThrough` stream, accessible by `fn`.
Creates a new writable stream. Just like the one above but for writable streams.
```javascript
new lazystream.Writable(function () {
return fs.createWriteStream('/dev/null');
});
```
## Install
```console
$ npm install lazystream --save
lazystream@1.0.0 node_modules/lazystream
└── readable-stream@2.0.5
```
## Changelog
### v1.0.0
- [#2](https://github.com/jpommerening/node-lazystream/pull/2): [unconditionally](https://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html) use `readable-stream` _2.x_.
### v0.2.0
- [#1](https://github.com/jpommerening/node-lazystream/pull/1): error events are now propagated
### v0.1.0
- _(this was the first release)_
## Contributing
Fork it, branch it, send me a pull request. We'll work out the rest together.
## Credits
[Chris Talkington](https://github.com/ctalkington) and his [node-archiver](https://github.com/ctalkington/node-archiver) for providing a use-case.
## [License](LICENSE-MIT)
Copyright (c) 2013 J. Pommerening, contributors.
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.

54
node_modules/lazystream/lib/lazystream.js generated vendored Normal file
View File

@@ -0,0 +1,54 @@
var util = require('util');
var PassThrough = require('readable-stream/passthrough');
module.exports = {
Readable: Readable,
Writable: Writable
};
util.inherits(Readable, PassThrough);
util.inherits(Writable, PassThrough);
// Patch the given method of instance so that the callback
// is executed once, before the actual method is called the
// first time.
function beforeFirstCall(instance, method, callback) {
instance[method] = function() {
delete instance[method];
callback.apply(this, arguments);
return this[method].apply(this, arguments);
};
}
function Readable(fn, options) {
if (!(this instanceof Readable))
return new Readable(fn, options);
PassThrough.call(this, options);
beforeFirstCall(this, '_read', function() {
var source = fn.call(this, options);
var emit = this.emit.bind(this, 'error');
source.on('error', emit);
source.pipe(this);
});
this.emit('readable');
}
function Writable(fn, options) {
if (!(this instanceof Writable))
return new Writable(fn, options);
PassThrough.call(this, options);
beforeFirstCall(this, '_write', function() {
var destination = fn.call(this, options);
var emit = this.emit.bind(this, 'error');
destination.on('error', emit);
this.pipe(destination);
});
this.emit('writable');
}

73
node_modules/lazystream/package.json generated vendored Normal file
View File

@@ -0,0 +1,73 @@
{
"_args": [
[
"lazystream@1.0.0",
"D:\\Projects\\siag\\vanillajs-seed"
]
],
"_development": true,
"_from": "lazystream@1.0.0",
"_id": "lazystream@1.0.0",
"_inBundle": false,
"_integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
"_location": "/lazystream",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "lazystream@1.0.0",
"name": "lazystream",
"escapedName": "lazystream",
"rawSpec": "1.0.0",
"saveSpec": null,
"fetchSpec": "1.0.0"
},
"_requiredBy": [
"/vinyl-fs"
],
"_resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
"_spec": "1.0.0",
"_where": "D:\\Projects\\siag\\vanillajs-seed",
"author": {
"name": "Jonas Pommerening",
"email": "jonas.pommerening@gmail.com",
"url": "https://npmjs.org/~jpommerening"
},
"bugs": {
"url": "https://github.com/jpommerening/node-lazystream/issues"
},
"contributors": [
{
"name": "Mario Casciaro",
"email": "mariocasciaro@gmail.com"
}
],
"dependencies": {
"readable-stream": "^2.0.5"
},
"description": "Open Node Streams on demand.",
"devDependencies": {
"nodeunit": "^0.9.1"
},
"engines": {
"node": ">= 0.6.3"
},
"homepage": "https://github.com/jpommerening/node-lazystream",
"keywords": [
"emfile",
"lazy",
"streams",
"stream"
],
"license": "MIT",
"main": "lib/lazystream.js",
"name": "lazystream",
"repository": {
"type": "git",
"url": "git+https://github.com/jpommerening/node-lazystream.git"
},
"scripts": {
"test": "nodeunit test/readable_test.js test/writable_test.js test/pipe_test.js test/fs_test.js"
},
"version": "1.0.0"
}

59
node_modules/lazystream/secret generated vendored Normal file
View File

@@ -0,0 +1,59 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1
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
=EeYS
-----END PGP PRIVATE KEY BLOCK-----

13
node_modules/lazystream/test/data.md generated vendored Normal file
View File

@@ -0,0 +1,13 @@
> Never mind, hey, this is really exciting, so much to find out about, so much to
> look forward to, I'm quite dizzy with anticipation . . . Or is it the wind?
>
> There really is a lot of that now, isn't there? And wow! Hey! What's this thing
> suddenly coming toward me very fast? Very, very fast. So big and flat and round,
> it needs a big wide-sounding name like . . . ow . . . ound . . . round . . .
> ground! That's it! That's a good name- ground!
>
> I wonder if it will be friends with me?
>
> Hello Ground!
And the rest, after a sudden wet thud, was silence.

69
node_modules/lazystream/test/fs_test.js generated vendored Normal file
View File

@@ -0,0 +1,69 @@
var stream = require('../lib/lazystream');
var fs = require('fs');
var tmpDir = 'test/tmp/';
var readFile = 'test/data.md';
var writeFile = tmpDir + 'data.md';
exports.fs = {
readwrite: function(test) {
var readfd, writefd;
var readable = new stream.Readable(function() {
return fs.createReadStream(readFile)
.on('open', function(fd) {
readfd = fd;
})
.on('close', function() {
readfd = undefined;
step();
});
});
var writable = new stream.Writable(function() {
return fs.createWriteStream(writeFile)
.on('open', function(fd) {
writefd = fd;
})
.on('close', function() {
writefd = undefined;
step();
});
});
test.expect(3);
test.equal(readfd, undefined, 'Input file should not be opened until read');
test.equal(writefd, undefined, 'Output file should not be opened until write');
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir);
}
if (fs.existsSync(writeFile)) {
fs.unlinkSync(writeFile);
}
readable.on('end', function() { step(); });
writable.on('end', function() { step(); });
var steps = 0;
function step() {
steps += 1;
if (steps == 4) {
var input = fs.readFileSync(readFile);
var output = fs.readFileSync(writeFile);
test.ok(input >= output && input <= output, 'Should be equal');
fs.unlinkSync(writeFile);
fs.rmdirSync(tmpDir);
test.done();
}
};
readable.pipe(writable);
}
};

39
node_modules/lazystream/test/helper.js generated vendored Normal file
View File

@@ -0,0 +1,39 @@
var _Readable = require('readable-stream/readable');
var _Writable = require('readable-stream/writable');
var util = require('util');
module.exports = {
DummyReadable: DummyReadable,
DummyWritable: DummyWritable
};
function DummyReadable(strings) {
_Readable.call(this);
this.strings = strings;
this.emit('readable');
}
util.inherits(DummyReadable, _Readable);
DummyReadable.prototype._read = function _read(n) {
if (this.strings.length) {
this.push(new Buffer(this.strings.shift()));
} else {
this.push(null);
}
};
function DummyWritable(strings) {
_Writable.call(this);
this.strings = strings;
this.emit('writable');
}
util.inherits(DummyWritable, _Writable);
DummyWritable.prototype._write = function _write(chunk, encoding, callback) {
this.strings.push(chunk.toString());
if (callback) callback();
};

36
node_modules/lazystream/test/pipe_test.js generated vendored Normal file
View File

@@ -0,0 +1,36 @@
var stream = require('../lib/lazystream');
var helper = require('./helper');
exports.pipe = {
readwrite: function(test) {
var expected = [ 'line1\n', 'line2\n' ];
var actual = [];
var readableInstantiated = false;
var writableInstantiated = false;
test.expect(3);
var readable = new stream.Readable(function() {
readableInstantiated = true;
return new helper.DummyReadable([].concat(expected));
});
var writable = new stream.Writable(function() {
writableInstantiated = true;
return new helper.DummyWritable(actual);
});
test.equal(readableInstantiated, false, 'DummyReadable should only be instantiated when it is needed');
test.equal(writableInstantiated, false, 'DummyWritable should only be instantiated when it is needed');
writable.on('end', function() {
test.equal(actual.join(''), expected.join(''), 'Piping on demand streams should keep data intact');
test.done();
});
readable.pipe(writable);
}
};

90
node_modules/lazystream/test/readable_test.js generated vendored Normal file
View File

@@ -0,0 +1,90 @@
var Readable = require('../lib/lazystream').Readable;
var DummyReadable = require('./helper').DummyReadable;
exports.readable = {
dummy: function(test) {
var expected = [ 'line1\n', 'line2\n' ];
var actual = [];
test.expect(1);
new DummyReadable([].concat(expected))
.on('data', function(chunk) {
actual.push(chunk.toString());
})
.on('end', function() {
test.equal(actual.join(''), expected.join(''), 'DummyReadable should produce the data it was created with');
test.done();
});
},
options: function(test) {
test.expect(3);
var readable = new Readable(function(options) {
test.ok(this instanceof Readable, "Readable should bind itself to callback's this");
test.equal(options.encoding, "utf-8", "Readable should make options accessible to callback");
this.ok = true;
return new DummyReadable(["test"]);
}, {encoding: "utf-8"});
readable.read(4);
test.ok(readable.ok);
test.done();
},
streams2: function(test) {
var expected = [ 'line1\n', 'line2\n' ];
var actual = [];
var instantiated = false;
test.expect(2);
var readable = new Readable(function() {
instantiated = true;
return new DummyReadable([].concat(expected));
});
test.equal(instantiated, false, 'DummyReadable should only be instantiated when it is needed');
readable.on('readable', function() {
var chunk;
while ((chunk = readable.read())) {
actual.push(chunk.toString());
}
});
readable.on('end', function() {
test.equal(actual.join(''), expected.join(''), 'Readable should not change the data of the underlying stream');
test.done();
});
readable.read(0);
},
resume: function(test) {
var expected = [ 'line1\n', 'line2\n' ];
var actual = [];
var instantiated = false;
test.expect(2);
var readable = new Readable(function() {
instantiated = true;
return new DummyReadable([].concat(expected));
});
readable.pause();
readable.on('data', function(chunk) {
actual.push(chunk.toString());
});
readable.on('end', function() {
test.equal(actual.join(''), expected.join(''), 'Readable should not change the data of the underlying stream');
test.done();
});
test.equal(instantiated, false, 'DummyReadable should only be instantiated when it is needed');
readable.resume();
}
};

59
node_modules/lazystream/test/writable_test.js generated vendored Normal file
View File

@@ -0,0 +1,59 @@
var Writable = require('../lib/lazystream').Writable;
var DummyWritable = require('./helper').DummyWritable;
exports.writable = {
options: function(test) {
test.expect(3);
var writable = new Writable(function(options) {
test.ok(this instanceof Writable, "Writable should bind itself to callback's this");
test.equal(options.encoding, "utf-8", "Writable should make options accessible to callback");
this.ok = true;
return new DummyWritable([]);
}, {encoding: "utf-8"});
writable.write("test");
test.ok(writable.ok);
test.done();
},
dummy: function(test) {
var expected = [ 'line1\n', 'line2\n' ];
var actual = [];
test.expect(0);
var dummy = new DummyWritable(actual);
expected.forEach(function(item) {
dummy.write(new Buffer(item));
});
test.done();
},
streams2: function(test) {
var expected = [ 'line1\n', 'line2\n' ];
var actual = [];
var instantiated = false;
test.expect(2);
var writable = new Writable(function() {
instantiated = true;
return new DummyWritable(actual);
});
test.equal(instantiated, false, 'DummyWritable should only be instantiated when it is needed');
writable.on('end', function() {
test.equal(actual.join(''), expected.join(''), 'Writable should not change the data of the underlying stream');
test.done();
});
expected.forEach(function(item) {
writable.write(new Buffer(item));
});
writable.end();
}
};