first commit

This commit is contained in:
s.golasch
2023-08-01 13:49:46 +02:00
commit 1fc239fd54
20238 changed files with 3112246 additions and 0 deletions

369
build/node_modules/vinyl-fs/CHANGELOG.md generated vendored Normal file
View File

@@ -0,0 +1,369 @@
## Change Log
### v2.4.2 (2016/03/03 19:59 +00:00)
- [5edb75a](https://github.com/gulpjs/vinyl-fs/commit/5edb75a10935fdc89e29d5e2413694aca77a3e85) 2.4.2 (@phated)
- [f445987](https://github.com/gulpjs/vinyl-fs/commit/f445987ce905659e62dcb27a8ad69f4ed2fb8198) upgrade glob-stream and remove path.normalize workaround (@phated)
### v2.4.1 (2016/03/02 20:53 +00:00)
- [caac041](https://github.com/gulpjs/vinyl-fs/commit/caac041836436577d52468d32b9844c00d666265) 2.4.1 (@phated)
- [#154](https://github.com/gulpjs/vinyl-fs/pull/154) Don't pass `read` option from `src` to `through2` (@erikkemperman)
### v2.4.0 (2016/03/01 22:40 +00:00)
- [926a9ad](https://github.com/gulpjs/vinyl-fs/commit/926a9ad3cf40d133120eb6f90d26234dc9f00138) 2.4.0 (@phated)
- [#160](https://github.com/gulpjs/vinyl-fs/pull/160) Allow specify dest sourcemaps option as string (@TrySound)
- [ebaffbe](https://github.com/gulpjs/vinyl-fs/commit/ebaffbecd642d3f8dd7d6edd6a19a1e768e7d2d1) Upgrade documentation (@TrySound)
- [7a0c94a](https://github.com/gulpjs/vinyl-fs/commit/7a0c94ae97de5e46392efe9a08ee3c68885dd7ba) Allow specify dest sourcemaps option as string (@TrySound)
### v2.3.4 (2016/02/26 21:48 +00:00)
- [cd8a992](https://github.com/gulpjs/vinyl-fs/commit/cd8a992294228eea1d08957efc823794baa48fba) 2.3.4 (@phated)
- [8b50f49](https://github.com/gulpjs/vinyl-fs/commit/8b50f495c9b782d2afc64b38c0b7181a21c20b62) revert string handling from previous release, add support for SlowBuffer support (@phated)
### v2.3.3 (2016/02/26 20:08 +00:00)
- [a75feda](https://github.com/gulpjs/vinyl-fs/commit/a75feda20131177a8f5a5008483f24169d0b3df3) 2.3.3 (@phated)
- [165149c](https://github.com/gulpjs/vinyl-fs/commit/165149c6a676ac867933173db28300cf3bab2a5f) support strings in writeFile (@phated)
- [3b67921](https://github.com/gulpjs/vinyl-fs/commit/3b67921fe5ddd925fc12acef2bd03777b0081dc3) Don't pass `read` option from `src` to `through2` (@erikkemperman)
- [5918841](https://github.com/gulpjs/vinyl-fs/commit/5918841bbd2c5256413b86c000e28ac3fff516e7) update changelog (@phated)
### v2.3.2 (2016/02/26 01:17 +00:00)
- [6ed1793](https://github.com/gulpjs/vinyl-fs/commit/6ed179380da7caa4e3506f78b8864ea59164992e) 2.3.2 (@phated)
- [#151](https://github.com/gulpjs/vinyl-fs/pull/151) Feature metadata refactor (@gulpjs)
- [0cd8f22](https://github.com/gulpjs/vinyl-fs/commit/0cd8f2229d7788477a3fa2613dbf93e019503198) add docs for changes (@phated)
- [8d55978](https://github.com/gulpjs/vinyl-fs/commit/8d55978c3640ac25db8331ac4d7314579eb04da9) skip broken tests that were not testing the right thing (@phated)
- [550edd5](https://github.com/gulpjs/vinyl-fs/commit/550edd56f555240c36068ad060b2136213b135f6) test on latest node 4 instead of old ones (@phated)
- [6f4c2eb](https://github.com/gulpjs/vinyl-fs/commit/6f4c2eb396b78a91dcf41f5063eee27b66b35fe0) `sourcemaps` is not a valid option to gulp-sourcemaps (@phated)
- [011320b](https://github.com/gulpjs/vinyl-fs/commit/011320b1f988ecd7846ef04f7a597ee4b25d7285) add appveyor to test on windows & get tests to actually pass (@phated)
- [84cf3c2](https://github.com/gulpjs/vinyl-fs/commit/84cf3c2e1901bd700c089edac06ce0c75f8e701d) refactor and lots of tests for updating of metadata (@phated)
- [90a1189](https://github.com/gulpjs/vinyl-fs/commit/90a11894472d29abe9e34b80df0dfab9907f11e7) Make the tests pass again, some more refactoring of metadata handling (@erikkemperman)
- [35e9b3a](https://github.com/gulpjs/vinyl-fs/commit/35e9b3a68907167b51fa31edd0701ae24915fd84) Use filedescriptors where possible, refactor handling of stats metadata in dest (@piranna)
- [#150](https://github.com/gulpjs/vinyl-fs/pull/150) Update license year from initial date of release to current (@pra85)
- [ec48559](https://github.com/gulpjs/vinyl-fs/commit/ec485592d7a96562acc97ccd8b39a12cf17ed319) Update license year from initial date of release to current (@pra85)
- [#149](https://github.com/gulpjs/vinyl-fs/pull/149) chore: add NPM script for changelog (@T1st3)
- [0010bd3](https://github.com/gulpjs/vinyl-fs/commit/0010bd3b3c49e7b60e0d69dacdd8fd1b87a6c3dd) chore: add NPM script for changelog (@t1st3)
- [#148](https://github.com/gulpjs/vinyl-fs/pull/148) docs: add CHANGELOG.md (@T1st3)
- [da4cd0b](https://github.com/gulpjs/vinyl-fs/commit/da4cd0b449f8e9bd4bd0842fe2eb2b4eceea6c0b) docs: add changelog (@t1st3)
### v2.3.1 (2016/01/14 09:13 +00:00)
- [7d2fcba](https://github.com/gulpjs/vinyl-fs/commit/7d2fcbaa49c78087fa975a4183fee38d422b9d4a) 2.3.1
- [#145](https://github.com/gulpjs/vinyl-fs/pull/145) Allow things to listen for data or readable events and avoid sinking in those cases (@gulpjs)
- [a7fae5a](https://github.com/gulpjs/vinyl-fs/commit/a7fae5a2e2f349237614fc3cb3f371b6f10f5df3) keep style consistent
- [1b02a46](https://github.com/gulpjs/vinyl-fs/commit/1b02a46aff9650afbfdf36aea386d177508d45fa) more updates, nextTick the removable of listeners in tests
- [3a0cf5b](https://github.com/gulpjs/vinyl-fs/commit/3a0cf5b098d4a4f2f407f7622cbccc4b29ddbf0e) DRY up listenerCount check
- [dcfc8b8](https://github.com/gulpjs/vinyl-fs/commit/dcfc8b8b2e93486703449960a69fef87b495a7e9) new sink removal impl
- [8cec809](https://github.com/gulpjs/vinyl-fs/commit/8cec80998516b20a6fc43c3e865b588a34236899) more tests, better tests
- [5167080](https://github.com/gulpjs/vinyl-fs/commit/5167080b13bfecd307da3b04be3b1892a9e8996c) harden event handling
- [ef0b8e0](https://github.com/gulpjs/vinyl-fs/commit/ef0b8e043eb3c3ff72f09d7597b4ae9ed105ba6d) Fix sink from preventing the readable event to fire on the underlying stream (@benurb)
### v2.3.0 (2016/01/12 01:46 +00:00)
- [941b040](https://github.com/gulpjs/vinyl-fs/commit/941b040905616eb0408a44213d5efe010388cb9d) 2.3.0
- [#121](https://github.com/gulpjs/vinyl-fs/pull/121) Fix file descriptor exhaustion when streaming many files (@Klowner)
- [1f3af33](https://github.com/gulpjs/vinyl-fs/commit/1f3af33b1693b07fa2af5ed325ba8f0c0380b5f0) Add test for unbuffered file descriptor exhaustion issue (@Klowner)
- [38b032c](https://github.com/gulpjs/vinyl-fs/commit/38b032cd9b481a1c16d88f1b7968dd51c6a5ed15) Add 20 second timeout to dest's afterEach wipeOut task (@Klowner)
- [c63a797](https://github.com/gulpjs/vinyl-fs/commit/c63a79749a4b2ea500c519e1be5e073a87e4b940) Use lazystream for streamFile to avoid fd exhaustion (@Klowner)
- [00ece7e](https://github.com/gulpjs/vinyl-fs/commit/00ece7ef6b794fd1999695fde2d88bba8d69f5d0) avoid else-if and isFatal variable
- [6b9912e](https://github.com/gulpjs/vinyl-fs/commit/6b9912e14a3a7504bbba9d176c04b35e69208b64) get max statements warning for future cleanup
- [a2be0d6](https://github.com/gulpjs/vinyl-fs/commit/a2be0d69de86af9e09ab1193b740d1a0736009fc) ESLint and JSCS plus fixup (@pdehaan)
- [24119a8](https://github.com/gulpjs/vinyl-fs/commit/24119a862ad062f39ed15db767feff459843c2d8) Rework writeStream to prevent issue with futimes (@Klowner)
- [17ef52e](https://github.com/gulpjs/vinyl-fs/commit/17ef52ec014ea6a72abda35d104e92786904f92b) Add test for streaming with buffering disabled (@Klowner)
- [6934485](https://github.com/gulpjs/vinyl-fs/commit/69344858edb85e7c904621fa5d45782aa9825878) drastically improve docs
- [80add99](https://github.com/gulpjs/vinyl-fs/commit/80add99101bd41f5161ff90c8b4a9b3ba496c73d) big timeout for slow node
- [d553e74](https://github.com/gulpjs/vinyl-fs/commit/d553e7474ebb65b89e496dfc3916292b59eec4c2) Send options to through2 (@vineethawal)
- [#134](https://github.com/gulpjs/vinyl-fs/pull/134) Make tests ignore gid (@gulpjs)
- [e33b632](https://github.com/gulpjs/vinyl-fs/commit/e33b632ffb139599922bc414f76e4c5b81c82f70) adjust realMode method to avoid gid in the parse - fixes #103
- [4adb4d9](https://github.com/gulpjs/vinyl-fs/commit/4adb4d9d35a148d0c2507a5f06946951b54d443e) setgid on test directory - make travis fail as per #103
- [#130](https://github.com/gulpjs/vinyl-fs/pull/130) #129 - Update documentation to more clearly explain what happens for default base option values. (@treshugart)
- [#126](https://github.com/gulpjs/vinyl-fs/pull/126) read from the stream once we finish processing a file, this avoids highWaterMark being hit - add test (@gulpjs)
- [df97b14](https://github.com/gulpjs/vinyl-fs/commit/df97b1482200e7bc5dd01a49f0bdedeed2b6bd08) sink the saveStream on nextTick to start flowing and avoid highWaterMark - add tests
- [#133](https://github.com/gulpjs/vinyl-fs/pull/133) fix TypeError when the dest sourcemaps option is a boolean (@chocolateboy)
- [df874af](https://github.com/gulpjs/vinyl-fs/commit/df874af6c3dce1b8f008230b06f3ef9ef0e30d1a) add test for the boolean (true) source-map option (@chocolateboy)
- [6ab48dd](https://github.com/gulpjs/vinyl-fs/commit/6ab48dd66899141d1c8e7f14e1ccb1ccc62c261e) fix TypeError when the dest sourcemaps option is a boolean (@chocolateboy)
- [edb9caa](https://github.com/gulpjs/vinyl-fs/commit/edb9caa91e57690ddaace09aafb863f5bbac3ed8) #129 - Update documentation to more clearly explain what happens for default base option values. (@treshugart)
- [#125](https://github.com/gulpjs/vinyl-fs/pull/125) Use `fs.futimes` to retain sub-second precision in `atime` and `mtime` (@erikkemperman)
- [e3849f2](https://github.com/gulpjs/vinyl-fs/commit/e3849f2a19fa967842506fe4d34eeb8f6565464b) Use `fs.futimes` to retain sub-second precision in `atime` and `mtime` (@erikkemperman)
- [be8d1fd](https://github.com/gulpjs/vinyl-fs/commit/be8d1fd878ae2c6332851aa15a669a1cd128c6cb) guarantee 5.2.0 glob-stream and update test
- [#119](https://github.com/gulpjs/vinyl-fs/pull/119) Check if `atime` Date object is invalid and set a new one explicitly (@NodeOS)
- [#122](https://github.com/gulpjs/vinyl-fs/pull/122) Change writeStream callbacks from cb to complete (@Klowner)
- [8f93a48](https://github.com/gulpjs/vinyl-fs/commit/8f93a48c98ff75bab09bed47b989c9c1dbb5aaa0) Change writeStream callbacks from cb to complete (@Klowner)
- [f575377](https://github.com/gulpjs/vinyl-fs/commit/f5753770962df157023e37dfadca2dcce6aa18b5) Check if `atime` Date object is invalid and set a new one explicitly (@piranna)
### v2.2.1 (2015/10/20 01:06 +00:00)
- [a28ba42](https://github.com/gulpjs/vinyl-fs/commit/a28ba42d87eeaecc2ae3de9174270019fab76fe3) 2.2.1
- [7f539dd](https://github.com/gulpjs/vinyl-fs/commit/7f539dd562e501e904ab6401892f6f4c68a4da25) simplify utimes helper
- [c2beec8](https://github.com/gulpjs/vinyl-fs/commit/c2beec86ddab2ef51a3a6fa7077907c74d1eadd7) fix tests for invalid dates
- [97ff9ce](https://github.com/gulpjs/vinyl-fs/commit/97ff9ce60efba49a3d6cafcece3c9dce95aa670a) Test for invalid atime and mtime (@piranna)
- [624d7f5](https://github.com/gulpjs/vinyl-fs/commit/624d7f59090a4ae8e7e5c83178b199e13973c635) [Fix] Ignore atime and mtime if they are invalid (@piranna)
### v2.2.0 (2015/10/16 02:02 +00:00)
- [bf7edd3](https://github.com/gulpjs/vinyl-fs/commit/bf7edd37cb0207951b75879d4e07402c51ac8770) 2.2.0
- [039d689](https://github.com/gulpjs/vinyl-fs/commit/039d68920cc5bde6f0f12375daee2713260a1ecf) make tests pass
- [6f36372](https://github.com/gulpjs/vinyl-fs/commit/6f36372b9d0b0bf10087b3ac863f858b15e54bb9) Test for vynil stat not modified (FAIL) (@piranna)
- [dbc606b](https://github.com/gulpjs/vinyl-fs/commit/dbc606bb091008215fd586e4a1eee6ec8bdb22d3) Don't modify vynil stat when atime is not defined (@piranna)
- [573b8b6](https://github.com/gulpjs/vinyl-fs/commit/573b8b656032e1b486f7e4bca9f5916ceb6def54) Tests for atime and mtime (@piranna)
- [d7a53d5](https://github.com/gulpjs/vinyl-fs/commit/d7a53d5f557c23aa26d9d5d179645288204a6faa) Style improvements (@piranna)
- [9237100](https://github.com/gulpjs/vinyl-fs/commit/92371008a2bafa74ba87450b57578d0ace17b194) Fix mtime test to 1 second resolution as Node.js does (@piranna)
- [801da1c](https://github.com/gulpjs/vinyl-fs/commit/801da1c04696736df9c9c2ad47645faadab970d2) Test for mtime (fail on second decimals) (@piranna)
- [def6815](https://github.com/gulpjs/vinyl-fs/commit/def68150d0e42ad870afe314cd3b7cea760e9c48) Updated style & made utility function (@piranna)
- [d55fd11](https://github.com/gulpjs/vinyl-fs/commit/d55fd119718a3166cf3f76362a896bfa8e91427d) Made atime optional ("cpio" don't have it, and sometimes "tar" too) (@piranna)
- [9a10c15](https://github.com/gulpjs/vinyl-fs/commit/9a10c15aeb1ef3f0b3c1e39c7c7c94f5295449d2) Set utimes of files if they are provided (@piranna)
- [#108](https://github.com/gulpjs/vinyl-fs/pull/108) Fix links, spacing in README (@moshen)
- [c603138](https://github.com/gulpjs/vinyl-fs/commit/c603138077df416cf7892f82a2e3a91daa3456fd) Fix links, spacing in README (@moshen)
- [#105](https://github.com/gulpjs/vinyl-fs/pull/105) updated to test on nodejs 4 (@ckross01)
- [3148943](https://github.com/gulpjs/vinyl-fs/commit/3148943032a834ad1c82c951576e735d4824d6f0) updated to test on nodejs 4 (@ckross01)
- [#102](https://github.com/gulpjs/vinyl-fs/pull/102) Update tests to 'strict mode' (@OnkelTem)
- [85c1286](https://github.com/gulpjs/vinyl-fs/commit/85c128604b521d2e465f1e78548d128c95f4719c) Update tests to 'strict mode' (@OnkelTem)
### v2.1.1 (2015/09/28 09:55 +00:00)
- [812c696](https://github.com/gulpjs/vinyl-fs/commit/812c696709a16f0de2e06e03b5fe41a45fbfe4f2) 2.1.1 (@contra)
- [0a4caf6](https://github.com/gulpjs/vinyl-fs/commit/0a4caf61f5745e3a0f368be9d285d006fd7cbf4c) more elegant sourcemap handling, more docs (@contra)
- [0ac5a2c](https://github.com/gulpjs/vinyl-fs/commit/0ac5a2cb072111917e561c655441aa10a8ee1718) only pass buffer files to sourcemaps (@contra)
### v2.1.0 (2015/09/27 22:01 +00:00)
- [dbf2a25](https://github.com/gulpjs/vinyl-fs/commit/dbf2a25dc9273e1d5bfa592e6b8564d245294e55) 2.1.0 (@contra)
- [#100](https://github.com/gulpjs/vinyl-fs/pull/100) allow a function to be used as value for the overwrite option - closes #68 (@gulpjs)
- [#99](https://github.com/gulpjs/vinyl-fs/pull/99) add option to strip BOM, default to true - closes #83 (@gulpjs)
- [b966d51](https://github.com/gulpjs/vinyl-fs/commit/b966d517906116021b5cec4ab7d41bbe8dd23168) update docs
- [13c853a](https://github.com/gulpjs/vinyl-fs/commit/13c853a1ae0a829f0fd33347ed791f9b92593d18) allow a function to be used as value for the overwrite option - closes #68
- [870551c](https://github.com/gulpjs/vinyl-fs/commit/870551c43d69547accd4b4918142b06926f20e99) add option to strip BOM, default to true - closes #83
- [50c9e33](https://github.com/gulpjs/vinyl-fs/commit/50c9e33149a7f365d039cd0115526c79145a5534) more sourcemaps docs (@contra)
### v2.0.0 (2015/09/25 22:43 +00:00)
- [de7bf7b](https://github.com/gulpjs/vinyl-fs/commit/de7bf7ba79acf33610d8d8e58626dc39d8ed2611) 2.0.0 (@contra)
- [59620dc](https://github.com/gulpjs/vinyl-fs/commit/59620dce078d0a458d96ba0c82416f24b82cb95f) update vinyl (@contra)
### v1.0.0 (2015/03/01 23:10 +00:00)
- [db025fe](https://github.com/gulpjs/vinyl-fs/commit/db025fe85b190414b28512c1f5ef08662564d4eb) 1.0.0 (@contra)
- [c7195ed](https://github.com/gulpjs/vinyl-fs/commit/c7195ed3a7c93b5206ba9a1035e84da479888f4e) 1.0.0 (@contra)
- [4a70dd6](https://github.com/gulpjs/vinyl-fs/commit/4a70dd63386db8abfeeb985630406e1a39f776a5) update dep, remove engineStrict (@contra)
- [#59](https://github.com/gulpjs/vinyl-fs/pull/59) Implemented `overwrite` option in `dest()` (@derekslife)
- [c4750b2](https://github.com/gulpjs/vinyl-fs/commit/c4750b2efccd840e4ae840dc55b01cb7051f2f48) Encapsulated error filtering logic into `isErrorFatal` func (@derekslife)
- [32fc5c8](https://github.com/gulpjs/vinyl-fs/commit/32fc5c805ec6209c3d2145036ff2eabff79845be) Updated docs for `overwrite` option (@derekslife)
- [5572793](https://github.com/gulpjs/vinyl-fs/commit/5572793954b63e1ec00983bad716af01e02476ef) Implemented `overwrite` option in `dest()` (@derekslife)
- [2dfe290](https://github.com/gulpjs/vinyl-fs/commit/2dfe2901cc329f5db86d0f2272d4292a2078d5a3) update watch to fix a bug with .remove (@contra)
- [#57](https://github.com/gulpjs/vinyl-fs/pull/57) Follow symlinks (@valeriangalliat)
- [a4ea945](https://github.com/gulpjs/vinyl-fs/commit/a4ea945cf04660fc007266c87caa43d345a5b1bc) Follow symlinks (@valeriangalliat)
- [041de1b](https://github.com/gulpjs/vinyl-fs/commit/041de1b6f20434a7bd6146fdf0a3425dfe301f96) update should (@contra)
- [#55](https://github.com/gulpjs/vinyl-fs/pull/55) Add `passthrough` option, fixes #25, fixes gulpjs/gulp#840 (@UltCombo)
- [972c8ad](https://github.com/gulpjs/vinyl-fs/commit/972c8ad3ac377ff7b4a03edeb04f52409d383dd4) Code style (@UltCombo)
- [b9629ea](https://github.com/gulpjs/vinyl-fs/commit/b9629ea6e9b9b797b518ab8192f4a2ec446ea325) Add `passthrough` option, fixes #25, fixes gulpjs/gulp#840 (@UltCombo)
- [318a983](https://github.com/gulpjs/vinyl-fs/commit/318a983832408ddc5500b27cfcb8c5cb07c8af11) new glob-watcher (@contra)
- [#53](https://github.com/gulpjs/vinyl-fs/pull/53) Remove unnecessary `coveralls` from devDependencies (@shinnn)
- [1ccdc53](https://github.com/gulpjs/vinyl-fs/commit/1ccdc53e22e2449a8b1f9fdc9dfbe7cd526f1dec) remove unnecessary `coveralls` from devDeps (@shinnn)
- [#52](https://github.com/gulpjs/vinyl-fs/pull/52) Update dotfiles and readme (@shinnn)
- [87c36ed](https://github.com/gulpjs/vinyl-fs/commit/87c36ede9da5e1508e62a984da4ebc9c8412f6d2) introduce istanbul-coveralls (@shinnn)
- [fb1a0fa](https://github.com/gulpjs/vinyl-fs/commit/fb1a0fa6bf4028f54629014f89fee0dd148945b6) use sag badges instead of png badges (@shinnn)
- [5e1b24b](https://github.com/gulpjs/vinyl-fs/commit/5e1b24b4d2a811a02ae7b6449d4f0de778bbe4ef) update dotfiles (@shinnn)
- [96c721f](https://github.com/gulpjs/vinyl-fs/commit/96c721f07b59964849b15d737ab8abaf52377312) clean up empty object allocation (@contra)
- [6e97447](https://github.com/gulpjs/vinyl-fs/commit/6e97447dab806b1da7df52d9d4da337d49fe71cb) logic consolidation (@contra)
- [6f8f045](https://github.com/gulpjs/vinyl-fs/commit/6f8f0459e51fe4c1065a0e693fbcdc26776b6e78) more style normalization (@contra)
- [141ff43](https://github.com/gulpjs/vinyl-fs/commit/141ff43302dec6535d086cf27d538530161952c5) style normalization (@contra)
- [500f5cf](https://github.com/gulpjs/vinyl-fs/commit/500f5cf9100256db5ea2d180773385bacaca251e) logic cleanups (@contra)
- [f081c21](https://github.com/gulpjs/vinyl-fs/commit/f081c21cb264164fee8896056bd0337f734c1904) code cleanups in dest logic (@contra)
- [2692230](https://github.com/gulpjs/vinyl-fs/commit/269223036d24fe700dba8b5b9f04ad4023eadb2a) fix dest memory leak when writing streams (@contra)
- [3d2c6c0](https://github.com/gulpjs/vinyl-fs/commit/3d2c6c0350407b3b98c7d2e7950f999f3832b2de) report errors preparing write on symlinks (@contra)
- [4481668](https://github.com/gulpjs/vinyl-fs/commit/448166864ba6c973055eb205575c3e392cf0f39a) add dirMode param to dest and symlink, closes #36 (@contra)
- [#49](https://github.com/gulpjs/vinyl-fs/pull/49) Add symlink support (Fixes #42) (@JonAbrams)
- [558f374](https://github.com/gulpjs/vinyl-fs/commit/558f3744489d5e671f4172453b24ba62bfd9b102) new glob ordering (@contra)
- [5876564](https://github.com/gulpjs/vinyl-fs/commit/587656487d7cd8a56cadd57d311d28af820377a0) Match function to prepareWrite.js filename (@JonAbrams)
- [21d7528](https://github.com/gulpjs/vinyl-fs/commit/21d7528f04afbc88529a69e81e4c64823edbbfe9) Move and rename to prepareWrite.js (@JonAbrams)
- [b447d5e](https://github.com/gulpjs/vinyl-fs/commit/b447d5ea22bbd9a54bcdceccac8e94c0bd0e18e7) Fix jshint warnings (@JonAbrams)
- [15af3e5](https://github.com/gulpjs/vinyl-fs/commit/15af3e58512c2cdfb00fcc6f8850cfffa69ef431) De-dup common code between dest + symlink (#42) (@JonAbrams)
- [4392605](https://github.com/gulpjs/vinyl-fs/commit/439260503481296ac8f3482ee901434fd7e3969e) Add symlink support (Fixes #42) (@JonAbrams)
- [#47](https://github.com/gulpjs/vinyl-fs/pull/47) option.since implementation (@doowb)
- [8cca620](https://github.com/gulpjs/vinyl-fs/commit/8cca62066c07ce4cc75f390aeb523c228cd887c3) updates per @contra (@doowb)
- [cec31c6](https://github.com/gulpjs/vinyl-fs/commit/cec31c66d03c0e9c57b6e7223ea2e1029b0b5110) docs (@doowb)
- [3d440b3](https://github.com/gulpjs/vinyl-fs/commit/3d440b3dfe745261239071335b3839a8a12460b7) check for instance of Date (@doowb)
- [44cc193](https://github.com/gulpjs/vinyl-fs/commit/44cc193a9984a012f93082fa940516ad6249023f) since implementation (@doowb)
- [#44](https://github.com/gulpjs/vinyl-fs/pull/44) Swap defaults dependency with object-assign. (@ben-eb)
- [c07074c](https://github.com/gulpjs/vinyl-fs/commit/c07074c835cae9361973c1046a3f0522565a919d) Swap defaults dep with object-assign. (@ben-eb)
### v0.3.14 (2015/09/21 23:57 +00:00)
- [5b056f6](https://github.com/gulpjs/vinyl-fs/commit/5b056f66c476ff32687c172d5fe79eaf47b2e80e) update object-assign dep (@contra)
- [27983ef](https://github.com/gulpjs/vinyl-fs/commit/27983ef0114ceb16abd82a5c47557cb0be95ae62) merge (@contra)
- [7ca959e](https://github.com/gulpjs/vinyl-fs/commit/7ca959e8ac89034e0e09714da76eb06b7b55d61c) remove watch #92 (@contra)
- [#90](https://github.com/gulpjs/vinyl-fs/pull/90) Updated merge-stream version to 1.0.0 (@davidbarrows)
- [22e5e13](https://github.com/gulpjs/vinyl-fs/commit/22e5e13f8edf399cf286f5d908a1bd6766308408) Updated merge-stream version to 1.0.0 (@davidbarrows)
- [#88](https://github.com/gulpjs/vinyl-fs/pull/88) fix wrong event name in README.md (@kketch)
- [65445ec](https://github.com/gulpjs/vinyl-fs/commit/65445ec16f1546b268c6a66c2ee798baa94883c8) fix wrong event name in README.md (@kketch)
- [#85](https://github.com/gulpjs/vinyl-fs/pull/85) Add symlink passthrough with `followSymlinks` (@Klowner)
- [9f5f6e8](https://github.com/gulpjs/vinyl-fs/commit/9f5f6e8770b4e1364381bfdc832a1c4aacd68274) Add symlink copy with `followSymlinks` option (@Klowner)
- [#82](https://github.com/gulpjs/vinyl-fs/pull/82) symlink opt.base should be the same as dest (@stevemao)
- [0b3eed2](https://github.com/gulpjs/vinyl-fs/commit/0b3eed2d84a7b8c134b990a2234916b24e54906b) symlink opt.base should be the same as dest (@stevemao)
- [3e2a5ef](https://github.com/gulpjs/vinyl-fs/commit/3e2a5ef63c98b9ef44b3d05cdc6c03bdb9c2392b) base can be a function now, also add better error messaging. closes #78 (@contra)
- [#81](https://github.com/gulpjs/vinyl-fs/pull/81) use valid semver range for `engine` (@silverwind)
- [69090c4](https://github.com/gulpjs/vinyl-fs/commit/69090c41d79bcb7c492fab6c4ac1a7788a0e8dc7) use valid semver range for `engine` (@silverwind)
- [65090b8](https://github.com/gulpjs/vinyl-fs/commit/65090b81b98c8ed80fda247495d8015701d62813) Merge branch 'master' of https://github.com/wearefractal/vinyl-fs (@contra)
- [b481130](https://github.com/gulpjs/vinyl-fs/commit/b48113066f04fa5a240770132fbf1e57af12687c) fix filter-since (@contra)
- [#79](https://github.com/gulpjs/vinyl-fs/pull/79) add missing test for f7516ebac102104ad0f39437f7739bf5aedec165 (@stevemao)
- [8e8135c](https://github.com/gulpjs/vinyl-fs/commit/8e8135c3f99c4669129295e65b54581c45535191) update vinyl-filter-since (@contra)
- [cb86d86](https://github.com/gulpjs/vinyl-fs/commit/cb86d86deefa593f3099d2494e06cbc59b69e9bc) add missing test for f7516ebac102104ad0f39437f7739bf5aedec165 (@stevemao)
- [a8161c8](https://github.com/gulpjs/vinyl-fs/commit/a8161c87f38d465497c63ec3158f0f033868b60b) update vinyl filter since (@contra)
- [99db7de](https://github.com/gulpjs/vinyl-fs/commit/99db7de8f0485c5ca158c79126b53b8fdab9d821) add sourcemaps to dest, clear up some dead src code now that empty arrays arent valid globs, dep updates (@contra)
- [d32876f](https://github.com/gulpjs/vinyl-fs/commit/d32876f8df5a8a28f71b476ae907644ab5d35c07) update deps (@contra)
- [#77](https://github.com/gulpjs/vinyl-fs/pull/77) Improvements (@stevemao)
- [f7516eb](https://github.com/gulpjs/vinyl-fs/commit/f7516ebac102104ad0f39437f7739bf5aedec165) Expose `options.base` for `dest` (@stevemao)
- [435c401](https://github.com/gulpjs/vinyl-fs/commit/435c40193acebdaca62a9d688ceec5875b1ece15) test on iojs and 0.12 (@stevemao)
- [a3b1aa6](https://github.com/gulpjs/vinyl-fs/commit/a3b1aa6d5446760bf18de77ebf2aa199bef9f9b0) Make readme more consistent (@stevemao)
- [#75](https://github.com/gulpjs/vinyl-fs/pull/75) Fix default option in README (@stevemao)
- [a0820f4](https://github.com/gulpjs/vinyl-fs/commit/a0820f4ec4737ab826999cde2dda6ee0dae2db03) Fix default option in README (@stevemao)
- [812d0e6](https://github.com/gulpjs/vinyl-fs/commit/812d0e6ef55ac7ecd6e7dc83ef6f58e324837354) add new glob tests, empty string is a failing glob now. https://github.com/google/material-design-lite/issues/790 (@contra)
- [1b7322d](https://github.com/gulpjs/vinyl-fs/commit/1b7322d800008095596da9472801a2ddabcdf938) Merge branch 'master' of https://github.com/wearefractal/vinyl-fs (@contra)
- [5af3ed8](https://github.com/gulpjs/vinyl-fs/commit/5af3ed844d4dac6a84cf836aa09373ad2d3193dd) fix dir symlinks on windows, closes #74 (@contra)
- [#73](https://github.com/gulpjs/vinyl-fs/pull/73) using is-valid-glob module to handle nested arrays properly (@doowb)
- [0a6bcb1](https://github.com/gulpjs/vinyl-fs/commit/0a6bcb15067f2ac0b534d17c0f66aa9616c2bd54) using is-valid-glob module to handle nested arrays properly (@doowb)
- [baf97e1](https://github.com/gulpjs/vinyl-fs/commit/baf97e1f66caa4f1a9f9630620233c8c927f7509) passing options through to readers is still a good idea, so not a full revert. #72 (@contra)
- [f6ead3c](https://github.com/gulpjs/vinyl-fs/commit/f6ead3cec64c27a86f2a2e497d75e8a4f235339c) remove stripBOM flag, document BOM stripping. #72 (@contra)
- [#71](https://github.com/gulpjs/vinyl-fs/pull/71) Update vinyl to 0.5.x (@lijunle)
- [3a44b5d](https://github.com/gulpjs/vinyl-fs/commit/3a44b5da290c1d0279381a4d13f8816bc2ebb014) Update vinyl to 0.5.x (@lijunle)
- [#69](https://github.com/gulpjs/vinyl-fs/pull/69) update license attribute (@pgilad)
- [23640fd](https://github.com/gulpjs/vinyl-fs/commit/23640fde7378465625b2e0579bb661c7501b0e04) update license attribute (@pgilad)
- [60685eb](https://github.com/gulpjs/vinyl-fs/commit/60685eb89e57f61c4462855532f43d75f0a616db) fix problem where you couldnt catch singular glob errors. add sourcemaps into src (@contra)
- [12dec99](https://github.com/gulpjs/vinyl-fs/commit/12dec99a99af362ddfa2a0f7af7a39063803f182) dep updates (@contra)
- [#63](https://github.com/gulpjs/vinyl-fs/pull/63) export `filterSince` to `vinyl-filter-since` (@tunnckoCore)
- [9bbf989](https://github.com/gulpjs/vinyl-fs/commit/9bbf989151a912307686d36dc6ee4ef01cdbd38f) bump to `vinyl-filter-since@v2` (@tunnckoCore)
- [1a788e8](https://github.com/gulpjs/vinyl-fs/commit/1a788e826951939e81ab1a2505f2aaf2a9cde264) Merge github.com:wearefractal/vinyl-fs (@tunnckoCore)
- [#65](https://github.com/gulpjs/vinyl-fs/pull/65) Remove realMode equality test on special bit test (@Meroje)
- [627ace7](https://github.com/gulpjs/vinyl-fs/commit/627ace7702895c35f313d439c357e6387961d05a) Remove realMode equality test on special bit test (@Meroje)
- [fd9388d](https://github.com/gulpjs/vinyl-fs/commit/fd9388db1a15afe1e3c748d3859ab969c34ba1db) merge in blaines changes (@contra)
- [fda2a71](https://github.com/gulpjs/vinyl-fs/commit/fda2a71b8d26580f8dc564636005f78514e2b791) fix some tests, update deps (@contra)
- [#64](https://github.com/gulpjs/vinyl-fs/pull/64) switch to glob-watcher 2.0 (@phated)
- [6524088](https://github.com/gulpjs/vinyl-fs/commit/65240883f15b9f0aa792735a2f358c3ee5761c51) switch to glob-watcher 2.0
- [5d9f058](https://github.com/gulpjs/vinyl-fs/commit/5d9f0581b0d3985d135b507086dbd464e4aaafb9) export `filterSince` to `vinyl-filter-since` (@tunnckoCore)
- [#62](https://github.com/gulpjs/vinyl-fs/pull/62) Fix mode comparison (@Meroje)
- [ba57ce7](https://github.com/gulpjs/vinyl-fs/commit/ba57ce76e978850f79f78bba9b8aa1a73ac5fb2f) Test for chmod with additional bits (@Meroje)
- [0c3516b](https://github.com/gulpjs/vinyl-fs/commit/0c3516bd67ca56810f3e587cda12584caced223e) Fix mode comparison (@Meroje)
### v0.3.13 (2014/11/13 23:18 +00:00)
- [315e76a](https://github.com/gulpjs/vinyl-fs/commit/315e76a248e9d150f228e4ef50b61de15dc55123) 0.3.13 (@contra)
- [ac5b449](https://github.com/gulpjs/vinyl-fs/commit/ac5b449ec49b4de5f10313d31fd8e8effed0421b) switch off lodash to reduce size (@contra)
### v0.3.12 (2014/11/13 23:01 +00:00)
- [84a3fe9](https://github.com/gulpjs/vinyl-fs/commit/84a3fe96dd162041eac9c9d4465cc1369659027a) 0.3.12 (@contra)
- [b963614](https://github.com/gulpjs/vinyl-fs/commit/b963614bf206862f9bed60bab16ed7038f554c42) exclude files to save space (@contra)
### v0.3.11 (2014/11/04 18:56 +00:00)
- [5ee1404](https://github.com/gulpjs/vinyl-fs/commit/5ee1404cc25b54fc338e6f84909e87be2eb09e84) 0.3.11 (@contra)
- [#41](https://github.com/gulpjs/vinyl-fs/pull/41) use default mode for new files and directories (@joachimgit)
- [99661c5](https://github.com/gulpjs/vinyl-fs/commit/99661c5881cf2b22545be688c68318c6b7541df1) use default mode for new files and directories (@joachimgit)
- [c0cf9d0](https://github.com/gulpjs/vinyl-fs/commit/c0cf9d0663460881f9ee97310f44e382d9a09fbe) small style fix (@contra)
### v0.3.10 (2014/10/22 06:48 +00:00)
- [c6e7433](https://github.com/gulpjs/vinyl-fs/commit/c6e7433a93d052905611680dc3f6f87c8e629376) 0.3.10 (@contra)
- [793f538](https://github.com/gulpjs/vinyl-fs/commit/793f538beaa275a6d31f67e5499cb96949654699) remove duplexer2 which was broken (@contra)
- [1e3b338](https://github.com/gulpjs/vinyl-fs/commit/1e3b33883c5a9efbb28ec9141564bdfe6292c716) end false (@contra)
### v0.3.9 (2014/10/09 18:34 +00:00)
- [37c648d](https://github.com/gulpjs/vinyl-fs/commit/37c648da6826b36600f48c3002a03b1248d4f58e) 0.3.9 (@contra)
- [6bba193](https://github.com/gulpjs/vinyl-fs/commit/6bba193c8395d2e32ccfa332684bec1bdd52d4ad) empty arrays = dead stream, closes #40 (@contra)
- [3e3d371](https://github.com/gulpjs/vinyl-fs/commit/3e3d371c41a9e3e50a9af9ad5f5c8634744dcd6d) fix that potentially closes #25 (@contra)
### v0.3.8 (2014/09/29 22:16 +00:00)
- [0507aed](https://github.com/gulpjs/vinyl-fs/commit/0507aed94a1902ee61a45f77caf059669fb7ea76) 0.3.8 (@contra)
- [4d95e2e](https://github.com/gulpjs/vinyl-fs/commit/4d95e2e19f35045ca5ec66d697167078696bfc86) lstat (@contra)
- [#37](https://github.com/gulpjs/vinyl-fs/pull/37) Docs link fix (@yuvilio)
- [b9f3053](https://github.com/gulpjs/vinyl-fs/commit/b9f3053a8640839c2098f43066d06cc11d2e6196) Docs link fix (@yuvilio)
### v0.3.7 (2014/08/29 07:10 +00:00)
- [1a5efe8](https://github.com/gulpjs/vinyl-fs/commit/1a5efe8d1f7d698691103f2fdc21e07dc1bd5634) 0.3.7 (@contra)
- [97d3195](https://github.com/gulpjs/vinyl-fs/commit/97d3195464893ad526f40a6355c792d35ab562e6) update deps (@contra)
- [#34](https://github.com/gulpjs/vinyl-fs/pull/34) Chmod mode to match the vinyl object (@oconnore)
- [a73458e](https://github.com/gulpjs/vinyl-fs/commit/a73458e33aba6de1ee2852a1374da7e8c8225e22) reduce nesting per review
- [cf8e5fd](https://github.com/gulpjs/vinyl-fs/commit/cf8e5fd59070beedf88936527935168d18afbbfc) Code review changes
- [e5684ac](https://github.com/gulpjs/vinyl-fs/commit/e5684ace84d0d226c382a77d505e1517c6f4c7a3) Check final mode in no-chmod test
- [dc8e769](https://github.com/gulpjs/vinyl-fs/commit/dc8e7691430555c4fe419825306426062c3e03e8) Fix a fall through error
- [b20d11b](https://github.com/gulpjs/vinyl-fs/commit/b20d11bbbaf9e244e16af7eabb7c98af213e7a89) Test stat/chmod approach with sinon stubs
- [126164a](https://github.com/gulpjs/vinyl-fs/commit/126164a4f2056d3cb1996c39562a2a008153975d) Test if the file should be chmod'ed
### v0.3.6 (2014/08/02 04:56 +00:00)
- [7256498](https://github.com/gulpjs/vinyl-fs/commit/72564989a5dc17468e645f00ae811f8614dec17b) 0.3.6 (@contra)
- [dc9d723](https://github.com/gulpjs/vinyl-fs/commit/dc9d7230a4173792b0296e54a9560b44103d50c2) update vinyl dep (@contra)
- [387c47b](https://github.com/gulpjs/vinyl-fs/commit/387c47b6fda5f0af8f95b93e513bc130bee3cdd3) Satisfy the bot.
- [5887067](https://github.com/gulpjs/vinyl-fs/commit/58870677ff458a3e855ac87f2d165f43c4aafd2e) Chmod mode to match the vinyl object
### v0.3.5 (2014/07/30 23:04 +00:00)
- [22edfd2](https://github.com/gulpjs/vinyl-fs/commit/22edfd20dc2fbad888fedd022d02fdf933bf30b6) 0.3.5 (@contra)
- [20a7a05](https://github.com/gulpjs/vinyl-fs/commit/20a7a0525b80cf0884cf73bee9690e1dab17a2bb) fix dep tree (@contra)
- [#33](https://github.com/gulpjs/vinyl-fs/pull/33) Display the invalid glob in error message (@kevinwestern)
- [726b3a1](https://github.com/gulpjs/vinyl-fs/commit/726b3a1ac771c90a8186828e3eb37ad9f4832df8) Display the invalid glob in error message (@kevinwestern)
### v0.3.4 (2014/06/27 06:07 +00:00)
- [a83eb9a](https://github.com/gulpjs/vinyl-fs/commit/a83eb9a53aa0c4e50306a20845111ccda276146d) 0.3.4 (@contra)
- [4f4a3f3](https://github.com/gulpjs/vinyl-fs/commit/4f4a3f363cf491de80afdcf58f9926d2bfeb408e) resume stream (@contra)
### v0.3.3 (2014/06/26 16:35 +00:00)
- [52ce21b](https://github.com/gulpjs/vinyl-fs/commit/52ce21ba241f73f0348d7683306c1175ce6c88b3) 0.3.3 (@contra)
- [#29](https://github.com/gulpjs/vinyl-fs/pull/29) Quick fix for using through2 to create dest stream (@tomchentw)
- [c678bd4](https://github.com/gulpjs/vinyl-fs/commit/c678bd469e11e768713219b774fa82aa781e4fef) test(dest): also added finish event check for #26 (@tomchentw)
- [595e96e](https://github.com/gulpjs/vinyl-fs/commit/595e96e45f12fc868f9ce256d0421da7f4932843) test(dest): added test case for #26 (@tomchentw)
- [8bf8612](https://github.com/gulpjs/vinyl-fs/commit/8bf8612702e228fcc0c678acafe7634f2c6b269b) fix(vfs.dest): attatched an noop data listener (@tomchentw)
### v0.3.2 (2014/06/25 18:34 +00:00)
- [8fef1ed](https://github.com/gulpjs/vinyl-fs/commit/8fef1ed6d65a2532271983360d8700ec8dd03023) 0.3.2 (@contra)
- [#27](https://github.com/gulpjs/vinyl-fs/pull/27) Removed through2-map dependency (@tomchentw)
- [ede010b](https://github.com/gulpjs/vinyl-fs/commit/ede010be5aa110f55f2fc9daa34c1643e377e11c) feat(index.js): removed through2-map dependency (@tomchentw)
- [d1433cb](https://github.com/gulpjs/vinyl-fs/commit/d1433cb41ed3e0bf78bc2ea3a52e0599cccc45c2) .npmignore (@contra)
- [74347cc](https://github.com/gulpjs/vinyl-fs/commit/74347ccc71e5189e5d8809919fb145cfa9657481) .npmignore (@contra)
- [7c66ea2](https://github.com/gulpjs/vinyl-fs/commit/7c66ea2f09acb2dba51b192ccc8a8f09ef01489f) .npmignore (@contra)
- [cece0dc](https://github.com/gulpjs/vinyl-fs/commit/cece0dc68dfc1ebd3b344e367a4a269c43f15a0e) .npmignore (@contra)
- [33ac098](https://github.com/gulpjs/vinyl-fs/commit/33ac098ca8ff2e3216399784cd58b775d764ccab) .npmignore (@contra)
- [831044b](https://github.com/gulpjs/vinyl-fs/commit/831044b683c65eb9858323dc2744fd3ec33d82e1) .npmignore (@contra)
- [ff582cc](https://github.com/gulpjs/vinyl-fs/commit/ff582ccd55e6481134f6c44d1d2cb1dfc338818c) .npmignore (@contra)
- [fe75d6a](https://github.com/gulpjs/vinyl-fs/commit/fe75d6af6703bf2b6711ca1abfe9832d1d836375) .npmignore (@contra)
- [0c1da37](https://github.com/gulpjs/vinyl-fs/commit/0c1da37d252d16a171f30dfea42714bb208d1b3d) .npmignore (@contra)
- [10e6b53](https://github.com/gulpjs/vinyl-fs/commit/10e6b53bd9f8683408f6394c04142ac55ab9f493) .gitignore (@contra)
- [97296ef](https://github.com/gulpjs/vinyl-fs/commit/97296ef8e724953570ab989b043692cea5ba9062) .npmignore (@contra)
- [a12356c](https://github.com/gulpjs/vinyl-fs/commit/a12356c36cfd24e19d0c88225d364368ae7dac36) .gitignore (@contra)
- [7a7f2e5](https://github.com/gulpjs/vinyl-fs/commit/7a7f2e544b5eacf595bcc1fd9cac34de880ec071) .jshintrc (@contra)
### v0.3.1 (2014/06/25 14:28 +00:00)
- [6004e32](https://github.com/gulpjs/vinyl-fs/commit/6004e32a6c5dca3f9361695d1b9797bbc4529337) 0.3.1 (@contra)
- [#26](https://github.com/gulpjs/vinyl-fs/pull/26) feat(lib/*.js): change map-stream to through2 (@tomchentw)
- [b181693](https://github.com/gulpjs/vinyl-fs/commit/b181693e7c2dd1b3992be02af899b8024669771c) styles(lib): changed done back to cb (@tomchentw)
- [c5d76e5](https://github.com/gulpjs/vinyl-fs/commit/c5d76e51157a7ae7788d7dd762145ca48a701dfb) feat(lib/*.js): change map-stream to through2@0.5.1 (@tomchentw)
- [583d30e](https://github.com/gulpjs/vinyl-fs/commit/583d30efd72267b59752f98a920541b1cfadb31c) function for dest, closes #15 (@contra)
- [d0ba8bb](https://github.com/gulpjs/vinyl-fs/commit/d0ba8bba4519df2b6bb41f0f07cfaf1d7a5fbf7d) make src a passthrough, clean up mode logic in dest, jshint, stylize (@contra)
- [c9b2c07](https://github.com/gulpjs/vinyl-fs/commit/c9b2c075dbb55ee97cd6ab9909bd1e1f87bf77e0) update graceful-fs dep (@contra)
- [7af93d0](https://github.com/gulpjs/vinyl-fs/commit/7af93d0c63822f17183b89ec591622d14f9f17ca) update travis yml (@contra)
- [49fb44d](https://github.com/gulpjs/vinyl-fs/commit/49fb44d44d6891f450c4c7cef9bda3caa4035107) 0.2.0 - BOM stripping and dep updates (@contra)
- [#21](https://github.com/gulpjs/vinyl-fs/pull/21) Strip BOM when reading UTF-8 files (@mathiasbynens)
- [4c1fc02](https://github.com/gulpjs/vinyl-fs/commit/4c1fc02bab8c2ca8fcefe0bff80347cc0b17712b) Strip BOM when reading UTF-8-encoded files (@mathiasbynens)
- [abd2fe4](https://github.com/gulpjs/vinyl-fs/commit/abd2fe4e1e32ef46d7544ce90fe941ece3a49a55) rollback gaze update (@contra)
- [103bb8c](https://github.com/gulpjs/vinyl-fs/commit/103bb8ca0b16e888ee44146603d5591220e228f4) update glob-watcher (@contra)
- [a319889](https://github.com/gulpjs/vinyl-fs/commit/a319889b9cbad1db0097d041ad02e0e2f76640bf) check src and dest args, closes #8 (@contra)
- [671197a](https://github.com/gulpjs/vinyl-fs/commit/671197a54ddda0277abdc0c1c9fce27cc8ab9b86) drop support for 0.9 (@contra)
- [f89e03e](https://github.com/gulpjs/vinyl-fs/commit/f89e03e62cb62dc6c28d0ebe6f146123be2232a7) 0.1.0 (@contra)
- [bb34369](https://github.com/gulpjs/vinyl-fs/commit/bb343692f3bbeab08b40b4bb1ee20af7205f2837) comment (@contra)
- [c1c866a](https://github.com/gulpjs/vinyl-fs/commit/c1c866a5277038056d52fb106b2bca8cea430e59) mergit (@contra)
- [cc81580](https://github.com/gulpjs/vinyl-fs/commit/cc81580a4818e2260a367c54bdcc42b0b4d0a5cc) respect file modes in dest, add mode option to dest (@contra)
- [#10](https://github.com/gulpjs/vinyl-fs/pull/10) Allow piping streaming vinyls through multiple .dest()'s (@hughsk)
- [d5566b2](https://github.com/gulpjs/vinyl-fs/commit/d5566b213b7e90a94b20aad35d4c08b2861c8247) Use ./src/streamFile for re-streaming .dest() streams (@hughsk)
- [868a3ec](https://github.com/gulpjs/vinyl-fs/commit/868a3ecc7945e798ee702cc30c5bcfff2af3ecd5) Allow piping streaming vinyls through multiple .dest()'s (@hughsk)
- [191d4ae](https://github.com/gulpjs/vinyl-fs/commit/191d4ae3672c76eb0cf0d46a2404c8e60e587d85) update file paths as they cruise through .dest (@contra)
- [cb69aa6](https://github.com/gulpjs/vinyl-fs/commit/cb69aa6c7ead7a435067fdfc89f89cd8af1215d4) cleanup (@contra)
- [f50d669](https://github.com/gulpjs/vinyl-fs/commit/f50d669a968f6f69ef07a0cc34b11704829c9c9f) add tests for relative cwd (@contra)
- [39dfc18](https://github.com/gulpjs/vinyl-fs/commit/39dfc189367154136718fa0958712b1b14ea5e5a) fix tests (@contra)
- [60dac5f](https://github.com/gulpjs/vinyl-fs/commit/60dac5fa38c3470556d987b01405d3ccca6af9ec) remove async dep (@contra)
- [1178422](https://github.com/gulpjs/vinyl-fs/commit/11784223e5a38795715c759333b352d40e83c76a) more tests (@contra)
- [ed50c02](https://github.com/gulpjs/vinyl-fs/commit/ed50c02ba3487e8f4212792a0db2aa39dbc060a6) directory test (@contra)
- [ee32c0a](https://github.com/gulpjs/vinyl-fs/commit/ee32c0a3a5f7aa30fc62a8481dd2f38aa410fa1a) more simplifying (@contra)
- [fb481f0](https://github.com/gulpjs/vinyl-fs/commit/fb481f0c6baedf89635faa1eb278cafb4b72c5bb) more simplifying (@contra)
- [a415173](https://github.com/gulpjs/vinyl-fs/commit/a4151738c740a760fa8b577a4f633ea6aad4055c) yep (@contra)
- [753add9](https://github.com/gulpjs/vinyl-fs/commit/753add9acc8cc0b3ff883f5228c972731a5fde74) simplify dest (@contra)
- [5325dcf](https://github.com/gulpjs/vinyl-fs/commit/5325dcf796e1e6db86a3c9abd58484f552c299f8) cwd in dest (@contra)
- [1b975fd](https://github.com/gulpjs/vinyl-fs/commit/1b975fdbf6c005674e86454b1a780b1fbf72f605) test cleaning (@contra)
- [abdcbb7](https://github.com/gulpjs/vinyl-fs/commit/abdcbb7fcd8b78469eaf784675df2d7c7a15c766) coveralls (@contra)
- [b7a8ebc](https://github.com/gulpjs/vinyl-fs/commit/b7a8ebcfa07865a283b5efe69303b795a2dcdd83) license update (@contra)
- [bac7381](https://github.com/gulpjs/vinyl-fs/commit/bac7381e31b7c30aed8ae925d12821cf65f9337e) more dep updates (@contra)
- [14f0a1e](https://github.com/gulpjs/vinyl-fs/commit/14f0a1eeaab5ca6a52042aae489a2da5ef78c318) badges and refactor (@contra)
- [8ac77fc](https://github.com/gulpjs/vinyl-fs/commit/8ac77fc245b8b3938c74748900358e9ad540e4bd) wait for file close in writeStream (@contra)
- [002273c](https://github.com/gulpjs/vinyl-fs/commit/002273cfae226d562a8b22173c3a718614444c7a) writeStream fix (@contra)
- [af64059](https://github.com/gulpjs/vinyl-fs/commit/af640595b1325385ce650b410f9091531447b35a) Merge branch 'master' of https://github.com/wearefractal/vinyl-fs (@contra)
- [5c36fbc](https://github.com/gulpjs/vinyl-fs/commit/5c36fbcaa7d7eca58fb5f035bf15492f4a3b737a) trim fat - graceful-fs, map-stream, etc. (@contra)
- [#3](https://github.com/gulpjs/vinyl-fs/pull/3) Fix broken refactor changes (@yyx990803)
- [c610342](https://github.com/gulpjs/vinyl-fs/commit/c610342755156dc9c059f21ac31a679623cef227) fix writePath
- [b09678b](https://github.com/gulpjs/vinyl-fs/commit/b09678b05069852d713a263e8526f30f83ecae23) require deps in writecontent.js
- [a30a0ea](https://github.com/gulpjs/vinyl-fs/commit/a30a0ea5ba65aa32b8a3a7a72fe6ddcbb20fe3fa) watch added (@contra)
- [209d4f2](https://github.com/gulpjs/vinyl-fs/commit/209d4f235fcd4419318527a96f6bc8757a4b87a7) flesh out more (@contra)
- [5958e7e](https://github.com/gulpjs/vinyl-fs/commit/5958e7e7b55bed41ae0972d721eae91ea9d21cbf) new vinyl file isDirectory changes (@contra)
- [7f8684b](https://github.com/gulpjs/vinyl-fs/commit/7f8684b87d93ee66fdbefe5397c8b7e365727d3d) more tests (@contra)
- [bf1f18c](https://github.com/gulpjs/vinyl-fs/commit/bf1f18cef59dff9ad01658b5e11968f2a3b11ff5) start tests (@contra)
- [23a1cff](https://github.com/gulpjs/vinyl-fs/commit/23a1cff61b8fcc07d543c1757a415591277a5425) fix deps (@contra)
- [35f230b](https://github.com/gulpjs/vinyl-fs/commit/35f230b2abe22e5fa0cc710a9bbbfb8dd3cfe3fa) start impl (@contra)

20
build/node_modules/vinyl-fs/LICENSE generated vendored Executable file
View File

@@ -0,0 +1,20 @@
Copyright (c) 2013-2016 Fractal <contact@wearefractal.com>
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.

293
build/node_modules/vinyl-fs/README.md generated vendored Normal file
View File

@@ -0,0 +1,293 @@
<p align="center">
<a href="http://gulpjs.com">
<img height="257" width="114" src="https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png">
</a>
</p>
# vinyl-fs
[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url]
[Vinyl][vinyl] adapter for the file system.
## What is Vinyl?
[Vinyl][vinyl] is a very simple metadata object that describes a file. When you think of a file, two attributes come to mind: `path` and `contents`. These are the main attributes on a [Vinyl][vinyl] object. A file does not necessarily represent something on your computers file system. You have files on S3, FTP, Dropbox, Box, CloudThingly.io and other services. [Vinyl][vinyl] can be used to describe files from all of these sources.
## What is a Vinyl Adapter?
While Vinyl provides a clean way to describe a file, we now need a way to access these files. Each file source needs what I call a "Vinyl adapter". A Vinyl adapter simply exposes a `src(globs)` and a `dest(folder)` method. Each return a stream. The `src` stream produces Vinyl objects, and the `dest` stream consumes Vinyl objects. Vinyl adapters can expose extra methods that might be specific to their input/output medium, such as the `symlink` method `vinyl-fs` provides.
## Usage
```javascript
var map = require('map-stream');
var vfs = require('vinyl-fs');
var log = function(file, cb) {
console.log(file.path);
cb(null, file);
};
vfs.src(['./js/**/*.js', '!./js/vendor/*.js'])
.pipe(map(log))
.pipe(vfs.dest('./output'));
```
## API
### `src(globs[, options])`
Takes a glob string or an array of glob strings as the first argument and an options object as the second.
Returns a stream of [vinyl] `File` objects.
__Note: UTF-8 BOM will be stripped from all UTF-8 files read with `.src` unless disabled in the options.__
#### Globs
Globs are executed in order, so negations should follow positive globs.
For example:
```js
fs.src(['!b*.js', '*.js'])
```
would not exclude any files, but the following would:
```js
fs.src(['*.js', '!b*.js'])
```
#### Options
##### `options.cwd`
The working directory the folder is relative to.
Type: `String`
Default: `process.cwd()`
##### `options.base`
The folder relative to the cwd. This is used to determine the file names when saving in `.dest()`.
Type: `String`
Default: The part of the path before the glob (if any) begins. For example, `path/to/**/*.js` would resolve to `path/to`. If there is no glob (i.e. a file path with no pattern), then the dirname of the path is used. For example, `path/to/some/file.js` would resolve to `path/to/some`.
##### `options.buffer`
Whether or not you want to buffer the file contents into memory. Setting to `false` will make `file.contents` a paused Stream.
Type: `Boolean`
Default: `true`
##### `options.read`
Whether or not you want the file to be read at all. Useful for stuff like removing files. Setting to `false` will make `file.contents` `null` and will disable writing the file to disk via `.dest()`.
Type: `Boolean`
Default: `true`
##### `options.since`
Only streams files that have been modified since the time specified.
Type: `Date` or `Number`
Default: `undefined`
##### `options.stripBOM`
Causes the BOM to be stripped on UTF-8 encoded files. Set to `false` if you need the BOM for some reason.
Type: `Boolean`
Default: `true`
##### `options.passthrough`
Allows `.src` to be used in the middle of a pipeline (using a duplex stream) which passes through all objects received and adds all files globbed to the stream.
Type: `Boolean`
Default: `false`
##### `options.sourcemaps`
Enables sourcemap support on files passed through the stream. Will load inline sourcemaps and resolve sourcemap links from files. Uses [gulp-sourcemaps] under the hood.
Type: `Boolean`
Default: `false`
##### `options.followSymlinks` - `true` if you want
Whether or not to recursively resolve symlinks to their targets. Setting to `false` to preserve them as symlinks and make `file.symlink` equal the original symlink's target path.
Type: `Boolean`
Default: `true`
##### other
Any glob-related options are documented in [glob-stream] and [node-glob].
Any through2-related options are documented in [through2].
### `dest(folder[, options])`
Takes a folder path string or a function as the first argument and an options object as the second. If given a function, it will be called with each [vinyl] `File` object and must return a folder path.
Returns a stream that accepts [vinyl] `File` objects, writes them to disk at the folder/cwd specified, and passes them downstream so you can keep piping these around.
Once the file is written to disk, an attempt is made to determine if the `stat.mode`, `stat.mtime` and `stat.atime` of the [vinyl] `File` object differ from the file on the filesystem.
If they differ and the running process owns the file, the corresponding filesystem metadata is updated.
If they don't differ or the process doesn't own the file, the attempt is skipped silently.
__This functionality is disabled on Windows operating systems or any other OS that doesn't support `process.getuid` or `process.geteuid` in node. This is due to Windows having very unexpected results through usage of `fs.fchmod` and `fs.futimes`.__
If the file has a `symlink` attribute specifying a target path, then a symlink will be created.
__Note: The file will be modified after being written to this stream.__
- `cwd`, `base`, and `path` will be overwritten to match the folder.
- `stat` will be updated to match the file on the filesystem.
- `contents` will have it's position reset to the beginning if it is a stream.
#### Options
##### `options.cwd`
The working directory the folder is relative to.
Type: `String`
Default: `process.cwd()`
##### `options.base`
The folder relative to the cwd. This is used to determine the file names when saving in `.dest()`. Can also be a function that takes in a file and returns a folder path.
Type: `String` or `Function`
Default: The `cwd` resolved to the folder path.
##### `options.mode`
The mode the files should be created with.
Type: `Number`
Default: The `mode` of the input file (`file.stat.mode`) if any, or the process mode if the input file has no `mode` property.
##### `options.dirMode`
The mode the directory should be created with.
Type: `Number`
Default: The process `mode`.
##### `options.overwrite`
Whether or not existing files with the same path should be overwritten. Can also be a function that takes in a file and returns `true` or `false`.
Type: `Boolean` or `Function`
Default: `true` (always overwrite existing files)
##### `options.sourcemaps`
Enables sourcemap support on files passed through the stream. Will write inline soucemaps if specified as `true`.
Specifying a `string` is shorthand for the path option. Uses [gulp-sourcemaps] under the hood.
Examples:
```js
// Write as inline comments
vfs.dest('./', {
sourcemaps: true
});
// Write as files in the same folder
vfs.dest('./', {
sourcemaps: '.'
});
// Any other options are passed through to [gulp-sourcemaps]
vfs.dest('./', {
sourcemaps: {
path: '.',
addComment: false,
includeContent: false
}
});
```
Type: `Boolean`, `String` or `Object`
Default: `undefined` (do not write sourcemaps)
##### other
Any through2-related options are documented in [through2].
### `symlink(folder[, options])`
Takes a folder path string or a function as the first argument and an options object as the second. If given a function, it will be called with each [vinyl] `File` object and must return a folder path.
Returns a stream that accepts [vinyl] `File` objects, create a symbolic link (i.e. symlink) at the folder/cwd specified, and passes them downstream so you can keep piping these around.
__Note: The file will be modified after being written to this stream.__
- `cwd`, `base`, and `path` will be overwritten to match the folder.
#### Options
##### `options.cwd`
The working directory the folder is relative to.
Type: `String`
Default: `process.cwd()`
##### `options.base`
The folder relative to the cwd. This is used to determine the file names when saving in `.symlink()`. Can also be a function that takes in a file and returns a folder path.
Type: `String` or `Function`
Default: The `cwd` resolved to the folder path.
##### `options.dirMode`
The mode the directory should be created with.
Type: `Number`
Default: The process mode.
##### other
Any through2-related options are documented in [through2].
[glob-stream]: https://github.com/gulpjs/glob-stream
[gulp-sourcemaps]: https://github.com/floridoo/gulp-sourcemaps
[node-glob]: https://github.com/isaacs/node-glob
[gaze]: https://github.com/shama/gaze
[glob-watcher]: https://github.com/wearefractal/glob-watcher
[vinyl]: https://github.com/wearefractal/vinyl
[through2]: https://github.com/rvagg/through2
[downloads-image]: http://img.shields.io/npm/dm/vinyl-fs.svg
[npm-url]: https://www.npmjs.com/package/vinyl-fs
[npm-image]: https://badge.fury.io/js/vinyl-fs.svg
[travis-url]: https://travis-ci.org/gulpjs/vinyl-fs
[travis-image]: https://travis-ci.org/gulpjs/vinyl-fs.svg?branch=master
[coveralls-url]: https://coveralls.io/r/gulpjs/vinyl-fs
[coveralls-image]: https://coveralls.io/repos/gulpjs/vinyl-fs/badge.svg
[gitter-url]: https://gitter.im/gulpjs/gulp
[gitter-image]: https://badges.gitter.im/gulpjs/gulp.png

7
build/node_modules/vinyl-fs/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
'use strict';
module.exports = {
src: require('./lib/src'),
dest: require('./lib/dest'),
symlink: require('./lib/symlink'),
};

54
build/node_modules/vinyl-fs/lib/dest/index.js generated vendored Normal file
View File

@@ -0,0 +1,54 @@
'use strict';
var through2 = require('through2');
var sourcemaps = require('gulp-sourcemaps');
var duplexify = require('duplexify');
var sink = require('../sink');
var prepareWrite = require('../prepareWrite');
var writeContents = require('./writeContents');
function dest(outFolder, opt) {
if (!opt) {
opt = {};
}
function saveFile(file, enc, cb) {
prepareWrite(outFolder, file, opt, function(err, writePath) {
if (err) {
return cb(err);
}
writeContents(writePath, file, cb);
});
}
var saveStream = through2.obj(opt, saveFile);
if (!opt.sourcemaps) {
// Sink the save stream to start flowing
// Do this on nextTick, it will flow at slowest speed of piped streams
process.nextTick(sink(saveStream));
return saveStream;
}
var sourcemapOpt = opt.sourcemaps;
if (typeof sourcemapOpt === 'boolean') {
sourcemapOpt = {};
}
if (typeof sourcemapOpt === 'string') {
sourcemapOpt = {
path: sourcemapOpt,
};
}
var mapStream = sourcemaps.write(sourcemapOpt.path, sourcemapOpt);
var outputStream = duplexify.obj(mapStream, saveStream);
mapStream.pipe(saveStream);
// Sink the output stream to start flowing
// Do this on nextTick, it will flow at slowest speed of piped streams
process.nextTick(sink(outputStream));
return outputStream;
}
module.exports = dest;

View File

@@ -0,0 +1,59 @@
'use strict';
var writeDir = require('./writeDir');
var writeStream = require('./writeStream');
var writeBuffer = require('./writeBuffer');
var writeSymbolicLink = require('./writeSymbolicLink');
function writeContents(writePath, file, callback) {
// If directory then mkdirp it
if (file.isDirectory()) {
return writeDir(writePath, file, written);
}
// Stream it to disk yo
if (file.isStream()) {
return writeStream(writePath, file, written);
}
// Write it as a symlink
if (file.symlink) {
return writeSymbolicLink(writePath, file, written);
}
// Write it like normal
if (file.isBuffer()) {
return writeBuffer(writePath, file, written);
}
// If no contents then do nothing
if (file.isNull()) {
return written();
}
// This is invoked by the various writeXxx modules when they've finished
// writing the contents.
function written(err) {
if (isErrorFatal(err)) {
return callback(err);
}
callback(null, file);
}
function isErrorFatal(err) {
if (!err) {
return false;
}
if (err.code === 'EEXIST' && file.flag === 'wx') {
// Handle scenario for file overwrite failures.
return false; // "These aren't the droids you're looking for"
}
// Otherwise, this is a fatal error
return true;
}
}
module.exports = writeContents;

View File

@@ -0,0 +1,26 @@
'use strict';
var fo = require('../../fileOperations');
function writeBuffer(writePath, file, written) {
var opt = {
mode: file.stat.mode,
flag: file.flag,
};
fo.writeFile(writePath, file.contents, opt, onWriteFile);
function onWriteFile(writeErr, fd) {
if (writeErr) {
return fo.closeFd(writeErr, fd, written);
}
fo.updateMetadata(fd, file, onUpdate);
}
function onUpdate(statErr, fd) {
fo.closeFd(statErr, fd, written);
}
}
module.exports = writeBuffer;

View File

@@ -0,0 +1,53 @@
'use strict';
var fs = require('graceful-fs');
var mkdirp = require('mkdirp');
var fo = require('../../fileOperations');
function writeDir(writePath, file, written) {
var mkdirpOpts = {
mode: file.stat.mode,
fs: fs,
};
mkdirp(writePath, mkdirpOpts, onMkdirp);
function onMkdirp(mkdirpErr) {
if (mkdirpErr) {
return written(mkdirpErr);
}
fs.open(writePath, 'r', onOpen);
}
function onOpen(openErr, fd) {
// If we don't have access, just move along
if (isInaccessible(openErr)) {
return fo.closeFd(null, fd, written);
}
if (openErr) {
return fo.closeFd(openErr, fd, written);
}
fo.updateMetadata(fd, file, onUpdate);
}
function onUpdate(statErr, fd) {
fo.closeFd(statErr, fd, written);
}
}
function isInaccessible(err) {
if (!err) {
return false;
}
if (err.code === 'EACCES') {
return true;
}
return false;
}
module.exports = writeDir;

View File

@@ -0,0 +1,57 @@
'use strict';
var fs = require('graceful-fs');
var fo = require('../../fileOperations');
var streamFile = require('../../src/getContents/streamFile');
function writeStream(writePath, file, written) {
var opt = {
mode: file.stat.mode,
flag: file.flag,
};
var outStream = fs.createWriteStream(writePath, opt);
file.contents.once('error', complete);
file.contents.once('end', readStreamEnd);
outStream.once('error', complete);
outStream.once('finish', complete);
// Streams are piped with end disabled, this prevents the
// WriteStream from closing the file descriptor after all
// data is written.
file.contents.pipe(outStream, { end: false });
function readStreamEnd() {
streamFile(file, complete);
}
function end(propagatedErr) {
outStream.end(onEnd);
function onEnd(endErr) {
written(propagatedErr || endErr);
}
}
// Cleanup
function complete(streamErr) {
file.contents.removeListener('error', complete);
file.contents.removeListener('end', readStreamEnd);
outStream.removeListener('error', complete);
outStream.removeListener('finish', complete);
if (streamErr) {
return end(streamErr);
}
if (typeof outStream.fd !== 'number') {
return end();
}
fo.updateMetadata(outStream.fd, file, end);
}
}
module.exports = writeStream;

View File

@@ -0,0 +1,20 @@
'use strict';
var fs = require('graceful-fs');
function writeSymbolicLink(writePath, file, written) {
// TODO handle symlinks properly
fs.symlink(file.symlink, writePath, function(err) {
if (isFatalError(err)) {
return written(err);
}
written();
});
}
function isFatalError(err) {
return (err && err.code !== 'EEXIST');
}
module.exports = writeSymbolicLink;

206
build/node_modules/vinyl-fs/lib/fileOperations.js generated vendored Normal file
View File

@@ -0,0 +1,206 @@
'use strict';
var fs = require('graceful-fs');
var assign = require('object-assign');
var isEqual = require('lodash.isequal');
var isValidDate = require('vali-date');
// TODO shared module
// TODO include sticky/setuid/setgid, i.e. 7777?
var MASK_MODE = parseInt('0777', 8);
var DEFAULT_FILE_MODE = parseInt('0666', 8);
var APPEND_MODE_REGEXP = /a/;
function closeFd(propagatedErr, fd, callback) {
if (typeof fd !== 'number') {
return callback(propagatedErr);
}
fs.close(fd, onClosed);
function onClosed(closeErr) {
if (propagatedErr || closeErr) {
return callback(propagatedErr || closeErr);
}
callback();
}
}
function getModeDiff(fsMode, vinylMode) {
var modeDiff = 0;
if (typeof vinylMode === 'number') {
modeDiff = (vinylMode ^ fsMode) & MASK_MODE;
}
return modeDiff;
}
function getTimesDiff(fsStat, vinylStat) {
if (!isValidDate(vinylStat.mtime)) {
return;
}
if (isEqual(vinylStat.mtime, fsStat.mtime) &&
isEqual(vinylStat.atime, fsStat.atime)) {
return;
}
var atime;
if (isValidDate(vinylStat.atime)) {
atime = vinylStat.atime;
} else {
atime = fsStat.atime;
}
if (!isValidDate(atime)) {
atime = undefined;
}
var timesDiff = {
mtime: vinylStat.mtime,
atime: atime,
};
return timesDiff;
}
function isOwner(fsStat) {
var hasGetuid = (typeof process.getuid === 'function');
var hasGeteuid = (typeof process.geteuid === 'function');
// If we don't have either, assume we don't have permissions.
// This should only happen on Windows.
// Windows basically noops fchmod and errors on futimes called on directories.
if (!hasGeteuid && !hasGetuid) {
return false;
}
var uid;
if (hasGeteuid) {
uid = process.geteuid();
} else {
uid = process.getuid();
}
if (fsStat.uid !== uid && uid !== 0) {
return false;
}
return true;
}
function updateMetadata(fd, file, callback) {
fs.fstat(fd, onStat);
function onStat(err, stat) {
if (err) {
return callback(err, fd);
}
// Check if mode needs to be updated
var modeDiff = getModeDiff(stat.mode, file.stat.mode);
// Check if atime/mtime need to be updated
var timesDiff = getTimesDiff(stat, file.stat);
// Set file.stat to the reflect current state on disk
assign(file.stat, stat);
// Nothing to do
if (!modeDiff && !timesDiff) {
return callback(null, fd);
}
// Check access, `futimes` and `fchmod` only work if we own the file,
// or if we are effectively root.
if (!isOwner(stat)) {
return callback(null, fd);
}
if (modeDiff) {
return mode();
}
times();
function mode() {
var mode = stat.mode ^ modeDiff;
fs.fchmod(fd, mode, onFchmod);
function onFchmod(fchmodErr) {
if (!fchmodErr) {
file.stat.mode = mode;
}
if (timesDiff) {
return times(fchmodErr);
}
callback(fchmodErr, fd);
}
}
function times(fchmodErr) {
fs.futimes(fd, timesDiff.atime, timesDiff.mtime, onFutimes);
function onFutimes(futimesErr) {
if (!futimesErr) {
file.stat.atime = timesDiff.atime;
file.stat.mtime = timesDiff.mtime;
}
callback(fchmodErr || futimesErr, fd);
}
}
}
}
/*
Custom writeFile implementation because we need access to the
file descriptor after the write is complete.
Most of the implementation taken from node core.
*/
function writeFile(path, data, options, callback) {
if (typeof options === 'function') {
callback = options;
options = {};
}
if (!Buffer.isBuffer(data)) {
callback(new TypeError('Data must be a Buffer'));
return;
}
if (!options) {
options = {};
}
// Default the same as node
var mode = options.mode || DEFAULT_FILE_MODE;
var flag = options.flag || 'w';
var position = APPEND_MODE_REGEXP.test(flag) ? null : 0;
fs.open(path, flag, mode, onOpen);
function onOpen(err, fd) {
if (err) {
return onComplete(err);
}
fs.write(fd, data, 0, data.length, position, onComplete);
function onComplete(err) {
callback(err, fd);
}
}
}
module.exports = {
closeFd: closeFd,
getModeDiff: getModeDiff,
getTimesDiff: getTimesDiff,
isOwner: isOwner,
updateMetadata: updateMetadata,
writeFile: writeFile,
};

16
build/node_modules/vinyl-fs/lib/filterSince.js generated vendored Normal file
View File

@@ -0,0 +1,16 @@
'use strict';
var filter = require('through2-filter');
module.exports = function(d) {
var isValid = typeof d === 'number' ||
d instanceof Number ||
d instanceof Date;
if (!isValid) {
throw new Error('expected since option to be a date or a number');
}
return filter.obj(function(file) {
return file.stat && file.stat.mtime > d;
});
};

69
build/node_modules/vinyl-fs/lib/prepareWrite.js generated vendored Normal file
View File

@@ -0,0 +1,69 @@
'use strict';
var assign = require('object-assign');
var path = require('path');
var mkdirp = require('mkdirp');
var fs = require('graceful-fs');
function booleanOrFunc(v, file) {
if (typeof v !== 'boolean' && typeof v !== 'function') {
return null;
}
return typeof v === 'boolean' ? v : v(file);
}
function stringOrFunc(v, file) {
if (typeof v !== 'string' && typeof v !== 'function') {
return null;
}
return typeof v === 'string' ? v : v(file);
}
function prepareWrite(outFolder, file, opt, cb) {
var options = assign({
cwd: process.cwd(),
mode: (file.stat ? file.stat.mode : null),
dirMode: null,
overwrite: true,
}, opt);
var overwrite = booleanOrFunc(options.overwrite, file);
options.flag = (overwrite ? 'w' : 'wx');
var cwd = path.resolve(options.cwd);
var outFolderPath = stringOrFunc(outFolder, file);
if (!outFolderPath) {
throw new Error('Invalid output folder');
}
var basePath = options.base ?
stringOrFunc(options.base, file) : path.resolve(cwd, outFolderPath);
if (!basePath) {
throw new Error('Invalid base option');
}
var writePath = path.resolve(basePath, file.relative);
var writeFolder = path.dirname(writePath);
// Wire up new properties
file.stat = (file.stat || new fs.Stats());
file.stat.mode = options.mode;
file.flag = options.flag;
file.cwd = cwd;
file.base = basePath;
file.path = writePath;
// Mkdirp the folder the file is going in
var mkdirpOpts = {
mode: options.dirMode,
fs: fs,
};
mkdirp(writeFolder, mkdirpOpts, function(err) {
if (err) {
return cb(err);
}
cb(null, writePath);
});
}
module.exports = prepareWrite;

53
build/node_modules/vinyl-fs/lib/sink.js generated vendored Normal file
View File

@@ -0,0 +1,53 @@
'use strict';
var Writable = require('readable-stream/writable');
function listenerCount(stream, evt) {
return stream.listeners(evt).length;
}
function hasListeners(stream) {
return !!(listenerCount(stream, 'readable') || listenerCount(stream, 'data'));
}
function sink(stream) {
var sinkAdded = false;
var sinkStream = new Writable({
objectMode: true,
write: function(file, enc, cb) {
cb();
},
});
function addSink() {
if (sinkAdded) {
return;
}
if (hasListeners(stream)) {
return;
}
sinkAdded = true;
stream.pipe(sinkStream);
}
function removeSink(evt) {
if (evt !== 'readable' && evt !== 'data') {
return;
}
if (hasListeners(stream)) {
sinkAdded = false;
stream.unpipe(sinkStream);
}
}
stream.on('newListener', removeSink);
stream.on('removeListener', removeSink);
stream.on('removeListener', addSink);
return addSink;
}
module.exports = sink;

View File

@@ -0,0 +1,22 @@
'use strict';
var fs = require('graceful-fs');
var stripBom = require('strip-bom');
function bufferFile(file, opt, cb) {
fs.readFile(file.path, function(err, data) {
if (err) {
return cb(err);
}
if (opt.stripBOM) {
file.contents = stripBom(data);
} else {
file.contents = data;
}
cb(null, file);
});
}
module.exports = bufferFile;

View File

@@ -0,0 +1,31 @@
'use strict';
var through2 = require('through2');
var readDir = require('./readDir');
var readSymbolicLink = require('./readSymbolicLink');
var bufferFile = require('./bufferFile');
var streamFile = require('./streamFile');
function getContents(opt) {
return through2.obj(opt, function(file, enc, cb) {
// Don't fail to read a directory
if (file.isDirectory()) {
return readDir(file, opt, cb);
}
// Process symbolic links included with `followSymlinks` option
if (file.stat && file.stat.isSymbolicLink()) {
return readSymbolicLink(file, opt, cb);
}
// Read and pass full contents
if (opt.buffer !== false) {
return bufferFile(file, opt, cb);
}
// Don't buffer anything - just pass streams
return streamFile(file, opt, cb);
});
}
module.exports = getContents;

View File

@@ -0,0 +1,8 @@
'use strict';
function readDir(file, opt, cb) {
// Do nothing for now
cb(null, file);
}
module.exports = readDir;

View File

@@ -0,0 +1,18 @@
'use strict';
var fs = require('graceful-fs');
function readLink(file, opt, cb) {
fs.readlink(file.path, function(err, target) {
if (err) {
return cb(err);
}
// Store the link target path
file.symlink = target;
return cb(null, file);
});
}
module.exports = readLink;

View File

@@ -0,0 +1,26 @@
'use strict';
var fs = require('graceful-fs');
var stripBom = require('strip-bom-stream');
var lazystream = require('lazystream');
function streamFile(file, opt, cb) {
if (typeof opt === 'function') {
cb = opt;
opt = {};
}
var filePath = file.path;
file.contents = new lazystream.Readable(function() {
return fs.createReadStream(filePath);
});
if (opt.stripBOM) {
file.contents = file.contents.pipe(stripBom());
}
cb(null, file);
}
module.exports = streamFile;

62
build/node_modules/vinyl-fs/lib/src/index.js generated vendored Normal file
View File

@@ -0,0 +1,62 @@
'use strict';
var assign = require('object-assign');
var through2 = require('through2');
var gs = require('glob-stream');
var duplexify = require('duplexify');
var merge = require('merge-stream');
var sourcemaps = require('gulp-sourcemaps');
var filterSince = require('../filterSince');
var isValidGlob = require('is-valid-glob');
var getContents = require('./getContents');
var wrapWithVinylFile = require('./wrapWithVinylFile');
function src(glob, opt) {
var options = assign({
read: true,
buffer: true,
stripBOM: true,
sourcemaps: false,
passthrough: false,
followSymlinks: true,
}, opt);
// Don't pass `read` option on to through2
var read = options.read !== false;
options.read = undefined;
var inputPass;
if (!isValidGlob(glob)) {
throw new Error('Invalid glob argument: ' + glob);
}
var globStream = gs.create(glob, options);
var outputStream = globStream
.pipe(wrapWithVinylFile(options));
if (options.since != null) {
outputStream = outputStream
.pipe(filterSince(options.since));
}
if (read) {
outputStream = outputStream
.pipe(getContents(options));
}
if (options.passthrough === true) {
inputPass = through2.obj(options);
outputStream = duplexify.obj(inputPass, merge(outputStream, inputPass));
}
if (options.sourcemaps === true) {
outputStream = outputStream
.pipe(sourcemaps.init({ loadMaps: true }));
}
globStream.on('error', outputStream.emit.bind(outputStream, 'error'));
return outputStream;
}
module.exports = src;

View File

@@ -0,0 +1,51 @@
'use strict';
var through2 = require('through2');
var fs = require('graceful-fs');
var File = require('vinyl');
function wrapWithVinylFile(options) {
// A stat property is exposed on file objects as a (wanted) side effect
function resolveFile(globFile, enc, cb) {
fs.lstat(globFile.path, function(err, stat) {
if (err) {
return cb(err);
}
globFile.stat = stat;
if (!stat.isSymbolicLink() || !options.followSymlinks) {
var vinylFile = new File(globFile);
if (globFile.originalSymlinkPath) {
// If we reach here, it means there is at least one
// symlink on the path and we need to rewrite the path
// to its original value.
// Updated file stats will tell getContents() to actually read it.
vinylFile.path = globFile.originalSymlinkPath;
}
return cb(null, vinylFile);
}
fs.realpath(globFile.path, function(err, filePath) {
if (err) {
return cb(err);
}
if (!globFile.originalSymlinkPath) {
// Store the original symlink path before the recursive call
// to later rewrite it back.
globFile.originalSymlinkPath = globFile.path;
}
globFile.path = filePath;
// Recurse to get real file stat
resolveFile(globFile, enc, cb);
});
});
}
return through2.obj(options, resolveFile);
}
module.exports = wrapWithVinylFile;

30
build/node_modules/vinyl-fs/lib/symlink/index.js generated vendored Normal file
View File

@@ -0,0 +1,30 @@
'use strict';
var through2 = require('through2');
var fs = require('graceful-fs');
var prepareWrite = require('../prepareWrite');
function symlink(outFolder, opt) {
function linkFile(file, enc, cb) {
var srcPath = file.path;
var symType = (file.isDirectory() ? 'dir' : 'file');
prepareWrite(outFolder, file, opt, function(err, writePath) {
if (err) {
return cb(err);
}
fs.symlink(srcPath, writePath, symType, function(err) {
if (err && err.code !== 'EEXIST') {
return cb(err);
}
cb(null, file);
});
});
}
var stream = through2.obj(opt, linkFile);
// TODO: option for either backpressure or lossy
stream.resume();
return stream;
}
module.exports = symlink;

View File

@@ -0,0 +1,3 @@
test
.jshintrc
.travis.yml

View File

@@ -0,0 +1,336 @@
<!doctype html>
<!-- Created with GFM2HTML: https://github.com/rvagg/gfm2html -->
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="created-with" content="https://github.com/rvagg/gfm2html">
<style type="text/css">
/* most of normalize.css */
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}[hidden],template{display:none;}html{font-family:sans-serif;/*1*/-ms-text-size-adjust:100%;/*2*/-webkit-text-size-adjust:100%;/*2*/}body{margin:0;}a{background:transparent;}a:focus{outline:thindotted;}a:active,a:hover{outline:0;}h1{font-size:2em;margin:0.67em0;}abbr[title]{border-bottom:1pxdotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;}mark{background:#ff0;color:#000;}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em;}pre{white-space:pre-wrap;}q{quotes:"\201C""\201D""\2018""\2019";}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}table{border-collapse:collapse;border-spacing:0;}
html {
font: 14px 'Helvetica Neue', Helvetica, arial, freesans, clean, sans-serif;
}
.container {
line-height: 1.6;
color: #333;
background: #eee;
border-radius: 3px;
padding: 3px;
width: 790px;
margin: 10px auto;
}
.body-content {
background-color: #fff;
border: 1px solid #CACACA;
padding: 30px;
}
.body-content > *:first-child {
margin-top: 0 !important;
}
a, a:visited {
color: #4183c4;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
p, blockquote, ul, ol, dl, table, pre {
margin: 15px 0;
}
.markdown-body h1
, .markdown-body h2
, .markdown-body h3
, .markdown-body h4
, .markdown-body h5
, .markdown-body h6 {
margin: 20px 0 10px;
padding: 0;
font-weight: bold;
}
h1 {
font-size: 2.5em;
color: #000;
border-bottom: 1px solid #ddd;
}
h2 {
font-size: 2em;
border-bottom: 1px solid #eee;
color: #000;
}
img {
max-width: 100%;
}
hr {
background: transparent url("/img/hr.png") repeat-x 0 0;
border: 0 none;
color: #ccc;
height: 4px;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
tr:nth-child(2n) {
background-color: #f8f8f8;
}
.markdown-body tr {
border-top: 1px solid #ccc;
background-color: #fff;
}
td, th {
border: 1px solid #ccc;
padding: 6px 13px;
}
th {
font-weight: bold;
}
blockquote {
border-left: 4px solid #ddd;
padding: 0 15px;
color: #777;
}
blockquote > :last-child, blockquote > :first-child {
margin-bottom: 0px;
}
pre, code {
font-size: 13px;
font-family: 'UbuntuMono', monospace;
white-space: nowrap;
margin: 0 2px;
padding: 0px 5px;
border: 1px solid #eaeaea;
background-color: #f8f8f8;
border-radius: 3px;
}
pre > code {
white-space: pre;
}
pre {
overflow-x: auto;
white-space: pre;
padding: 10px;
line-height: 150%;
background-color: #f8f8f8;
border-color: #ccc;
}
pre code, pre tt {
margin: 0;
padding: 0;
border: 0;
background-color: transparent;
border: none;
}
.highlight .c
, .highlight .cm
, .highlight .cp
, .highlight .c1 {
color:#999988;
font-style:italic;
}
.highlight .err {
color:#a61717;
background-color:#e3d2d2
}
.highlight .o
, .highlight .gs
, .highlight .kc
, .highlight .kd
, .highlight .kn
, .highlight .kp
, .highlight .kr {
font-weight:bold
}
.highlight .cs {
color:#999999;
font-weight:bold;
font-style:italic
}
.highlight .gd {
color:#000000;
background-color:#ffdddd
}
.highlight .gd .x {
color:#000000;
background-color:#ffaaaa
}
.highlight .ge {
font-style:italic
}
.highlight .gr
, .highlight .gt {
color:#aa0000
}
.highlight .gh
, .highlight .bp {
color:#999999
}
.highlight .gi {
color:#000000;
background-color:#ddffdd
}
.highlight .gi .x {
color:#000000;
background-color:#aaffaa
}
.highlight .go {
color:#888888
}
.highlight .gp
, .highlight .nn {
color:#555555
}
.highlight .gu {
color:#800080;
font-weight:bold
}
.highlight .kt {
color:#445588;
font-weight:bold
}
.highlight .m
, .highlight .mf
, .highlight .mh
, .highlight .mi
, .highlight .mo
, .highlight .il {
color:#009999
}
.highlight .s
, .highlight .sb
, .highlight .sc
, .highlight .sd
, .highlight .s2
, .highlight .se
, .highlight .sh
, .highlight .si
, .highlight .sx
, .highlight .s1 {
color:#d14
}
.highlight .n {
color:#333333
}
.highlight .na
, .highlight .no
, .highlight .nv
, .highlight .vc
, .highlight .vg
, .highlight .vi
, .highlight .nb {
color:#0086B3
}
.highlight .nc {
color:#445588;
font-weight:bold
}
.highlight .ni {
color:#800080
}
.highlight .ne
, .highlight .nf {
color:#990000;
font-weight:bold
}
.highlight .nt {
color:#000080
}
.highlight .ow {
font-weight:bold
}
.highlight .w {
color:#bbbbbb
}
.highlight .sr {
color:#009926
}
.highlight .ss {
color:#990073
}
.highlight .gc {
color:#999;
background-color:#EAF2F5
}
@media print {
.container {
background: transparent;
border-radius: 0;
padding: 0;
}
.body-content {
border: none;
}
}
</style>
</head>
<body>
<div class="container">
<div class="body-content"><h1 id="the-mit-license-mit-">The MIT License (MIT)</h1>
<p><strong>Copyright (c) 2016 Rod Vagg (the &quot;Original Author&quot;) and additional contributors</strong></p>
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &quot;Software&quot;), 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:</p>
<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>
<p>THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, 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.</p>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,9 @@
# The MIT License (MIT)
**Copyright (c) 2016 Rod Vagg (the "Original Author") and additional 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.

View File

@@ -0,0 +1,136 @@
# through2
[![NPM](https://nodei.co/npm/through2.png?downloads&downloadRank)](https://nodei.co/npm/through2/)
**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise**
Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`.
Note: As 2.x.x this module starts using **Streams3** instead of Stream2. To continue using a Streams2 version use `npm install through2@0` to fetch the latest version of 0.x.x. More information about Streams2 vs Streams3 and recommendations see the article **[Why I don't use Node's core 'stream' module](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html)**.
```js
fs.createReadStream('ex.txt')
.pipe(through2(function (chunk, enc, callback) {
for (var i = 0; i < chunk.length; i++)
if (chunk[i] == 97)
chunk[i] = 122 // swap 'a' for 'z'
this.push(chunk)
callback()
}))
.pipe(fs.createWriteStream('out.txt'))
.on('finish', function () {
doSomethingSpecial()
})
```
Or object streams:
```js
var all = []
fs.createReadStream('data.csv')
.pipe(csv2())
.pipe(through2.obj(function (chunk, enc, callback) {
var data = {
name : chunk[0]
, address : chunk[3]
, phone : chunk[10]
}
this.push(data)
callback()
}))
.on('data', function (data) {
all.push(data)
})
.on('end', function () {
doSomethingSpecial(all)
})
```
Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`.
## API
<b><code>through2([ options, ] [ transformFunction ] [, flushFunction ])</code></b>
Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`).
### options
The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`).
The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call:
```js
fs.createReadStream('/tmp/important.dat')
.pipe(through2({ objectMode: true, allowHalfOpen: false },
function (chunk, enc, cb) {
cb(null, 'wut?') // note we can use the second argument on the callback
// to provide data as an alternative to this.push('wut?')
}
)
.pipe(fs.createWriteStream('/tmp/wut.txt'))
```
### transformFunction
The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk.
To queue a new chunk, call `this.push(chunk)`&mdash;this can be called as many times as required before the `callback()` if you have multiple pieces to send on.
Alternatively, you may use `callback(err, chunk)` as shorthand for emitting a single chunk or an error.
If you **do not provide a `transformFunction`** then you will get a simple pass-through stream.
### flushFunction
The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress.
```js
fs.createReadStream('/tmp/important.dat')
.pipe(through2(
function (chunk, enc, cb) { cb(null, chunk) }, // transform is a noop
function (cb) { // flush function
this.push('tacking on an extra buffer to the end');
cb();
}
))
.pipe(fs.createWriteStream('/tmp/wut.txt'));
```
<b><code>through2.ctor([ options, ] transformFunction[, flushFunction ])</code></b>
Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances.
```js
var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) {
if (record.temp != null && record.unit == "F") {
record.temp = ( ( record.temp - 32 ) * 5 ) / 9
record.unit = "C"
}
this.push(record)
callback()
})
// Create instances of FToC like so:
var converter = new FToC()
// Or:
var converter = FToC()
// Or specify/override options when you instantiate, if you prefer:
var converter = FToC({objectMode: true})
```
## See Also
- [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams.
- [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams.
- [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams.
- [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies.
- the [mississippi stream utility collection](https://github.com/maxogden/mississippi) includes `through2` as well as many more useful stream modules similar to this one
## License
**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.

View File

@@ -0,0 +1,68 @@
{
"_args": [
[
"through2@2.0.3",
"/Users/asciidisco/Desktop/asciidisco.com/build"
]
],
"_from": "through2@2.0.3",
"_id": "through2@2.0.3",
"_inBundle": false,
"_integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"_location": "/vinyl-fs/through2",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "through2@2.0.3",
"name": "through2",
"escapedName": "through2",
"rawSpec": "2.0.3",
"saveSpec": null,
"fetchSpec": "2.0.3"
},
"_requiredBy": [
"/vinyl-fs"
],
"_resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
"_spec": "2.0.3",
"_where": "/Users/asciidisco/Desktop/asciidisco.com/build",
"author": {
"name": "Rod Vagg",
"email": "r@va.gg",
"url": "https://github.com/rvagg"
},
"bugs": {
"url": "https://github.com/rvagg/through2/issues"
},
"dependencies": {
"readable-stream": "^2.1.5",
"xtend": "~4.0.1"
},
"description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise",
"devDependencies": {
"bl": "~1.1.2",
"faucet": "0.0.1",
"stream-spigot": "~3.0.5",
"tape": "~4.6.2"
},
"homepage": "https://github.com/rvagg/through2#readme",
"keywords": [
"stream",
"streams2",
"through",
"transform"
],
"license": "MIT",
"main": "through2.js",
"name": "through2",
"repository": {
"type": "git",
"url": "git+https://github.com/rvagg/through2.git"
},
"scripts": {
"test": "node test/test.js | faucet",
"test-local": "brtapsauce-local test/basic-test.js"
},
"version": "2.0.3"
}

View File

@@ -0,0 +1,96 @@
var Transform = require('readable-stream/transform')
, inherits = require('util').inherits
, xtend = require('xtend')
function DestroyableTransform(opts) {
Transform.call(this, opts)
this._destroyed = false
}
inherits(DestroyableTransform, Transform)
DestroyableTransform.prototype.destroy = function(err) {
if (this._destroyed) return
this._destroyed = true
var self = this
process.nextTick(function() {
if (err)
self.emit('error', err)
self.emit('close')
})
}
// a noop _transform function
function noop (chunk, enc, callback) {
callback(null, chunk)
}
// create a new export function, used by both the main export and
// the .ctor export, contains common logic for dealing with arguments
function through2 (construct) {
return function (options, transform, flush) {
if (typeof options == 'function') {
flush = transform
transform = options
options = {}
}
if (typeof transform != 'function')
transform = noop
if (typeof flush != 'function')
flush = null
return construct(options, transform, flush)
}
}
// main export, just make me a transform stream!
module.exports = through2(function (options, transform, flush) {
var t2 = new DestroyableTransform(options)
t2._transform = transform
if (flush)
t2._flush = flush
return t2
})
// make me a reusable prototype that I can `new`, or implicitly `new`
// with a constructor call
module.exports.ctor = through2(function (options, transform, flush) {
function Through2 (override) {
if (!(this instanceof Through2))
return new Through2(override)
this.options = xtend(options, override)
DestroyableTransform.call(this, this.options)
}
inherits(Through2, DestroyableTransform)
Through2.prototype._transform = transform
if (flush)
Through2.prototype._flush = flush
return Through2
})
module.exports.obj = through2(function (options, transform, flush) {
var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options))
t2._transform = transform
if (flush)
t2._flush = flush
return t2
})

103
build/node_modules/vinyl-fs/package.json generated vendored Normal file
View File

@@ -0,0 +1,103 @@
{
"_args": [
[
"vinyl-fs@2.4.4",
"/Users/asciidisco/Desktop/asciidisco.com/build"
]
],
"_from": "vinyl-fs@2.4.4",
"_id": "vinyl-fs@2.4.4",
"_inBundle": false,
"_integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
"_location": "/vinyl-fs",
"_phantomChildren": {
"readable-stream": "2.3.3",
"xtend": "4.0.1"
},
"_requested": {
"type": "version",
"registry": true,
"raw": "vinyl-fs@2.4.4",
"name": "vinyl-fs",
"escapedName": "vinyl-fs",
"rawSpec": "2.4.4",
"saveSpec": null,
"fetchSpec": "2.4.4"
},
"_requiredBy": [
"/decompress",
"/download"
],
"_resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
"_spec": "2.4.4",
"_where": "/Users/asciidisco/Desktop/asciidisco.com/build",
"author": {
"name": "Fractal",
"email": "contact@wearefractal.com",
"url": "http://wearefractal.com/"
},
"bugs": {
"url": "https://github.com/wearefractal/vinyl-fs/issues"
},
"dependencies": {
"duplexify": "^3.2.0",
"glob-stream": "^5.3.2",
"graceful-fs": "^4.0.0",
"gulp-sourcemaps": "1.6.0",
"is-valid-glob": "^0.3.0",
"lazystream": "^1.0.0",
"lodash.isequal": "^4.0.0",
"merge-stream": "^1.0.0",
"mkdirp": "^0.5.0",
"object-assign": "^4.0.0",
"readable-stream": "^2.0.4",
"strip-bom": "^2.0.0",
"strip-bom-stream": "^1.0.0",
"through2": "^2.0.0",
"through2-filter": "^2.0.0",
"vali-date": "^1.0.0",
"vinyl": "^1.0.0"
},
"description": "Vinyl adapter for the file system",
"devDependencies": {
"buffer-equal": "^0.0.1",
"default-resolution": "^1.0.1",
"del": "^2.2.0",
"eslint": "^1.10.3",
"eslint-config-gulp": "^2.0.0",
"expect": "^1.14.0",
"github-changes": "^1.0.1",
"istanbul": "^0.3.0",
"istanbul-coveralls": "^1.0.1",
"jscs": "^2.4.0",
"jscs-preset-gulp": "^1.0.0",
"mocha": "^2.0.0",
"mocha-lcov-reporter": "^1.0.0",
"rimraf": "^2.2.5",
"should": "^7.0.0",
"sinon": "^1.10.3"
},
"engines": {
"node": ">=0.10"
},
"files": [
"index.js",
"lib"
],
"homepage": "http://github.com/wearefractal/vinyl-fs",
"license": "MIT",
"main": "./index.js",
"name": "vinyl-fs",
"repository": {
"type": "git",
"url": "git://github.com/wearefractal/vinyl-fs.git"
},
"scripts": {
"changelog": "github-changes -o gulpjs -r vinyl-fs -b master -f ./CHANGELOG.md --order-semver --use-commit-body",
"cover": "istanbul cover _mocha",
"coveralls": "npm run cover && istanbul-coveralls",
"lint": "eslint . && jscs index.js lib/ test/",
"test": "npm run lint && mocha"
},
"version": "2.4.4"
}