| 'use strict'; |
| |
| var through = require('through2'); |
| |
| var mkdirp = require('./mkdirp'); |
| |
| function toFunction(dirpath) { |
| function stringResolver(chunk, callback) { |
| callback(null, dirpath); |
| } |
| |
| return stringResolver; |
| } |
| |
| function define(options) { |
| |
| function mkdirpStream(resolver) { |
| // Handle resolver that's just a dirpath |
| if (typeof resolver === 'string') { |
| resolver = toFunction(resolver); |
| } |
| |
| function makeFileDirs(chunk, enc, callback) { |
| resolver(chunk, onDirpath); |
| |
| function onDirpath(dirpathErr, dirpath, mode) { |
| if (dirpathErr) { |
| return callback(dirpathErr); |
| } |
| |
| mkdirp(dirpath, mode, onMkdirp); |
| } |
| |
| function onMkdirp(mkdirpErr) { |
| if (mkdirpErr) { |
| return callback(mkdirpErr); |
| } |
| |
| callback(null, chunk); |
| } |
| } |
| |
| return through(options, makeFileDirs); |
| } |
| |
| return mkdirpStream; |
| } |
| |
| module.exports = define(); |
| module.exports.obj = define({ objectMode: true, highWaterMark: 16 }); |