diff --git a/src/files-mfs/index.js b/src/files-mfs/index.js index d4c6a8e7f..d35e82ea7 100644 --- a/src/files-mfs/index.js +++ b/src/files-mfs/index.js @@ -12,6 +12,8 @@ module.exports = (arg) => { stat: require('./stat')(send), rm: require('./rm')(send), ls: require('./ls')(send), + lsReadableStream: require('./ls-readable-stream')(send), + lsPullStream: require('./ls-pull-stream')(send), read: require('./read')(send), readReadableStream: require('./read-readable-stream')(send), readPullStream: require('./read-pull-stream')(send), diff --git a/src/files-mfs/ls-pull-stream.js b/src/files-mfs/ls-pull-stream.js new file mode 100644 index 000000000..41b46b756 --- /dev/null +++ b/src/files-mfs/ls-pull-stream.js @@ -0,0 +1,21 @@ +'use strict' + +const ls = require('./ls') +const defer = require('pull-defer') +const values = require('pull-stream/sources/values') + +module.exports = (send) => { + return (args, opts) => { + const deferred = defer.source() + + ls(send)(args, opts, (err, entries) => { + if (err) { + return deferred.abort(err) + } + + return deferred.resolve(values(entries)) + }) + + return deferred + } +} diff --git a/src/files-mfs/ls-readable-stream.js b/src/files-mfs/ls-readable-stream.js new file mode 100644 index 000000000..e4ae6be50 --- /dev/null +++ b/src/files-mfs/ls-readable-stream.js @@ -0,0 +1,13 @@ +'use strict' + +const { + PassThrough +} = require('stream') +const lsPullStream = require('./ls-pull-stream') +const toStream = require('pull-stream-to-stream') + +module.exports = (send) => { + return (args, opts) => { + return toStream.source(lsPullStream(send)(args, opts)) + } +}