blob: cde5e19f17b0c096e6c6fbdc545849fc1f1d4e93 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2
3var through = require('through2');
4
5var mkdirp = require('./mkdirp');
6
7function toFunction(dirpath) {
8 function stringResolver(chunk, callback) {
9 callback(null, dirpath);
10 }
11
12 return stringResolver;
13}
14
15function define(options) {
16
17 function mkdirpStream(resolver) {
18 // Handle resolver that's just a dirpath
19 if (typeof resolver === 'string') {
20 resolver = toFunction(resolver);
21 }
22
23 function makeFileDirs(chunk, enc, callback) {
24 resolver(chunk, onDirpath);
25
26 function onDirpath(dirpathErr, dirpath, mode) {
27 if (dirpathErr) {
28 return callback(dirpathErr);
29 }
30
31 mkdirp(dirpath, mode, onMkdirp);
32 }
33
34 function onMkdirp(mkdirpErr) {
35 if (mkdirpErr) {
36 return callback(mkdirpErr);
37 }
38
39 callback(null, chunk);
40 }
41 }
42
43 return through(options, makeFileDirs);
44 }
45
46 return mkdirpStream;
47}
48
49module.exports = define();
50module.exports.obj = define({ objectMode: true, highWaterMark: 16 });